sis_core 1.0.11 → 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/academic_programme.rb +4 -0
- data/app/models/sis/core/academic_programme_document.rb +11 -0
- data/app/models/sis/core/application.rb +2 -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/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/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 +2 -0
- data/app/models/sis/core/exam_setup.rb +3 -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/semester.rb +1 -5
- data/app/services/sis/core/util_service.rb +16 -0
- data/app/uploaders/sis/core/application_document_uploader.rb +1 -1
- data/app/uploaders/sis/core/photo_uploader.rb +1 -1
- 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/20210310071526_add_minimum_class_size_to_course.rb +6 -0
- data/lib/sis/core/engine.rb +0 -1
- data/lib/sis/core/version.rb +1 -1
- data/spec/factories/sis/core/academic_programme_documents.rb +9 -0
- data/spec/factories/sis/core/academic_years.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/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/curriculums.rb +10 -0
- 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/semesters.rb +1 -2
- metadata +28 -10
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
|
|
@@ -4,6 +4,10 @@ module Sis
|
|
|
4
4
|
belongs_to :programme
|
|
5
5
|
belongs_to :programme_type
|
|
6
6
|
belongs_to :programme_level
|
|
7
|
+
has_many :academic_programme_documents
|
|
8
|
+
|
|
9
|
+
validates :programme_id, uniqueness: { scope: [:programme_level_id, :programme_type_id],
|
|
10
|
+
message: 'Program has already been created !' }
|
|
7
11
|
|
|
8
12
|
delegate(:name, to: :programme, prefix: true, allow_nil: false)
|
|
9
13
|
delegate(:name, to: :programme_type, prefix: true, allow_nil: false)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Sis
|
|
2
|
+
module Core
|
|
3
|
+
class AcademicProgrammeDocument < ApplicationRecord
|
|
4
|
+
belongs_to :academic_programme
|
|
5
|
+
belongs_to :document_type
|
|
6
|
+
|
|
7
|
+
delegate(:name, to: :academic_programme, prefix: true, allow_nil: false)
|
|
8
|
+
delegate(:name, to: :document_type, prefix: true, allow_nil: false)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -49,12 +49,12 @@ module Sis
|
|
|
49
49
|
validates :payment_information, presence: true, if: :payment_made
|
|
50
50
|
|
|
51
51
|
belongs_to :applicant
|
|
52
|
-
belongs_to :academic_programme
|
|
53
52
|
belongs_to :application_setup
|
|
54
53
|
has_many :application_documents
|
|
55
54
|
|
|
56
|
-
delegate(:name, to: :
|
|
55
|
+
delegate(:name, to: :application_setup, prefix: true, allow_nil: false)
|
|
57
56
|
delegate(:full_name, to: :applicant, prefix: true, allow_nil: false)
|
|
57
|
+
delegate(:academic_programme_id, to: :application_setup, prefix: false, allow_nil: false)
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
@@ -6,18 +6,37 @@ module Sis
|
|
|
6
6
|
|
|
7
7
|
belongs_to :academic_programme
|
|
8
8
|
belongs_to :target_semester, class_name: 'Sis::Core::Semester'
|
|
9
|
+
belongs_to :academic_year
|
|
9
10
|
has_many :document_requirements
|
|
10
11
|
has_many :exam_setups
|
|
11
12
|
|
|
12
13
|
validates :start_date, :end_date, :status, presence: true
|
|
13
14
|
validates :status, inclusion: [OPEN, CLOSED]
|
|
15
|
+
validates :academic_programme_id, uniqueness: { scope: [:target_semester_id, :academic_year_id],
|
|
16
|
+
message: 'Announcement has already been created for this academic
|
|
17
|
+
program !' }
|
|
14
18
|
|
|
15
|
-
delegate(:
|
|
19
|
+
delegate(:code, to: :target_semester, prefix: true, allow_nil: false)
|
|
20
|
+
delegate(:year, to: :academic_year, prefix: false , allow_nil: false)
|
|
16
21
|
delegate(:name, to: :academic_programme, prefix: true, allow_nil: false)
|
|
22
|
+
delegate(:programme_id, to: :academic_programme, prefix: false, allow_nil: false)
|
|
23
|
+
delegate(:programme_type_id, to: :academic_programme, prefix: false, allow_nil: false)
|
|
24
|
+
delegate(:programme_level_id, to: :academic_programme, prefix: false, allow_nil: false)
|
|
25
|
+
def programme_name
|
|
26
|
+
academic_programme.programme.name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def programme_type_name
|
|
30
|
+
academic_programme.programme_type.name
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def programme_level_name
|
|
34
|
+
academic_programme.programme_level.name
|
|
35
|
+
end
|
|
17
36
|
|
|
18
37
|
def name
|
|
19
|
-
academic_programme.programme.name
|
|
20
|
-
|
|
38
|
+
"#{academic_programme.programme.name} #{academic_programme.programme_level.name}
|
|
39
|
+
#{academic_programme.programme_type.name}"
|
|
21
40
|
end
|
|
22
41
|
end
|
|
23
42
|
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
|
|
@@ -4,10 +4,17 @@ module Sis
|
|
|
4
4
|
belongs_to :document_type
|
|
5
5
|
belongs_to :application_setup
|
|
6
6
|
|
|
7
|
-
validates :
|
|
7
|
+
validates :application_setup_id, uniqueness: { scope: :document_type_id,
|
|
8
|
+
message: 'Document has been already captured !' }
|
|
8
9
|
|
|
9
10
|
delegate(:name, to: :document_type, prefix: true, allow_nil: false)
|
|
10
11
|
delegate(:name, to: :application_setup, prefix: true, allow_nil: false)
|
|
12
|
+
delegate(:programme_id, to: :application_setup, prefix: false, allow_nil: false)
|
|
13
|
+
delegate(:programme_name, to: :application_setup, prefix: false, allow_nil: false)
|
|
14
|
+
delegate(:programme_level_id, to: :application_setup, prefix: false, allow_nil: false)
|
|
15
|
+
delegate(:programme_level_name, to: :application_setup, prefix: false, allow_nil: false)
|
|
16
|
+
delegate(:programme_type_id, to: :application_setup, prefix: false, allow_nil: false)
|
|
17
|
+
delegate(:programme_type_name, to: :application_setup, prefix: false, allow_nil: false)
|
|
11
18
|
end
|
|
12
19
|
end
|
|
13
20
|
end
|
|
@@ -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,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
|
|
@@ -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
|
|
@@ -12,7 +12,7 @@ module Sis
|
|
|
12
12
|
# Override the directory where uploaded files will be stored.
|
|
13
13
|
# This is a sensible default for uploaders that are meant to be mounted:
|
|
14
14
|
def store_dir
|
|
15
|
-
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
15
|
+
ENV.fetch('UPLOAD_PREFIX') + "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Provide a default URL as a default if there hasn't been a file uploaded:
|
|
@@ -12,7 +12,7 @@ module Sis
|
|
|
12
12
|
# Override the directory where uploaded files will be stored.
|
|
13
13
|
# This is a sensible default for uploaders that are meant to be mounted:
|
|
14
14
|
def store_dir
|
|
15
|
-
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
15
|
+
ENV.fetch('UPLOAD_PREFIX') + "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Provide a default URL as a default if there hasn't been a file uploaded:
|
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
|
data/lib/sis/core/engine.rb
CHANGED
data/lib/sis/core/version.rb
CHANGED
|
@@ -2,6 +2,7 @@ FactoryBot.define do
|
|
|
2
2
|
factory :application_setup, class: Sis::Core::ApplicationSetup do
|
|
3
3
|
association :academic_programme
|
|
4
4
|
association :target_semester, factory: :semester
|
|
5
|
+
association :academic_year
|
|
5
6
|
start_date { Date.today - 15.days }
|
|
6
7
|
end_date { Date.today + 15.days }
|
|
7
8
|
status { 'Open' }
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
FactoryBot.define do
|
|
2
|
+
factory :curriculum, class: Sis::Core::Curriculum do
|
|
3
|
+
association :programme
|
|
4
|
+
association :programme_level
|
|
5
|
+
compulsory_course_credit_hours { 1.5 }
|
|
6
|
+
elective_course_credit_hours { 1.5 }
|
|
7
|
+
thesis_hour { 1.5 }
|
|
8
|
+
project_hour { 1.5 }
|
|
9
|
+
end
|
|
10
|
+
end
|
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
|
|
@@ -100,20 +100,14 @@ dependencies:
|
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 6.0.
|
|
104
|
-
- - ">="
|
|
105
|
-
- !ruby/object:Gem::Version
|
|
106
|
-
version: 6.0.2.1
|
|
103
|
+
version: 6.0.3
|
|
107
104
|
type: :runtime
|
|
108
105
|
prerelease: false
|
|
109
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
107
|
requirements:
|
|
111
108
|
- - "~>"
|
|
112
109
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: 6.0.
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: 6.0.2.1
|
|
110
|
+
version: 6.0.3
|
|
117
111
|
- !ruby/object:Gem::Dependency
|
|
118
112
|
name: sqlite3
|
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -232,7 +226,9 @@ files:
|
|
|
232
226
|
- app/controllers/sis/core/application_controller.rb
|
|
233
227
|
- app/controllers/sis/core/menus_controller.rb
|
|
234
228
|
- app/controllers/sis/core/users_controller.rb
|
|
229
|
+
- app/controllers/sis/core/utils_controller.rb
|
|
235
230
|
- app/models/sis/core/academic_programme.rb
|
|
231
|
+
- app/models/sis/core/academic_programme_document.rb
|
|
236
232
|
- app/models/sis/core/academic_year.rb
|
|
237
233
|
- app/models/sis/core/applicant.rb
|
|
238
234
|
- app/models/sis/core/application.rb
|
|
@@ -241,9 +237,13 @@ files:
|
|
|
241
237
|
- app/models/sis/core/application_record.rb
|
|
242
238
|
- app/models/sis/core/application_setup.rb
|
|
243
239
|
- app/models/sis/core/course.rb
|
|
240
|
+
- app/models/sis/core/course_offering.rb
|
|
241
|
+
- app/models/sis/core/course_offering_sequence.rb
|
|
244
242
|
- app/models/sis/core/course_registration.rb
|
|
245
243
|
- app/models/sis/core/credit_hour_rate.rb
|
|
246
244
|
- app/models/sis/core/currency.rb
|
|
245
|
+
- app/models/sis/core/curriculum.rb
|
|
246
|
+
- app/models/sis/core/curriculum_course.rb
|
|
247
247
|
- app/models/sis/core/document_requirement.rb
|
|
248
248
|
- app/models/sis/core/document_type.rb
|
|
249
249
|
- app/models/sis/core/exam.rb
|
|
@@ -252,8 +252,10 @@ files:
|
|
|
252
252
|
- app/models/sis/core/field_of_study.rb
|
|
253
253
|
- app/models/sis/core/instructor.rb
|
|
254
254
|
- app/models/sis/core/instructor_course.rb
|
|
255
|
+
- app/models/sis/core/level.rb
|
|
255
256
|
- app/models/sis/core/lookup.rb
|
|
256
257
|
- app/models/sis/core/menu.rb
|
|
258
|
+
- app/models/sis/core/prerequisite.rb
|
|
257
259
|
- app/models/sis/core/programme.rb
|
|
258
260
|
- app/models/sis/core/programme_level.rb
|
|
259
261
|
- app/models/sis/core/programme_type.rb
|
|
@@ -262,6 +264,7 @@ files:
|
|
|
262
264
|
- app/models/sis/core/user.rb
|
|
263
265
|
- app/models/sis/core/user_role.rb
|
|
264
266
|
- app/services/sis/core/user_service.rb
|
|
267
|
+
- app/services/sis/core/util_service.rb
|
|
265
268
|
- app/uploaders/sis/core/application_document_uploader.rb
|
|
266
269
|
- app/uploaders/sis/core/photo_uploader.rb
|
|
267
270
|
- config/database.ci.yml
|
|
@@ -289,6 +292,14 @@ files:
|
|
|
289
292
|
- db/migrate/20200511165241_create_sis_core_user_roles.rb
|
|
290
293
|
- db/migrate/20200511165450_create_sis_core_menus.rb
|
|
291
294
|
- db/migrate/20200919235516_create_sis_core_credit_hour_rates.rb
|
|
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
|
|
292
303
|
- lib/authorize_request.rb
|
|
293
304
|
- lib/json_web_token.rb
|
|
294
305
|
- lib/sis/core.rb
|
|
@@ -296,6 +307,7 @@ files:
|
|
|
296
307
|
- lib/sis/core/version.rb
|
|
297
308
|
- lib/sis_core.rb
|
|
298
309
|
- lib/tasks/sis_core_tasks.rake
|
|
310
|
+
- spec/factories/sis/core/academic_programme_documents.rb
|
|
299
311
|
- spec/factories/sis/core/academic_programmes.rb
|
|
300
312
|
- spec/factories/sis/core/academic_years.rb
|
|
301
313
|
- spec/factories/sis/core/applicants.rb
|
|
@@ -303,10 +315,14 @@ files:
|
|
|
303
315
|
- spec/factories/sis/core/application_modules.rb
|
|
304
316
|
- spec/factories/sis/core/application_setups.rb
|
|
305
317
|
- spec/factories/sis/core/applications.rb
|
|
318
|
+
- spec/factories/sis/core/course_offering_sequences.rb
|
|
319
|
+
- spec/factories/sis/core/course_offerings.rb
|
|
306
320
|
- spec/factories/sis/core/course_registrations.rb
|
|
307
321
|
- spec/factories/sis/core/courses.rb
|
|
308
322
|
- spec/factories/sis/core/credit_hour_rates.rb
|
|
309
323
|
- spec/factories/sis/core/currencies.rb
|
|
324
|
+
- spec/factories/sis/core/curriculum_courses.rb
|
|
325
|
+
- spec/factories/sis/core/curriculums.rb
|
|
310
326
|
- spec/factories/sis/core/document_requirements.rb
|
|
311
327
|
- spec/factories/sis/core/document_types.rb
|
|
312
328
|
- spec/factories/sis/core/exam_results.rb
|
|
@@ -314,8 +330,10 @@ files:
|
|
|
314
330
|
- spec/factories/sis/core/exams.rb
|
|
315
331
|
- spec/factories/sis/core/instructor_courses.rb
|
|
316
332
|
- spec/factories/sis/core/instructors.rb
|
|
333
|
+
- spec/factories/sis/core/levels.rb
|
|
317
334
|
- spec/factories/sis/core/lookups.rb
|
|
318
335
|
- spec/factories/sis/core/menus.rb
|
|
336
|
+
- spec/factories/sis/core/prerequisites.rb
|
|
319
337
|
- spec/factories/sis/core/programme_levels.rb
|
|
320
338
|
- spec/factories/sis/core/programme_types.rb
|
|
321
339
|
- spec/factories/sis/core/programmes.rb
|