Skip to content

Commit

Permalink
Merge branch 'master' into bugfixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos-Eduardo-Cabral-da-Cunha committed Oct 21, 2021
2 parents 2ba022e + 3ccf82f commit de623df
Show file tree
Hide file tree
Showing 24 changed files with 414 additions and 171 deletions.
5 changes: 5 additions & 0 deletions app/assets/stylesheets/enroll.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ table.enroll-table {
padding: 0 4px;
}

.enroll-table .stat a {
font-family: Verdana, sans-serif;
font-size: inherit;
padding: 0;
}

.enroll-table:not(.disable-pointer) tr label:hover {
cursor: pointer;
Expand Down
76 changes: 61 additions & 15 deletions app/controllers/class_enrollment_requests_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,14 @@ class ClassEnrollmentRequestsController < ApplicationController


columns = [:enrollment_request, :course_class, :status, :class_enrollment]
config.list.columns = [:enrollment_request, :course_class, :class_enrollment, :allocations, :professor, :action, :status]
config.list.columns = [:enrollment_request, :enrollment, :course_class, :class_enrollment, :allocations, :professor, :action, :status]
config.show.columns = [:enrollment_request, :course_class, :class_enrollment, :allocations, :professor, :action, :status]
config.create.columns = columns
config.update.columns = columns

config.columns.add :enrollment_number, :student, :enrollment_level, :enrollment_status
config.columns.add :student, :enrollment_level, :enrollment_status
config.columns.add :admission_date, :scholarship_durations_active, :advisor, :has_advisor
config.columns.add :year, :semester, :allocations, :professor
config.columns.add :year, :semester, :allocations, :professor, :course_type

config.create.label = :create_class_enrollment_request_label
config.update.label = :update_class_enrollment_request_label
Expand All @@ -75,9 +75,11 @@ class ClassEnrollmentRequestsController < ApplicationController
config.columns[:semester].includes = [:enrollment_request]
config.columns[:semester].search_sql = "enrollment_requests.semester"

add_enrollment_number_search_column(config)
config.columns[:enrollment_number].includes = [:enrollment_request]
config.columns[:enrollment_number].search_sql = "enrollment_requests.enrollment_id"
config.columns[:enrollment].search_ui = :select
config.columns[:enrollment].search_sql = "enrollment_requests.enrollment_id"
config.columns[:enrollment].sort_by sql: 'students.name'
config.columns[:enrollment].includes = { enrollment_request: { enrollment: :student }}
config.columns[:enrollment].actions_for_association_links = [:show]

add_student_search_column(config)
config.columns[:student].includes = { enrollment_request: :enrollment }
Expand All @@ -102,16 +104,18 @@ class ClassEnrollmentRequestsController < ApplicationController

config.columns[:course_class].search_ui = :record_select

add_course_type_search_column(config)
config.columns[:course_type].includes = { course_class: { course: :course_type } }

add_professor_search_column(config)
config.columns[:professor].includes = { course_class: :professor }
config.columns[:professor].search_sql = "professors.id"
config.columns[:professor].search_ui = :select

config.field_search.columns = [
:action,
:status,
:year,
:semester,
:enrollment_number,
:enrollment,
:student,
:enrollment_level,
:enrollment_status,
Expand All @@ -120,6 +124,7 @@ class ClassEnrollmentRequestsController < ApplicationController
:has_advisor,
:advisor,
:course_class,
:course_type,
:professor
]

Expand All @@ -133,9 +138,9 @@ class ClassEnrollmentRequestsController < ApplicationController
config.columns[:action].form_ui = :select
config.columns[:action].options = {:options => ClassEnrollmentRequest::ACTIONS, default: ClassEnrollmentRequest::INSERT, :include_blank => I18n.t("active_scaffold._select_")}

config.columns[:enrollment_request].sort_by sql: 'students.name'
config.columns[:enrollment_request].includes = { enrollment_request: { enrollment: :student }}
config.list.sorting = {enrollment_request: 'ASC'}
config.columns[:enrollment_request].sort_by sql: 'enrollment_requests.year, enrollment_requests.semester'
config.columns[:enrollment_request].includes = [ :enrollment_request ]
config.list.sorting = {enrollment: 'ASC'}

config.columns[:course_class].sort_by sql: 'courses.name'
config.columns[:course_class].includes = { course_class: :course }
Expand Down Expand Up @@ -207,7 +212,16 @@ def set_valid

def set_effected
raise CanCan::AccessDenied.new if cannot? :effect, ClassEnrollmentRequest
set_status(ClassEnrollmentRequest::EFFECTED, 'class_enrollment_request.effected.applied')
set_status(ClassEnrollmentRequest::EFFECTED, 'class_enrollment_request.effected.applied') do |record|
if record.action == ClassEnrollmentRequest::INSERT
emails = [EmailTemplate.load_template("class_enrollment_requests:email_to_student")
.prepare_message({ record: record })]
else
emails = [EmailTemplate.load_template("class_enrollment_requests:removal_email_to_student")
.prepare_message({ record: record })]
end
Notifier.send_emails(notifications: emails)
end
end

def show_effect
Expand All @@ -228,9 +242,40 @@ def effect
count = 0
each_record_in_page {}
class_enrollment_requests = find_page(:sorting => active_scaffold_config.list.user.sorting).items
class_enrollment_requests.each do |record|
count += 1 if record.set_status!(ClassEnrollmentRequest::EFFECTED)
emails = []

enrollment_request_id = nil
effected = []
class_enrollment_requests.sort_by(&:enrollment_request_id).each do |record|
if record.enrollment_request_id != enrollment_request_id
if effected.present?
enrollment_request = effected[0].enrollment_request
emails << EmailTemplate.load_template("enrollment_requests:email_to_student").prepare_message({
record: enrollment_request,
student_enrollment_url: student_enroll_url(id: enrollment_request.enrollment.id, year: enrollment_request.year, semester: enrollment_request.semester),
keep: enrollment_request.class_enrollment_requests.select { |cer| !effected.include? cer },
change: effected
})
end
effected = []
enrollment_request_id = record.enrollment_request_id
end
if record.set_status!(ClassEnrollmentRequest::EFFECTED)
count += 1
effected << record
end
end
if effected.present?
enrollment_request = effected[0].enrollment_request
emails << EmailTemplate.load_template("enrollment_requests:email_to_student").prepare_message({
record: enrollment_request,
student_enrollment_url: student_enroll_url(id: enrollment_request.enrollment.id, year: enrollment_request.year, semester: enrollment_request.semester),
keep: enrollment_request.class_enrollment_requests.select { |cer| !effected.include? cer },
change: effected
})
end
Notifier.send_emails(notifications: emails)

do_refresh_list
@message = I18n.t('class_enrollment_request.effected.applied', count: count)
respond_to_action(:effect)
Expand Down Expand Up @@ -290,4 +335,5 @@ def set_status_respond_on_iframe
end
end


end
91 changes: 88 additions & 3 deletions app/controllers/class_enrollments_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,23 @@ class ClassEnrollmentsController < ApplicationController
authorize_resource

active_scaffold :class_enrollment do |config|

include EnrollmentSearchConcern
include EnrollmentRequestSearchConcern
columns = [
:enrollment, :course_class, :situation, :disapproved_by_absence, :grade, :grade_not_count_in_gpr,
:justification_grade_not_count_in_gpr, :obs, :grade_label
:enrollment, :course_class, :situation, :disapproved_by_absence,
:justification_grade_not_count_in_gpr, :grade, :grade_not_count_in_gpr,
:obs, :grade_label
]
config.columns = columns
config.list.sorting = {:enrollment => 'ASC'}
config.list.columns = [:enrollment,:course_class, :situation, :grade_label, :disapproved_by_absence]
config.create.columns = columns - [:grade_label]
config.update.columns = columns - [:grade_label]
config.show.columns = [
:enrollment, :course_class, :situation, :disapproved_by_absence,
:grade_label, :grade_not_count_in_gpr, :justification_grade_not_count_in_gpr,
:obs,
]
config.list.columns = [:enrollment,:course_class, :situation, :grade_label, :disapproved_by_absence]
config.create.label = :create_class_enrollment_label
config.update.label = :update_class_enrollment_label
Expand All @@ -25,11 +32,89 @@ class ClassEnrollmentsController < ApplicationController
config.columns[:grade].options = {:format => :i18n_number, :i18n_options => {:format_as => "grade"}}
config.columns[:situation].form_ui = :select
config.columns[:situation].options = {:options => ClassEnrollment::SITUATIONS, :include_blank => I18n.t("active_scaffold._short_select_")}
config.columns[:justification_grade_not_count_in_gpr].form_ui = :hidden

config.columns.add :student, :enrollment_level, :enrollment_status
config.columns.add :admission_date, :scholarship_durations_active, :advisor, :has_advisor
config.columns.add :year, :semester, :professor, :course_type

config.actions.swap :search, :field_search

add_year_search_column(config)
config.columns[:year].includes = [ :course_class ]
config.columns[:year].search_sql = "course_classes.year"

add_semester_search_column(config)
config.columns[:semester].includes = [ :course_class ]
config.columns[:semester].search_sql = "course_classes.semester"

config.columns[:enrollment].search_ui = :record_select

add_student_search_column(config)
config.columns[:student].includes = [ :enrollment ]

add_enrollment_level_search_column(config)
config.columns[:enrollment_level].includes = [ :enrollment ]

add_enrollment_status_search_column(config)
config.columns[:enrollment_status].includes = [ :enrollment ]

add_admission_date_search_column(config)
config.columns[:admission_date].includes = [ :enrollment ]

add_scholarship_durations_active_search_column(config)
config.columns[:scholarship_durations_active].includes = [ :enrollment ]

add_advisor_search_column(config)
config.columns[:advisor].includes = { enrollment: :advisements }

add_has_advisor_search_column(config)
config.columns[:has_advisor].includes = [ :enrollment ]

config.columns[:course_class].search_ui = :record_select

add_course_type_search_column(config)
config.columns[:course_type].includes = { course_class: { course: :course_type } }

add_professor_search_column(config)
config.columns[:professor].includes = { course_class: :professor }

config.field_search.columns = [
:situation,
:year,
:semester,
:enrollment,
:student,
:enrollment_level,
:enrollment_status,
:admission_date,
:scholarship_durations_active,
:has_advisor,
:advisor,
:course_class,
:course_type,
:professor,
:disapproved_by_absence,
]

config.columns[:enrollment].sort_by sql: 'students.name'
config.columns[:enrollment].includes = { enrollment: :student }

config.columns[:course_class].sort_by sql: 'courses.name'
config.columns[:course_class].includes = { course_class: :course }

config.columns[:grade_label].sort_by sql: 'grade'

config.actions.exclude :deleted_records
end
record_select :per_page => 10, :search_on => [:name], :order_by => 'name', :full_text_search => true

class <<self
alias_method :condition_for_admission_date_column, :custom_condition_for_admission_date_column
alias_method :condition_for_scholarship_durations_active_column, :custom_condition_for_scholarship_durations_active_column
alias_method :condition_for_has_advisor_column, :custom_condition_for_has_advisor_column
end


protected

Expand Down
10 changes: 10 additions & 0 deletions app/controllers/concerns/enrollment_search_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ def add_has_advisor_search_column(config)
config.columns[:has_advisor].search_ui = :select
end

def add_course_type_search_column(config)
config.columns[:course_type].search_sql = "course_types.id"
config.columns[:course_type].search_ui = :select
end

def add_professor_search_column(config)
config.columns[:professor].search_sql = "professors.id"
config.columns[:professor].search_ui = :select
end

def custom_condition_for_admission_date_column(column, value, like_pattern)
month = value[:month].empty? ? 1 : value[:month]
year = value[:year].empty? ? 1 : value[:year]
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/course_classes_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
class CourseClassesController < ApplicationController
authorize_resource
include NumbersHelper
helper :class_enrollments

before_action :remove_constraint_to_show_enrollment_column, only: [:edit]

Expand All @@ -15,6 +14,7 @@ class CourseClassesController < ApplicationController

config.list.sorting = {:name => 'ASC', :id => 'DESC'}
config.list.columns = [:name, :course, :professor, :year, :semester, :class_enrollments_count]
config.show.columns = [:year, :semester, :name, :course, :professor, :allocations, :class_enrollments_count, :class_enrollments, :enrollments]
config.create.label = :create_course_class_label
config.update.label = :update_course_class_label

Expand Down
26 changes: 23 additions & 3 deletions app/controllers/enrollment_requests_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class EnrollmentRequestsController < ApplicationController
add_semester_search_column(config)

config.columns[:enrollment].search_ui = :record_select
config.columns[:enrollment].actions_for_association_links = [:show]

add_student_search_column(config)
config.columns[:student].includes = [ :enrollment ]
Expand Down Expand Up @@ -100,7 +101,22 @@ def before_update_save(record)
@comment = nil
message = params[:record][:comment_message]
changed = false
changed ||= record.changed? || record.class_enrollment_requests.any? { |cer| cer.changed? }
changed ||= record.changed?
result = {
change: [],
keep: [],
}
record.class_enrollment_requests.each do |cer|
changed = true if cer.changed?
if cer.status_changed?
result[:change] << cer
if cer.status == ClassEnrollmentRequest::EFFECTED && cannot?(:effect, cer)
record.errors.add(:base, :cannot_effect)
end
else
result[:keep] << cer
end
end
if message.present?
@comment = EnrollmentRequestComment.new(message: message, user: current_user)
changed = true
Expand All @@ -109,8 +125,12 @@ def before_update_save(record)
record.last_staff_change_at = Time.current
record.enrollment_request_comments << @comment if @comment.present?
emails = [EmailTemplate.load_template("enrollment_requests:email_to_student").prepare_message({
:record => record,
:student_enrollment_url => student_enroll_url(id: record.enrollment.id, year: record.year, semester: record.semester)
record: record,
student_enrollment_url: student_enroll_url(id: record.enrollment.id, year: record.year, semester: record.semester),
message: message,
user: current_user,
change: result[:change],
keep: result[:keep]
})]
Notifier.send_emails(notifications: emails)
end
Expand Down
1 change: 0 additions & 1 deletion app/controllers/enrollments_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ class EnrollmentsController < ApplicationController
include ApplicationHelper
include EnrollmentUsersHelper

helper :class_enrollments
helper :advisements
helper :scholarship_durations

Expand Down
1 change: 0 additions & 1 deletion app/controllers/professors_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ class ProfessorsController < ApplicationController

include NumbersHelper
include ApplicationHelper
helper :class_enrollments
helper :professor_research_areas

active_scaffold :professor do |config|
Expand Down
6 changes: 3 additions & 3 deletions app/controllers/student_enrollment_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ def save_enrollment_request_and_redirect
@enrollment_request.student_change!
end
if @enrollment_request.save_request
notify_enrollment_request_change(@enrollment_request, request_change) if changed
notify_enrollment_request_change(@enrollment_request, request_change, message, current_user) if changed
return redirect_to student_enrollment_path(@enrollment.id), notice: I18n.t("student_enrollment.notice.request_saved")
end
@enrollment_request.enrollment_request_comments.delete(@comment) if ! @comment.nil? && ! @comment.persisted?
Expand Down Expand Up @@ -175,8 +175,8 @@ def prepare_course_class_ids
course_class_ids.uniq
end

def notify_enrollment_request_change(enrollment_request, request_change)
attributes = { record: enrollment_request }.merge(request_change)
def notify_enrollment_request_change(enrollment_request, request_change, message, user)
attributes = { record: enrollment_request, message: message, user: user }.merge(request_change)
emails = [EmailTemplate.load_template("student_enrollments:email_to_student").prepare_message(attributes)]
enrollment_request.enrollment.advisements.each do |advisement|
emails << EmailTemplate.load_template("student_enrollments:email_to_advisor")
Expand Down
Loading

0 comments on commit de623df

Please sign in to comment.