sis_core 1.0.13 → 1.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/sis/core/user_roles_controller.rb +11 -0
- data/app/controllers/sis/core/utils_controller.rb +19 -0
- data/app/models/sis/core/academic_calendar.rb +9 -0
- data/app/models/sis/core/academic_programme.rb +2 -2
- data/app/models/sis/core/academic_time_line.rb +14 -0
- data/app/models/sis/core/applicant.rb +2 -2
- data/app/models/sis/core/application_document.rb +1 -2
- data/app/models/sis/core/application_record.rb +4 -0
- data/app/models/sis/core/application_setup.rb +2 -2
- data/app/models/sis/core/building.rb +7 -0
- data/app/models/sis/core/class_schedule.rb +18 -0
- data/app/models/sis/core/class_time_table.rb +7 -0
- data/app/models/sis/core/classroom.rb +9 -0
- data/app/models/sis/core/course.rb +2 -4
- data/app/models/sis/core/course_assignment.rb +41 -0
- 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/course_registration.rb +12 -2
- data/app/models/sis/core/credit_hour_rate.rb +1 -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/document_type.rb +0 -1
- data/app/models/sis/core/eligibility_criteria.rb +10 -0
- data/app/models/sis/core/entry.rb +7 -0
- data/app/models/sis/core/exam_result.rb +0 -1
- data/app/models/sis/core/identification_pattern.rb +19 -0
- data/app/models/sis/core/instructor.rb +5 -0
- data/app/models/sis/core/level.rb +7 -0
- data/app/models/sis/core/prerequisite.rb +16 -0
- data/app/models/sis/core/section.rb +9 -0
- data/app/models/sis/core/student.rb +17 -1
- data/app/models/sis/core/student_document.rb +12 -0
- data/app/models/sis/core/student_eligibility.rb +16 -0
- data/app/serializers/sis/core/user_serializer.rb +4 -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/20201109064211_create_sis_core_buildings.rb +11 -0
- data/db/migrate/20201109070027_create_sis_core_classrooms.rb +21 -0
- data/db/migrate/20201109074944_create_sis_core_class_time_tables.rb +11 -0
- data/db/migrate/20201110075345_create_sis_core_sections.rb +13 -0
- data/db/migrate/20201110080957_create_sis_core_course_assignments.rb +22 -0
- data/db/migrate/20201110082516_create_sis_core_class_schedules.rb +22 -0
- data/db/migrate/20201130073930_create_sis_core_academic_calendars.rb +19 -0
- data/db/migrate/20201130080122_create_sis_core_academic_time_lines.rb +37 -0
- data/db/migrate/20201130091430_create_sis_core_eligibility_criteria.rb +13 -0
- data/db/migrate/20201130100442_add_fields_to_student.rb +82 -0
- data/db/migrate/20201130103634_create_sis_core_student_eligibilities.rb +29 -0
- data/db/migrate/20201201055256_add_course_offering_to_course_registration.rb +13 -0
- data/db/migrate/20201219073245_remove_full_name_from_instructor.rb +12 -0
- data/db/migrate/20201221100413_add_is_current_field_to_academic_year_and_semester.rb +7 -0
- data/db/migrate/20210113085806_create_sis_core_student_documents.rb +17 -0
- data/db/migrate/20210310071526_add_minimum_class_size_to_course.rb +6 -0
- data/db/migrate/20210429112550_create_active_storage_tables.active_storage.rb +37 -0
- data/db/migrate/20210429113938_rename_uploaded_fields.rb +6 -0
- data/db/migrate/20210504115132_create_sis_core_identification_patterns.rb +23 -0
- data/db/migrate/20210513080708_add_unique_index_to_models.rb +8 -0
- data/lib/sis/core/version.rb +1 -1
- data/lib/sis_core.rb +0 -1
- data/spec/factories/sis/core/academic_calendars.rb +9 -0
- data/spec/factories/sis/core/academic_time_lines.rb +21 -0
- data/spec/factories/sis/core/applicants.rb +1 -1
- data/spec/factories/sis/core/application_documents.rb +1 -1
- data/spec/factories/sis/core/buildings.rb +7 -0
- data/spec/factories/sis/core/class_schedules.rb +8 -0
- data/spec/factories/sis/core/class_time_tables.rb +7 -0
- data/spec/factories/sis/core/classrooms.rb +11 -0
- data/spec/factories/sis/core/course_assignments.rb +9 -0
- 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/course_registrations.rb +3 -2
- data/spec/factories/sis/core/courses.rb +3 -1
- data/spec/factories/sis/core/curriculum_courses.rb +7 -0
- data/spec/factories/sis/core/curriculums.rb +10 -0
- data/spec/factories/sis/core/eligibility_criteria.rb +6 -0
- data/spec/factories/sis/core/entries.rb +5 -0
- data/spec/factories/sis/core/identification_patterns.rb +8 -0
- data/spec/factories/sis/core/instructor_courses.rb +2 -2
- data/spec/factories/sis/core/instructors.rb +3 -2
- data/spec/factories/sis/core/levels.rb +5 -0
- data/spec/factories/sis/core/prerequisites.rb +6 -0
- data/spec/factories/sis/core/sections.rb +6 -0
- data/spec/factories/sis/core/student_documents.rb +6 -0
- data/spec/factories/sis/core/student_eligibilities.rb +10 -0
- data/spec/factories/sis/core/students.rb +11 -5
- metadata +92 -54
- data/app/uploaders/sis/core/application_document_uploader.rb +0 -51
- data/app/uploaders/sis/core/photo_uploader.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d6627d827084e4435459b7c426e2daae0f395afba0c6f38bcdc104b2ccc3eb1
|
4
|
+
data.tar.gz: f8f22e96b50071866f4ccde6f59e11a7e53a9909f097625e38d8716a259d4d4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa9304c88cbcc3405431b67ee1319c57bb9de8f69d0c34f8ced9c28e3fa0949b2ca39316ab6d05a263d92cef330af468c8f2a5a5a41c02e2d5ab8fa7b52c64ca
|
7
|
+
data.tar.gz: b3b451ba6868bbd674f5bdb3427e8624ebe2c04abb55a0b3dc6a1eacc5f31d3bd238a7117ceede7b7fda339587e08725223626c9e0033e0a4769eb4d1490be49
|
@@ -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
|
@@ -6,7 +6,7 @@ module Sis
|
|
6
6
|
belongs_to :programme_level
|
7
7
|
has_many :academic_programme_documents
|
8
8
|
|
9
|
-
validates :programme_id, uniqueness: { scope: [
|
9
|
+
validates :programme_id, uniqueness: { scope: %i[programme_level_id programme_type_id],
|
10
10
|
message: 'Program has already been created !' }
|
11
11
|
|
12
12
|
delegate(:name, to: :programme, prefix: true, allow_nil: false)
|
@@ -14,7 +14,7 @@ module Sis
|
|
14
14
|
delegate(:name, to: :programme_level, prefix: true, allow_nil: false)
|
15
15
|
|
16
16
|
def name
|
17
|
-
programme.name
|
17
|
+
"#{programme.name} #{programme_level.name} #{programme_type.name}"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class AcademicTimeLine < ApplicationRecord
|
4
|
+
belongs_to :academic_year
|
5
|
+
belongs_to :semester
|
6
|
+
belongs_to :programme_type
|
7
|
+
belongs_to :programme_level
|
8
|
+
validates :registration_start_date, :registration_end_date, :penalty_registration_start_date,
|
9
|
+
:penalty_registration_end_date, :add_and_drop_start_date, :add_and_drop_end_date,
|
10
|
+
:penalty_add_and_drop_start_date, :penalty_add_and_drop_end_date, :mid_exam_start_date,
|
11
|
+
:mid_exam_end_date, :final_exam_start_date, :final_exam_end_date, :grade_reporting_date, presence: true
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class Applicant < ApplicationRecord
|
4
|
-
mount_base64_uploader :photo, PhotoUploader
|
5
4
|
validates :first_name, :middle_name, :last_name, :email, presence: true
|
6
5
|
validates :email, uniqueness: true
|
7
6
|
|
8
7
|
has_many :applications
|
8
|
+
has_one_attached :photo
|
9
9
|
|
10
10
|
has_secure_password
|
11
11
|
|
12
12
|
def full_name
|
13
|
-
first_name
|
13
|
+
"#{first_name} #{middle_name} #{last_name}"
|
14
14
|
end
|
15
15
|
|
16
16
|
scope :by_application_setup, (lambda do |app_setup_id|
|
@@ -1,10 +1,9 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class ApplicationDocument < ApplicationRecord
|
4
|
-
mount_base64_uploader :document, ApplicationDocumentUploader
|
5
|
-
|
6
4
|
belongs_to :application
|
7
5
|
belongs_to :document_requirement
|
6
|
+
has_one_attached :document
|
8
7
|
|
9
8
|
delegate(:name, to: :document_requirement, prefix: true, allow_nil: false)
|
10
9
|
end
|
@@ -12,12 +12,12 @@ module Sis
|
|
12
12
|
|
13
13
|
validates :start_date, :end_date, :status, presence: true
|
14
14
|
validates :status, inclusion: [OPEN, CLOSED]
|
15
|
-
validates :academic_programme_id, uniqueness: { scope: [
|
15
|
+
validates :academic_programme_id, uniqueness: { scope: %i[target_semester_id academic_year_id],
|
16
16
|
message: 'Announcement has already been created for this academic
|
17
17
|
program !' }
|
18
18
|
|
19
19
|
delegate(:code, to: :target_semester, prefix: true, allow_nil: false)
|
20
|
-
delegate(:year, to: :academic_year, prefix: false
|
20
|
+
delegate(:year, to: :academic_year, prefix: false, allow_nil: false)
|
21
21
|
delegate(:name, to: :academic_programme, prefix: true, allow_nil: false)
|
22
22
|
delegate(:programme_id, to: :academic_programme, prefix: false, allow_nil: false)
|
23
23
|
delegate(:programme_type_id, to: :academic_programme, prefix: false, allow_nil: false)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class ClassSchedule < ApplicationRecord
|
4
|
+
belongs_to :classroom, optional: true
|
5
|
+
belongs_to :class_time_table, optional: true
|
6
|
+
belongs_to :course_assignment
|
7
|
+
|
8
|
+
delegate(:room_number, to: :classroom, prefix: true, allow_nil: true)
|
9
|
+
delegate(:name, to: :class_time_table, prefix: true, allow_nil: true)
|
10
|
+
delegate(:course_code, to: :course_assignment, prefix: false)
|
11
|
+
delegate(:course_title, to: :course_assignment, prefix: false)
|
12
|
+
|
13
|
+
def instructor_full_name
|
14
|
+
course_assignment.instructor.full_name
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
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,41 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class CourseAssignment < ApplicationRecord
|
4
|
+
belongs_to :course_offering
|
5
|
+
belongs_to :section
|
6
|
+
belongs_to :instructor
|
7
|
+
belongs_to :lab_instructor, class_name: 'Sis::Core::Instructor', optional: true
|
8
|
+
belongs_to :tutorial_instructor, class_name: 'Sis::Core::Instructor', optional: true
|
9
|
+
|
10
|
+
delegate(:course_code, to: :course_offering, prefix: false)
|
11
|
+
delegate(:course_title, to: :course_offering, prefix: false)
|
12
|
+
delegate(:course_ects, to: :course_offering, prefix: false)
|
13
|
+
delegate(:course_credit_hours, to: :course_offering, prefix: false)
|
14
|
+
delegate(:course_id, to: :course_offering, prefix: false)
|
15
|
+
delegate(:course_lecture_hours, to: :course_offering, prefix: false)
|
16
|
+
delegate(:course_lab_hours, to: :course_offering, prefix: false)
|
17
|
+
delegate(:course_tutorial_hours, to: :course_offering, prefix: false)
|
18
|
+
delegate(:first_name, to: :instructor, prefix: true, allow_nil: true)
|
19
|
+
delegate(:middle_name, to: :instructor, prefix: true, allow_nil: true)
|
20
|
+
delegate(:last_name, to: :instructor, prefix: true, allow_nil: true)
|
21
|
+
delegate(:first_name, to: :lab_instructor, prefix: true, allow_nil: true)
|
22
|
+
delegate(:middle_name, to: :lab_instructor, prefix: true, allow_nil: true)
|
23
|
+
delegate(:last_name, to: :lab_instructor, prefix: true, allow_nil: true)
|
24
|
+
delegate(:first_name, to: :tutorial_instructor, prefix: true, allow_nil: true)
|
25
|
+
delegate(:middle_name, to: :tutorial_instructor, prefix: true, allow_nil: true)
|
26
|
+
delegate(:last_name, to: :tutorial_instructor, prefix: true, allow_nil: true)
|
27
|
+
|
28
|
+
def instructor_full_name
|
29
|
+
"#{instructor_first_name} #{instructor_middle_name} #{instructor_last_name}"
|
30
|
+
end
|
31
|
+
|
32
|
+
def lab_instructor_full_name
|
33
|
+
"#{lab_instructor_first_name} #{lab_instructor_middle_name} #{lab_instructor_last_name}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def tutorial_instructor_full_name
|
37
|
+
"#{tutorial_instructor_first_name} #{tutorial_instructor_middle_name} #{tutorial_instructor_last_name}"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
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
|
@@ -1,9 +1,19 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class CourseRegistration < ApplicationRecord
|
4
|
-
belongs_to :
|
4
|
+
belongs_to :course_offering
|
5
5
|
belongs_to :student
|
6
|
-
belongs_to :
|
6
|
+
belongs_to :section
|
7
|
+
|
8
|
+
delegate(:course_code, to: :course_offering, prefix: false)
|
9
|
+
delegate(:course_title, to: :course_offering, prefix: false)
|
10
|
+
delegate(:course_ects, to: :course_offering, prefix: false)
|
11
|
+
delegate(:course_credit_hours, to: :course_offering, prefix: false)
|
12
|
+
delegate(:first_name, to: :student, prefix: true)
|
13
|
+
delegate(:middle_name, to: :student, prefix: true)
|
14
|
+
delegate(:last_name, to: :student, prefix: true)
|
15
|
+
delegate(:name, to: :section, prefix: true)
|
16
|
+
delegate(:programme_level_id, to: :student, prefix: true)
|
7
17
|
end
|
8
18
|
end
|
9
19
|
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,19 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class IdentificationPattern < ApplicationRecord
|
4
|
+
belongs_to :programme_level
|
5
|
+
belongs_to :programme_type
|
6
|
+
belongs_to :programme
|
7
|
+
|
8
|
+
validates :id_pattern, presence: true
|
9
|
+
validates :id_pattern, uniqueness: true
|
10
|
+
|
11
|
+
validates :programme_id, uniqueness: { scope: %i[programme_level_id programme_type_id],
|
12
|
+
message: 'This combination is already taken !' }
|
13
|
+
|
14
|
+
delegate(:name, to: :programme, prefix: true)
|
15
|
+
delegate(:name, to: :programme_level, prefix: true)
|
16
|
+
delegate(:name, to: :programme_type, prefix: true)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|