sis_core 1.0.12 → 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/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 +5 -1
- data/app/models/sis/core/academic_programme_document.rb +11 -0
- 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.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 +22 -3
- 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 +29 -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_requirement.rb +8 -1
- data/app/models/sis/core/document_type.rb +1 -0
- 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/exam_setup.rb +3 -0
- 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/programme.rb +1 -1
- data/app/models/sis/core/section.rb +9 -0
- data/app/models/sis/core/semester.rb +1 -5
- 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/20200105061717_create_sis_core_lookups.rb +3 -1
- data/db/migrate/20200105072142_create_sis_core_academic_years.rb +1 -1
- data/db/migrate/20200106072246_create_sis_core_semesters.rb +1 -5
- data/db/migrate/20200106132521_create_sis_core_application_setups.rb +4 -0
- data/db/migrate/20200106133034_create_sis_core_document_requirements.rb +2 -2
- data/db/migrate/20200107094449_create_sis_core_applications.rb +0 -4
- data/db/migrate/20201019055620_create_sis_core_academic_programme_documents.rb +19 -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 +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/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/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_programme_documents.rb +9 -0
- data/spec/factories/sis/core/academic_time_lines.rb +21 -0
- data/spec/factories/sis/core/academic_years.rb +1 -1
- data/spec/factories/sis/core/applicants.rb +1 -1
- data/spec/factories/sis/core/application_documents.rb +1 -1
- data/spec/factories/sis/core/application_setups.rb +1 -0
- data/spec/factories/sis/core/applications.rb +0 -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/lookups.rb +2 -0
- data/spec/factories/sis/core/prerequisites.rb +6 -0
- data/spec/factories/sis/core/sections.rb +6 -0
- data/spec/factories/sis/core/semesters.rb +1 -2
- 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 +94 -54
- data/app/uploaders/sis/core/application_document_uploader.rb +0 -51
- data/app/uploaders/sis/core/photo_uploader.rb +0 -51
@@ -11,6 +11,9 @@ module Sis
|
|
11
11
|
end
|
12
12
|
|
13
13
|
delegate(:name, to: :application_setup, prefix: true, allow_nil: false)
|
14
|
+
delegate(:programme_id, to: :application_setup, prefix: false, allow_nil: false)
|
15
|
+
delegate(:programme_type_id, to: :application_setup, prefix: false, allow_nil: false)
|
16
|
+
delegate(:programme_level_id, to: :application_setup, prefix: false, allow_nil: false)
|
14
17
|
end
|
15
18
|
end
|
16
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
|
@@ -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
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module Sis
|
2
2
|
module Core
|
3
3
|
class Semester < ApplicationRecord
|
4
|
-
|
5
|
-
|
6
|
-
validates :name, presence: true
|
7
|
-
|
8
|
-
delegate(:label, to: :academic_year, prefix: true, allow_nil: false)
|
4
|
+
validates :code, presence: true, uniqueness: { case_sensitive: false }
|
9
5
|
end
|
10
6
|
end
|
11
7
|
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,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
|
@@ -1,12 +1,8 @@
|
|
1
1
|
class CreateSisCoreSemesters < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
create_table :sis_core_semesters do |t|
|
4
|
-
t.string :
|
4
|
+
t.string :code, null: false
|
5
5
|
t.string :description
|
6
|
-
t.references :academic_year,
|
7
|
-
index: { name: 'ay_on_semester_indx' },
|
8
|
-
null: false,
|
9
|
-
foreign_key: { to_table: :sis_core_academic_years }
|
10
6
|
|
11
7
|
t.timestamps
|
12
8
|
end
|
@@ -12,6 +12,10 @@ class CreateSisCoreApplicationSetups < ActiveRecord::Migration[6.0]
|
|
12
12
|
null: false,
|
13
13
|
index: { name: 'as_on_ts_indx' },
|
14
14
|
foreign_key: { to_table: :sis_core_semesters }
|
15
|
+
t.references :academic_year,
|
16
|
+
null: false,
|
17
|
+
index: { name: 'ay_on_ts_indx' },
|
18
|
+
foreign_key: { to_table: :sis_core_academic_years }
|
15
19
|
|
16
20
|
t.timestamps
|
17
21
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
class CreateSisCoreDocumentRequirements < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
create_table :sis_core_document_requirements do |t|
|
4
|
-
t.integer :original, null: false, default:
|
5
|
-
t.integer :copy, null: false, default:
|
4
|
+
t.integer :original, null: false, default: 1
|
5
|
+
t.integer :copy, null: false, default: 1
|
6
6
|
t.string :remark
|
7
7
|
t.references :document_type,
|
8
8
|
null: false,
|
@@ -9,10 +9,6 @@ class CreateSisCoreApplications < ActiveRecord::Migration[6.0]
|
|
9
9
|
null: false,
|
10
10
|
index: { name: 'applications_on_applicant_indx' },
|
11
11
|
foreign_key: { to_table: :sis_core_applicants }
|
12
|
-
t.references :academic_programme,
|
13
|
-
null: false,
|
14
|
-
index: { name: 'applications_on_ap_indx' },
|
15
|
-
foreign_key: { to_table: :sis_core_academic_programmes }
|
16
12
|
t.references :application_setup,
|
17
13
|
null: false,
|
18
14
|
index: { name: 'application_setup_on_ap_indx' },
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateSisCoreAcademicProgrammeDocuments < ActiveRecord::Migration[6.0]
|
2
|
+
def change
|
3
|
+
create_table :sis_core_academic_programme_documents do |t|
|
4
|
+
t.references :academic_programme,
|
5
|
+
null: false,
|
6
|
+
index: { name: 'ap_on_ap_doc' },
|
7
|
+
foreign_key: { to_table: :sis_core_academic_programmes }
|
8
|
+
t.references :document_type,
|
9
|
+
null: false,
|
10
|
+
index: { name: 'dt_on_ap_doc' },
|
11
|
+
foreign_key: { to_table: :sis_core_lookups }
|
12
|
+
t.string :remark
|
13
|
+
t.integer :original, default: 1
|
14
|
+
t.integer :copy, default: 1
|
15
|
+
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
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
|