sis_core 1.0.15 → 1.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/sis/core/utils_controller.rb +19 -0
- data/app/models/sis/core/application_record.rb +4 -0
- data/app/models/sis/core/course.rb +2 -4
- data/app/models/sis/core/course_offering.rb +19 -0
- data/app/models/sis/core/course_offering_sequence.rb +42 -0
- data/app/models/sis/core/curriculum.rb +17 -0
- data/app/models/sis/core/curriculum_course.rb +19 -0
- data/app/models/sis/core/level.rb +7 -0
- data/app/models/sis/core/prerequisite.rb +16 -0
- data/app/services/sis/core/util_service.rb +16 -0
- data/config/routes.rb +2 -0
- data/db/migrate/20201102134749_create_sis_core_curriculums.rb +20 -0
- data/db/migrate/20201102182012_remove_programme_and_add_maximum_class_size_to_course.rb +10 -0
- data/db/migrate/20201102192055_create_sis_core_curriculum_courses.rb +17 -0
- data/db/migrate/20201104085458_create_sis_core_course_offering_sequences.rb +24 -0
- data/db/migrate/20201104111548_create_sis_core_course_offerings.rb +24 -0
- data/db/migrate/20201106091250_create_sis_core_prerequisites.rb +15 -0
- data/db/migrate/20210310071526_add_minimum_class_size_to_course.rb +6 -0
- data/lib/sis/core/version.rb +1 -1
- data/spec/factories/sis/core/course_offering_sequences.rb +8 -0
- data/spec/factories/sis/core/course_offerings.rb +8 -0
- data/spec/factories/sis/core/courses.rb +3 -1
- data/spec/factories/sis/core/curriculum_courses.rb +7 -0
- data/spec/factories/sis/core/levels.rb +5 -0
- data/spec/factories/sis/core/prerequisites.rb +6 -0
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 765cf9bd0e11c73f120a46ef27e7c452f96881e0c360c54ecb697af5a129abb2
|
4
|
+
data.tar.gz: 0fc3147cba5580ede372afac7041a727aff0dc09431cd3af9856623ed652b28d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f626f605104d910d210424efb3ab331dd567517577b786999ab3035317059d421ba0a694e0a00a00bc945d228663e908a44c51678eef3c5160de1bcbdf2eea69
|
7
|
+
data.tar.gz: 6ffe0155717f44b3c4fb5819e3fa206503cc9a32e6afe273f395667f53de7fd8cb2894c230cbcd07a308cab5382940a8dae0032ec6ba602e57a97c827ce3f025
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class UtilsController < ApplicationController
|
4
|
+
skip_before_action :authenticate_request, only: %i[filter]
|
5
|
+
before_action :set_util_service, only: %i[filter]
|
6
|
+
|
7
|
+
def filter
|
8
|
+
result = ApplicationRecord.serialize(@service.filter_record(params))
|
9
|
+
render json: { success: true, data: result }
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def set_util_service
|
15
|
+
@service = UtilService.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,10 +1,8 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class Course < ApplicationRecord
|
4
|
-
|
5
|
-
|
6
|
-
validates :code, :title, :description, :credit_hours, :ects, :lecture_hours, :lab_hours, presence: true
|
7
|
-
validates :code, uniqueness: true
|
4
|
+
validates :code, :title, :credit_hours, :ects, :lecture_hours, presence: true
|
5
|
+
validates :code, uniqueness: { case_sensitive: false }
|
8
6
|
end
|
9
7
|
end
|
10
8
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class CourseOffering < ApplicationRecord
|
4
|
+
belongs_to :course_offering_sequence
|
5
|
+
belongs_to :academic_year
|
6
|
+
belongs_to :semester
|
7
|
+
belongs_to :level
|
8
|
+
|
9
|
+
delegate(:course_code, to: :course_offering_sequence, prefix: false)
|
10
|
+
delegate(:course_title, to: :course_offering_sequence, prefix: false)
|
11
|
+
delegate(:course_ects, to: :course_offering_sequence, prefix: false)
|
12
|
+
delegate(:course_credit_hours, to: :course_offering_sequence, prefix: false)
|
13
|
+
delegate(:course_id, to: :course_offering_sequence, prefix: false)
|
14
|
+
delegate(:course_lecture_hours, to: :course_offering_sequence, prefix: false)
|
15
|
+
delegate(:course_lab_hours, to: :course_offering_sequence, prefix: false)
|
16
|
+
delegate(:course_tutorial_hours, to: :course_offering_sequence, prefix: false)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class CourseOfferingSequence < ApplicationRecord
|
4
|
+
belongs_to :curriculum_course
|
5
|
+
belongs_to :programme_type
|
6
|
+
belongs_to :level
|
7
|
+
belongs_to :semester
|
8
|
+
|
9
|
+
def course_id
|
10
|
+
curriculum_course.course.id.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def course_code
|
14
|
+
curriculum_course.course.code.to_s
|
15
|
+
end
|
16
|
+
|
17
|
+
def course_title
|
18
|
+
curriculum_course.course.title.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
def course_ects
|
22
|
+
curriculum_course.course.ects.to_s
|
23
|
+
end
|
24
|
+
|
25
|
+
def course_credit_hours
|
26
|
+
curriculum_course.course.credit_hours.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
def course_lecture_hours
|
30
|
+
curriculum_course.course.lecture_hours.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
def course_lab_hours
|
34
|
+
curriculum_course.course.lab_hours.to_s
|
35
|
+
end
|
36
|
+
|
37
|
+
def course_tutorial_hours
|
38
|
+
curriculum_course.course.tutorial_hours.to_s
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class Curriculum < ApplicationRecord
|
4
|
+
belongs_to :programme
|
5
|
+
belongs_to :programme_level
|
6
|
+
|
7
|
+
validates :compulsory_course_credit_hours, :elective_course_credit_hours, :thesis_hour, :project_hour,
|
8
|
+
presence: true
|
9
|
+
delegate(:name, to: :programme, prefix: true)
|
10
|
+
delegate(:name, to: :programme_level, prefix: true)
|
11
|
+
|
12
|
+
def name
|
13
|
+
"#{programme.name} #{programme_level.name}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class CurriculumCourse < ApplicationRecord
|
4
|
+
belongs_to :curriculum
|
5
|
+
belongs_to :course
|
6
|
+
validates :course_type, presence: true
|
7
|
+
has_many :predecessor_prerequisites, foreign_key: :successor_id, class_name: 'Prerequisite'
|
8
|
+
has_many :predecessors, through: :predecessor_prerequisites, source: :predecessor
|
9
|
+
has_many :successor_prerequisites, foreign_key: :predecessor_id, class_name: 'Prerequisite'
|
10
|
+
has_many :successors, through: :successor_prerequisites, source: :successor
|
11
|
+
|
12
|
+
delegate(:title, to: :course, prefix: true)
|
13
|
+
delegate(:code, to: :course, prefix: true)
|
14
|
+
delegate(:ects, to: :course, prefix: true)
|
15
|
+
delegate(:credit_hours, to: :course, prefix: true)
|
16
|
+
delegate(:name, to: :curriculum, prefix: true)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class Prerequisite < ApplicationRecord
|
4
|
+
belongs_to :predecessor, foreign_key: 'predecessor_id', class_name: 'CurriculumCourse'
|
5
|
+
belongs_to :successor, foreign_key: 'successor_id', class_name: 'CurriculumCourse'
|
6
|
+
|
7
|
+
def predecessor_name
|
8
|
+
predecessor.course.title.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
def successor_name
|
12
|
+
successor.course.name.to_s
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class UtilService
|
4
|
+
def filter_record(params)
|
5
|
+
pos = {}
|
6
|
+
neg = {}
|
7
|
+
|
8
|
+
filter = params[:filter] || []
|
9
|
+
filter.each do |f|
|
10
|
+
f[:cond] == 'P' ? pos[f[:key]] = f[:value] : neg[f[:key]] = f[:value]
|
11
|
+
end
|
12
|
+
params[:entity].constantize.where(pos).where.not(neg)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/config/routes.rb
CHANGED
@@ -5,4 +5,6 @@ Sis::Core::Engine.routes.draw do
|
|
5
5
|
post '/sign_in', controller: :users, action: :sign_in
|
6
6
|
post '/generate_recovery_token', controller: :users, action: :generate_recovery_token
|
7
7
|
post '/reset_password', controller: :users, action: :reset_password
|
8
|
+
resources :user_roles, only: %i[index]
|
9
|
+
post '/utils/filter', controller: :utils, action: :filter
|
8
10
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class CreateSisCoreCurriculums < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_curriculums do |t|
|
4
|
+
t.references :programme,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'pr_on_curriculum_indx' },
|
7
|
+
foreign_key: { to_table: :sis_core_programmes }
|
8
|
+
t.references :programme_level,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'pr_level_on_curriculum_indx' },
|
11
|
+
foreign_key: { to_table: :sis_core_lookups }
|
12
|
+
t.float :compulsory_course_credit_hours, null: false
|
13
|
+
t.float :elective_course_credit_hours, null: false
|
14
|
+
t.float :thesis_hour, null: false
|
15
|
+
t.float :project_hour, null: false
|
16
|
+
|
17
|
+
t.timestamps
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class RemoveProgrammeAndAddMaximumClassSizeToCourse < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
remove_column :sis_core_courses, :academic_programme_id
|
4
|
+
add_column :sis_core_courses, :maximum_class_size, :integer
|
5
|
+
add_column :sis_core_courses, :has_lab, :boolean, default: false
|
6
|
+
add_column :sis_core_courses, :has_tutorial, :boolean, default: false
|
7
|
+
add_column :sis_core_courses, :tutorial_hours, :float
|
8
|
+
change_column :sis_core_courses, :description, :string, null: true
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateSisCoreCurriculumCourses < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_curriculum_courses do |t|
|
4
|
+
t.references :curriculum,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'cc_on_cc_course_indx' },
|
7
|
+
foreign_key: { to_table: :sis_core_curriculums }
|
8
|
+
t.references :course,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'course_on_cc_course_indx' },
|
11
|
+
foreign_key: { to_table: :sis_core_courses }
|
12
|
+
t.string :course_type
|
13
|
+
|
14
|
+
t.timestamps
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class CreateSisCoreCourseOfferingSequences < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_course_offering_sequences do |t|
|
4
|
+
t.references :curriculum_course,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'cc_on_course_off_seq' },
|
7
|
+
foreign_key: { to_table: :sis_core_curriculum_courses }
|
8
|
+
t.references :programme_type,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'pt_on_course_off_seq' },
|
11
|
+
foreign_key: { to_table: :sis_core_lookups }
|
12
|
+
t.references :level,
|
13
|
+
null: false,
|
14
|
+
index: { name: 'level_on_course_off_seq' },
|
15
|
+
foreign_key: { to_table: :sis_core_lookups }
|
16
|
+
t.references :semester,
|
17
|
+
null: false,
|
18
|
+
index: { name: 'sem_on_course_off_seq' },
|
19
|
+
foreign_key: { to_table: :sis_core_semesters }
|
20
|
+
|
21
|
+
t.timestamps
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class CreateSisCoreCourseOfferings < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_course_offerings do |t|
|
4
|
+
t.references :course_offering_sequence,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'crs_off_seq_on_crs_off' },
|
7
|
+
foreign_key: { to_table: :sis_core_course_offering_sequences }
|
8
|
+
t.references :academic_year,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'ay_on_crs_off' },
|
11
|
+
foreign_key: { to_table: :sis_core_academic_years }
|
12
|
+
t.references :semester,
|
13
|
+
null: false,
|
14
|
+
index: { name: 'sem_on_crs_off' },
|
15
|
+
foreign_key: { to_table: :sis_core_semesters }
|
16
|
+
t.references :level,
|
17
|
+
null: false,
|
18
|
+
index: { name: 'level_on_crs_off' },
|
19
|
+
foreign_key: { to_table: :sis_core_lookups }
|
20
|
+
|
21
|
+
t.timestamps
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSisCorePrerequisites < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_prerequisites do |t|
|
4
|
+
t.references :predecessor,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'pred_on_prerequisite' },
|
7
|
+
foreign_key: { to_table: :sis_core_curriculum_courses }
|
8
|
+
t.references :successor,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'succ_on_prerequisite' },
|
11
|
+
foreign_key: { to_table: :sis_core_curriculum_courses }
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/sis/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sis_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henock L.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aasm
|
@@ -226,6 +226,7 @@ files:
|
|
226
226
|
- app/controllers/sis/core/application_controller.rb
|
227
227
|
- app/controllers/sis/core/menus_controller.rb
|
228
228
|
- app/controllers/sis/core/users_controller.rb
|
229
|
+
- app/controllers/sis/core/utils_controller.rb
|
229
230
|
- app/models/sis/core/academic_programme.rb
|
230
231
|
- app/models/sis/core/academic_programme_document.rb
|
231
232
|
- app/models/sis/core/academic_year.rb
|
@@ -236,9 +237,13 @@ files:
|
|
236
237
|
- app/models/sis/core/application_record.rb
|
237
238
|
- app/models/sis/core/application_setup.rb
|
238
239
|
- app/models/sis/core/course.rb
|
240
|
+
- app/models/sis/core/course_offering.rb
|
241
|
+
- app/models/sis/core/course_offering_sequence.rb
|
239
242
|
- app/models/sis/core/course_registration.rb
|
240
243
|
- app/models/sis/core/credit_hour_rate.rb
|
241
244
|
- app/models/sis/core/currency.rb
|
245
|
+
- app/models/sis/core/curriculum.rb
|
246
|
+
- app/models/sis/core/curriculum_course.rb
|
242
247
|
- app/models/sis/core/document_requirement.rb
|
243
248
|
- app/models/sis/core/document_type.rb
|
244
249
|
- app/models/sis/core/exam.rb
|
@@ -247,8 +252,10 @@ files:
|
|
247
252
|
- app/models/sis/core/field_of_study.rb
|
248
253
|
- app/models/sis/core/instructor.rb
|
249
254
|
- app/models/sis/core/instructor_course.rb
|
255
|
+
- app/models/sis/core/level.rb
|
250
256
|
- app/models/sis/core/lookup.rb
|
251
257
|
- app/models/sis/core/menu.rb
|
258
|
+
- app/models/sis/core/prerequisite.rb
|
252
259
|
- app/models/sis/core/programme.rb
|
253
260
|
- app/models/sis/core/programme_level.rb
|
254
261
|
- app/models/sis/core/programme_type.rb
|
@@ -257,6 +264,7 @@ files:
|
|
257
264
|
- app/models/sis/core/user.rb
|
258
265
|
- app/models/sis/core/user_role.rb
|
259
266
|
- app/services/sis/core/user_service.rb
|
267
|
+
- app/services/sis/core/util_service.rb
|
260
268
|
- app/uploaders/sis/core/application_document_uploader.rb
|
261
269
|
- app/uploaders/sis/core/photo_uploader.rb
|
262
270
|
- config/database.ci.yml
|
@@ -285,6 +293,13 @@ files:
|
|
285
293
|
- db/migrate/20200511165450_create_sis_core_menus.rb
|
286
294
|
- db/migrate/20200919235516_create_sis_core_credit_hour_rates.rb
|
287
295
|
- db/migrate/20201019055620_create_sis_core_academic_programme_documents.rb
|
296
|
+
- db/migrate/20201102134749_create_sis_core_curriculums.rb
|
297
|
+
- db/migrate/20201102182012_remove_programme_and_add_maximum_class_size_to_course.rb
|
298
|
+
- db/migrate/20201102192055_create_sis_core_curriculum_courses.rb
|
299
|
+
- db/migrate/20201104085458_create_sis_core_course_offering_sequences.rb
|
300
|
+
- db/migrate/20201104111548_create_sis_core_course_offerings.rb
|
301
|
+
- db/migrate/20201106091250_create_sis_core_prerequisites.rb
|
302
|
+
- db/migrate/20210310071526_add_minimum_class_size_to_course.rb
|
288
303
|
- lib/authorize_request.rb
|
289
304
|
- lib/json_web_token.rb
|
290
305
|
- lib/sis/core.rb
|
@@ -300,10 +315,13 @@ files:
|
|
300
315
|
- spec/factories/sis/core/application_modules.rb
|
301
316
|
- spec/factories/sis/core/application_setups.rb
|
302
317
|
- spec/factories/sis/core/applications.rb
|
318
|
+
- spec/factories/sis/core/course_offering_sequences.rb
|
319
|
+
- spec/factories/sis/core/course_offerings.rb
|
303
320
|
- spec/factories/sis/core/course_registrations.rb
|
304
321
|
- spec/factories/sis/core/courses.rb
|
305
322
|
- spec/factories/sis/core/credit_hour_rates.rb
|
306
323
|
- spec/factories/sis/core/currencies.rb
|
324
|
+
- spec/factories/sis/core/curriculum_courses.rb
|
307
325
|
- spec/factories/sis/core/curriculums.rb
|
308
326
|
- spec/factories/sis/core/document_requirements.rb
|
309
327
|
- spec/factories/sis/core/document_types.rb
|
@@ -312,8 +330,10 @@ files:
|
|
312
330
|
- spec/factories/sis/core/exams.rb
|
313
331
|
- spec/factories/sis/core/instructor_courses.rb
|
314
332
|
- spec/factories/sis/core/instructors.rb
|
333
|
+
- spec/factories/sis/core/levels.rb
|
315
334
|
- spec/factories/sis/core/lookups.rb
|
316
335
|
- spec/factories/sis/core/menus.rb
|
336
|
+
- spec/factories/sis/core/prerequisites.rb
|
317
337
|
- spec/factories/sis/core/programme_levels.rb
|
318
338
|
- spec/factories/sis/core/programme_types.rb
|
319
339
|
- spec/factories/sis/core/programmes.rb
|