sis_core 1.0.16 → 1.0.17
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/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_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_assignment.rb +29 -0
- data/app/models/sis/core/course_registration.rb +12 -2
- 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/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/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 +79 -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/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/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_registrations.rb +3 -2
- 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/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 +70 -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: 0d8a574613ba77eb8db366949b723433df9c035de960d7d751f5969fcd7d4831
|
4
|
+
data.tar.gz: 3cddd57d65c9adae22464705f5ea560cc6b183674be4c2505056278c068e575e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e29ee68bec9b045abe13f23813b7260a7ade6d61ade5edc385e1e9188872b37185bb7633e2c750b74757b2949ca01b148a6c0c63bb4c3ba9d9dda8579593a385
|
7
|
+
data.tar.gz: 1bf5e1c9957b2b6eaf00492d0c48b2fa1ce343280afcb07963a32e700d18181b743ee6f577c9766a07b4b794d54aacb84eefcdb62140bae0960ec5ff41ea63eb
|
@@ -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
|
@@ -0,0 +1,29 @@
|
|
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
|
+
end
|
28
|
+
end
|
29
|
+
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,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
|
@@ -1,7 +1,23 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class Student < ApplicationRecord
|
4
|
-
|
4
|
+
has_one_attached :picture
|
5
|
+
belongs_to :user
|
6
|
+
belongs_to :level, optional: true
|
7
|
+
belongs_to :semester, optional: true
|
8
|
+
belongs_to :entry, optional: true
|
9
|
+
belongs_to :programme
|
10
|
+
belongs_to :programme_level
|
11
|
+
belongs_to :programme_type
|
12
|
+
belongs_to :advisor, class_name: 'Sis::Core::Instructor', optional: true
|
13
|
+
has_many :course_registrations
|
14
|
+
|
15
|
+
delegate(:first_name, to: :user, prefix: false)
|
16
|
+
delegate(:last_name, to: :user, prefix: false)
|
17
|
+
delegate(:email, to: :user, prefix: false)
|
18
|
+
delegate(:first_name, to: :advisor, prefix: true, allow_nil: true)
|
19
|
+
delegate(:middle_name, to: :advisor, prefix: true, allow_nil: true)
|
20
|
+
delegate(:last_name, to: :advisor, prefix: true, allow_nil: true)
|
5
21
|
end
|
6
22
|
end
|
7
23
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class StudentDocument < ApplicationRecord
|
4
|
+
has_one_attached :file
|
5
|
+
belongs_to :document_type, optional: true
|
6
|
+
belongs_to :student
|
7
|
+
|
8
|
+
delegate(:code, to: :document_type, prefix: true, allow_nil: true)
|
9
|
+
delegate(:name, to: :document_type, prefix: true)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Sis
|
2
|
+
module Core
|
3
|
+
class StudentEligibility < ApplicationRecord
|
4
|
+
belongs_to :student
|
5
|
+
belongs_to :academic_year
|
6
|
+
belongs_to :semester
|
7
|
+
belongs_to :eligibility_criteria
|
8
|
+
belongs_to :cleared_by, class_name: 'Sis::Core::User'
|
9
|
+
|
10
|
+
delegate(:first_name, to: :student, prefix: true)
|
11
|
+
delegate(:middle_name, to: :student, prefix: true)
|
12
|
+
delegate(:last_name, to: :student, prefix: true)
|
13
|
+
delegate(:description, to: :eligibility_criteria, prefix: true)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateSisCoreClassrooms < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_classrooms do |t|
|
4
|
+
t.references :building,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'bldg_on_cls_rm' },
|
7
|
+
foreign_key: { to_table: :sis_core_buildings }
|
8
|
+
t.references :programme_level,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'pl_on_cls_rm' },
|
11
|
+
foreign_key: { to_table: :sis_core_lookups }
|
12
|
+
t.float :square_meter
|
13
|
+
t.string :room_number, null: false
|
14
|
+
t.string :floor, null: false
|
15
|
+
t.integer :class_size
|
16
|
+
t.string :class_type, null: false
|
17
|
+
|
18
|
+
t.timestamps
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class CreateSisCoreSections < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_sections do |t|
|
4
|
+
t.string :name, null: false
|
5
|
+
t.references :entry,
|
6
|
+
null: false,
|
7
|
+
index: { name: 'entry_on_sec' },
|
8
|
+
foreign_key: { to_table: :sis_core_lookups }
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreateSisCoreCourseAssignments < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_course_assignments do |t|
|
4
|
+
t.references :course_offering,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'crs_off_on_crs_ass' },
|
7
|
+
foreign_key: { to_table: :sis_core_course_offerings }
|
8
|
+
t.references :section,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'sec_on_crs_ass' },
|
11
|
+
foreign_key: { to_table: :sis_core_sections }
|
12
|
+
t.references :instructor,
|
13
|
+
null: false,
|
14
|
+
index: { name: 'ins_on_crs_ass' },
|
15
|
+
foreign_key: { to_table: :sis_core_instructors }
|
16
|
+
t.integer :lab_instructor_id, null: true
|
17
|
+
t.integer :tutorial_instructor_id, null: true
|
18
|
+
|
19
|
+
t.timestamps
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|