From befc93499fb5f4fd257d253c4c34f432a72dd39b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 13 Dec 2020 06:28:30 +0000 Subject: [PATCH 001/304] Bump ini from 1.3.5 to 1.3.8 Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8. - [Release notes](https://github.com/isaacs/ini/releases) - [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8) Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 192269151..740332ea7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3689,9 +3689,9 @@ inherits@2.0.3: integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== internal-ip@^4.3.0: version "4.3.0" From 0af4bc7d9e3be3267abcb8e8be92ec8a84768cca Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 13 Oct 2021 15:39:02 -0300 Subject: [PATCH 002/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20faltas=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ieducar_api_exam_postings_controller.rb | 18 ++++++++++-------- app/models/daily_frequency.rb | 1 + app/models/daily_frequency_student.rb | 1 + app/services/exam_poster/absence_poster.rb | 9 ++++----- app/services/exam_poster/base.rb | 7 ++++--- app/workers/ieducar_exam_posting_worker.rb | 5 +++-- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/controllers/ieducar_api_exam_postings_controller.rb b/app/controllers/ieducar_api_exam_postings_controller.rb index 8950803d0..b56ba52e9 100644 --- a/app/controllers/ieducar_api_exam_postings_controller.rb +++ b/app/controllers/ieducar_api_exam_postings_controller.rb @@ -11,14 +11,16 @@ def index def create authorize(IeducarApiExamPosting.new) - ieducar_api_exam_posting = IeducarApiExamPosting.new(permitted_attributes) - ieducar_api_exam_posting.author = current_user - ieducar_api_exam_posting.teacher = current_user.current_teacher - ieducar_api_exam_posting.status = ApiSynchronizationStatus::STARTED - ieducar_api_exam_posting.ieducar_api_configuration = IeducarApiConfiguration.current - ieducar_api_exam_posting.save! - - jid = IeducarExamPostingWorker.perform_in(5.seconds, current_entity.id, ieducar_api_exam_posting.id) + new_permitted_attributes = permitted_attributes.merge!({ author: current_user }) + new_permitted_attributes = new_permitted_attributes.merge!({ teacher: current_user.current_teacher }) + new_permitted_attributes = new_permitted_attributes.merge!({ ieducar_api_configuration: IeducarApiConfiguration.current }) + new_permitted_attributes = new_permitted_attributes.merge!({ status: ApiSynchronizationStatus::STARTED }) + + ieducar_api_exam_posting = IeducarApiExamPosting.create!(new_permitted_attributes) + + ieducar_api_exam_posting_last = IeducarApiExamPosting.where(new_permitted_attributes.merge({status: ApiSynchronizationStatus::COMPLETED })).last + + jid = IeducarExamPostingWorker.perform_in(5.seconds, current_entity.id, ieducar_api_exam_posting.id, ieducar_api_exam_posting_last.try(:id)) WorkerBatch.create!( main_job_class: 'IeducarExamPostingWorker', diff --git a/app/models/daily_frequency.rb b/app/models/daily_frequency.rb index 2cae7613d..1b39a66cb 100644 --- a/app/models/daily_frequency.rb +++ b/app/models/daily_frequency.rb @@ -73,6 +73,7 @@ class DailyFrequency < ActiveRecord::Base scope :by_frequency_date_between, lambda { |start_at, end_at| where(frequency_date: start_at.to_date..end_at.to_date) } scope :by_class_number, lambda { |class_number| where(class_number: class_number) } scope :by_school_calendar_id, ->(school_calendar_id) { where(school_calendar_id: school_calendar_id) } + scope :by_not_poster, ->(poster_sent) { joins(:students).where("daily_frequency_students.updated_at > ?", poster_sent) } scope :general_frequency, lambda { where(discipline_id: nil, class_number: nil) } scope :has_frequency_for_student, lambda{ |student_id| joins(:students).merge(DailyFrequencyStudent.by_student_id(student_id)) } scope :order_by_student_name, -> { order('students.name') } diff --git a/app/models/daily_frequency_student.rb b/app/models/daily_frequency_student.rb index 42a7cc458..d5007bbc9 100644 --- a/app/models/daily_frequency_student.rb +++ b/app/models/daily_frequency_student.rb @@ -31,6 +31,7 @@ class DailyFrequencyStudent < ActiveRecord::Base scope :by_student_id, lambda { |student_id| where(student_id: student_id) } scope :by_frequency_date, lambda { |frequency_date| joins(:daily_frequency).merge(DailyFrequency.by_frequency_date(frequency_date)) } scope :by_frequency_date_between, lambda { |start_at, end_at| joins(:daily_frequency).merge(DailyFrequency.by_frequency_date_between(start_at, end_at)) } + scope :by_not_poster, ->(poster_sent) { where("daily_frequency_students.updated_at > ?", poster_sent) } scope :general_by_classroom_student_date_between, lambda { |classroom_id, student_id, start_at, end_at| where( 'daily_frequencies.classroom_id' => classroom_id, diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index 21e955b3b..f8185f424 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -62,10 +62,7 @@ def post_general_classrooms end_date = step_end_at(classroom) daily_frequencies = DailyFrequency.by_classroom_id(classroom.id) - .by_frequency_date_between( - start_date, - end_date - ) + .by_frequency_date_between(start_date,end_date) .general_frequency students = fetch_students(daily_frequencies) @@ -169,7 +166,9 @@ def step_end_at(classroom) def fetch_students(daily_frequencies) students_ids = [] - daily_frequencies.each { |d| students_ids << d.students.map(&:student_id) } + daily_frequencies.each do |d| + students_ids << d.students.by_not_poster(@post_data_last.try(:created_at)).map(&:student_id) + end students_ids.flatten!.uniq! if students_ids.any? Student.find(students_ids) end diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 7a054dd11..911b9c714 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -4,8 +4,9 @@ class InvalidClassroomError < StandardError; end attr_accessor :warning_messages, :requests - def initialize(post_data, entity_id, queue = nil) + def initialize(post_data, entity_id, post_data_last = nil, queue = nil) @post_data = post_data + @post_data_last = post_data_last @entity_id = entity_id @worker_batch = post_data.worker_batch @warning_messages = [] @@ -13,8 +14,8 @@ def initialize(post_data, entity_id, queue = nil) @queue = queue || 'critical' end - def self.post!(post_data, entity_id, queue = nil) - new(post_data, entity_id, queue).post! + def self.post!(post_data, entity_id, post_data_last = nil, queue = nil) + new(post_data, entity_id, post_data_last, queue).post! end def post! diff --git a/app/workers/ieducar_exam_posting_worker.rb b/app/workers/ieducar_exam_posting_worker.rb index d70555a70..adc3d768e 100644 --- a/app/workers/ieducar_exam_posting_worker.rb +++ b/app/workers/ieducar_exam_posting_worker.rb @@ -20,11 +20,12 @@ class IeducarExamPostingWorker Honeybadger.notify(exception) end - def perform(entity_id, posting_id) + def perform(entity_id, posting_id, posting_last_id) entity = Entity.find(entity_id) entity.using_connection do posting = IeducarApiExamPosting.find(posting_id) + posting_last = IeducarApiExamPosting.find_by(id: posting_last_id) case posting.post_type when ApiPostingTypes::NUMERICAL_EXAM, ApiPostingTypes::SCHOOL_TERM_RECOVERY @@ -36,7 +37,7 @@ def perform(entity_id, posting_id) when ApiPostingTypes::DESCRIPTIVE_EXAM ExamPoster::DescriptiveExamPoster.post!(posting, entity_id) when ApiPostingTypes::ABSENCE - ExamPoster::AbsencePoster.post!(posting, entity_id) + ExamPoster::AbsencePoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::FINAL_RECOVERY ExamPoster::FinalRecoveryPoster.post!(posting, entity_id) end From f9692bd9c570650186632e02a2d06f70d30abbc3 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 28 Oct 2021 17:26:59 -0300 Subject: [PATCH 003/304] =?UTF-8?q?refatora=C3=A7=C3=A3o(enviar=5Favalia?= =?UTF-8?q?=C3=A7=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20num?= =?UTF-8?q?=C3=A9rica=20e=20frequ=E1=BA=BDncias=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/daily_note_student.rb | 1 + app/models/recovery_diary_record_student.rb | 1 + .../school_term_recovery_diary_record.rb | 1 + app/services/exam_poster/absence_poster.rb | 6 +++- app/services/exam_poster/base.rb | 36 +++++++++++++++++++ .../exam_poster/numerical_exam_poster.rb | 2 ++ app/workers/ieducar_exam_posting_worker.rb | 8 ++--- ...add_timestamps_to_recovery_diary_record.rb | 7 ++++ 8 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb diff --git a/app/models/daily_note_student.rb b/app/models/daily_note_student.rb index 219d76cd2..36b368fb7 100644 --- a/app/models/daily_note_student.rb +++ b/app/models/daily_note_student.rb @@ -34,6 +34,7 @@ class DailyNoteStudent < ActiveRecord::Base scope :active, -> { where(active: true) } scope :ordered, -> { joins(:student, daily_note: :avaliation).order(Avaliation.arel_table[:test_date], Student.arel_table[:name]) } scope :order_by_discipline_and_date, -> { joins(daily_note: [avaliation: :discipline]).order('disciplines.description, avaliations.test_date') } + scope :by_not_poster, ->(poster_sent) { where("daily_note_students.updated_at > ?", poster_sent) } def dependence? self.dependence diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index b238d55ed..b336e872b 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -15,6 +15,7 @@ class RecoveryDiaryRecordStudent < ActiveRecord::Base scope :by_student_id, lambda { |student_id| where(student_id: student_id) } scope :by_recovery_diary_record_id, lambda { |recovery_diary_record_id| where(recovery_diary_record_id: recovery_diary_record_id) } + scope :by_not_poster, ->(poster_sent) { where("recovery_diary_record_students.updated_at > ?", poster_sent) } scope :ordered, -> { joins(:student).order(Student.arel_table[:name]) } diff --git a/app/models/school_term_recovery_diary_record.rb b/app/models/school_term_recovery_diary_record.rb index 2375a76b4..de1d6e157 100644 --- a/app/models/school_term_recovery_diary_record.rb +++ b/app/models/school_term_recovery_diary_record.rb @@ -27,6 +27,7 @@ class SchoolTermRecoveryDiaryRecord < ActiveRecord::Base joins(:recovery_diary_record).where(recovery_diary_records: { discipline_id: discipline_id }) } scope :by_recorded_at, lambda { |recorded_at| where(recorded_at: recorded_at) } + scope :by_not_poster, ->(poster_sent) { where("school_term_recovery_diary_records.updated_at > ?", poster_sent) } scope :ordered, -> { order(arel_table[:recorded_at].desc) } before_validation :set_recorded_at, on: [:create, :update] diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index f8185f424..43a423c93 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -68,6 +68,8 @@ def post_general_classrooms students = fetch_students(daily_frequencies) students.each do |student| + next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, student: student })[:absence] + value = AbsenceCountService.new(student, classroom, start_date, end_date).count absences[classroom.api_code][student.api_code]['valor'] = value @@ -103,6 +105,8 @@ def post_by_discipline_classrooms students = fetch_students(daily_frequencies) students.each do |student| + next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, discipline: discipline, student: student })[:absence] + value = AbsenceCountService.new(student, classroom, start_date, end_date, discipline).count absences[classroom.api_code][student.api_code][discipline.api_code]['valor'] = value @@ -167,7 +171,7 @@ def step_end_at(classroom) def fetch_students(daily_frequencies) students_ids = [] daily_frequencies.each do |d| - students_ids << d.students.by_not_poster(@post_data_last.try(:created_at)).map(&:student_id) + students_ids << d.students.map(&:student_id) end students_ids.flatten!.uniq! if students_ids.any? Student.find(students_ids) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 911b9c714..f94527588 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -101,5 +101,41 @@ def can_post?(classroom) same_unity?(classroom) && step_exists_for_classroom?(classroom) end + + def not_posted?(api_posting_type, options = { classroom: nil, discipline: nil, student: nil }) + not_posted = { absence: false, numerical_exam: false } + exist_numerical_exam?(api_posting_type, not_posted, options) + exist_absence?(api_posting_type, not_posted, options) + not_posted + end + + def exist_absence?(api_posting_type, not_posted, options) + if api_posting_type.eql?(ApiPostingTypes::ABSENCE) + if options[:discipline].present? + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + else + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + end + + not_posted[:absence] = daily_frequency_students.try(:any?) + end + end + + def exist_numerical_exam?(api_posting_type, not_posted, options) + if api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_not_poster(@post_data_last.created_at) + + daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) + .by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + + not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) + end + end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 486c89817..5258de80b 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -71,6 +71,7 @@ def post_by_classrooms next if exempted_discipline(classroom, discipline.id, student_score.id) next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) + next unless not_posted?(ApiPostingTypes::NUMERICAL_EXAM,{ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) @@ -155,5 +156,6 @@ def exempted_discipline(classroom, discipline_id, student_id) false end + end end diff --git a/app/workers/ieducar_exam_posting_worker.rb b/app/workers/ieducar_exam_posting_worker.rb index adc3d768e..199fda0a7 100644 --- a/app/workers/ieducar_exam_posting_worker.rb +++ b/app/workers/ieducar_exam_posting_worker.rb @@ -29,17 +29,17 @@ def perform(entity_id, posting_id, posting_last_id) case posting.post_type when ApiPostingTypes::NUMERICAL_EXAM, ApiPostingTypes::SCHOOL_TERM_RECOVERY - ExamPoster::NumericalExamPoster.post!(posting, entity_id) + ExamPoster::NumericalExamPoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::CONCEPTUAL_EXAM queue = SmartEnqueuer.new(EXAM_POSTING_QUEUES).less_used_queue - ExamPoster::ConceptualExamPoster.post!(posting, entity_id, queue) + ExamPoster::ConceptualExamPoster.post!(posting, entity_id, posting_last, queue) when ApiPostingTypes::DESCRIPTIVE_EXAM - ExamPoster::DescriptiveExamPoster.post!(posting, entity_id) + ExamPoster::DescriptiveExamPoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::ABSENCE ExamPoster::AbsencePoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::FINAL_RECOVERY - ExamPoster::FinalRecoveryPoster.post!(posting, entity_id) + ExamPoster::FinalRecoveryPoster.post!(posting, entity_id, posting_last) end end end diff --git a/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb b/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb new file mode 100644 index 000000000..ca40658de --- /dev/null +++ b/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb @@ -0,0 +1,7 @@ +class AddTimestampsToRecoveryDiaryRecord < ActiveRecord::Migration + def change + add_timestamps(:recovery_diary_record_students) + add_timestamps(:school_term_recovery_diary_records) + + end +end From 11e7cdf88c34883748e1da570a90d8983fe8b2c7 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 3 Nov 2021 09:30:58 -0300 Subject: [PATCH 004/304] =?UTF-8?q?refatora=C3=A7=C3=A3o(enviar=5Favalia?= =?UTF-8?q?=C3=A7=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20num?= =?UTF-8?q?=C3=A9rica=20e=20frequ=E1=BA=BDncias=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/absence_poster.rb | 4 +- app/services/exam_poster/base.rb | 46 ++++++++++--------- .../exam_poster/numerical_exam_poster.rb | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index 43a423c93..488543b3b 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -68,7 +68,7 @@ def post_general_classrooms students = fetch_students(daily_frequencies) students.each do |student| - next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, student: student })[:absence] + next unless not_posted?({ classroom: classroom, student: student })[:absence] value = AbsenceCountService.new(student, classroom, start_date, end_date).count @@ -105,7 +105,7 @@ def post_by_discipline_classrooms students = fetch_students(daily_frequencies) students.each do |student| - next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, discipline: discipline, student: student })[:absence] + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student })[:absence] value = AbsenceCountService.new(student, classroom, start_date, end_date, discipline).count diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index f94527588..61298a799 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -102,40 +102,42 @@ def can_post?(classroom) step_exists_for_classroom?(classroom) end - def not_posted?(api_posting_type, options = { classroom: nil, discipline: nil, student: nil }) + def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) + return { absence: true, numerical_exam: true } if @post_data_last.nil? + not_posted = { absence: false, numerical_exam: false } - exist_numerical_exam?(api_posting_type, not_posted, options) - exist_absence?(api_posting_type, not_posted, options) + exist_numerical_exam?(@post_data.post_type, not_posted, options) + exist_absence?(@post_data.post_type, not_posted, options) not_posted end def exist_absence?(api_posting_type, not_posted, options) - if api_posting_type.eql?(ApiPostingTypes::ABSENCE) - if options[:discipline].present? - daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) - else - daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) - end + return unless api_posting_type.eql?(ApiPostingTypes::ABSENCE) - not_posted[:absence] = daily_frequency_students.try(:any?) + if options[:discipline].present? + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) + else + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) end + + not_posted[:absence] = daily_frequency_students.try(:any?) end def exist_numerical_exam?(api_posting_type, not_posted, options) - if api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) - student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) - .by_not_poster(@post_data_last.created_at) + return unless api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) - daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) - .by_classroom_id(options[:classroom]) - .by_student_id(options[:student]) - .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_not_poster(@post_data_last.try(:created_at)) - not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) - end + daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) + .by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 5258de80b..9ed0a0ec7 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -71,7 +71,7 @@ def post_by_classrooms next if exempted_discipline(classroom, discipline.id, student_score.id) next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) - next unless not_posted?(ApiPostingTypes::NUMERICAL_EXAM,{ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) From b3bcf8d1c25a8d20df7b4c77a540a043f1ae3f9a Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 4 Nov 2021 10:34:38 -0300 Subject: [PATCH 005/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20recupera=C3=A7=C3=A3o=20de=20eta?= =?UTF-8?q?pas=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 23 +++++++++++++++++++ .../exam_poster/numerical_exam_poster.rb | 4 +++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 61298a799..63b103c80 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -108,6 +108,7 @@ def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) not_posted = { absence: false, numerical_exam: false } exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_absence?(@post_data.post_type, not_posted, options) + exist_school_term_recovery?(@post_data.post_type, not_posted, options) not_posted end @@ -139,5 +140,27 @@ def exist_numerical_exam?(api_posting_type, not_posted, options) not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) end + + def exist_school_term_recovery?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::SCHOOL_TERM_RECOVERY) + + school_term_recovery_diary_record = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + .by_discipline_id(options[:discipline]) + .by_step_id( + options[:classroom], + get_step(options[:classroom]).id + ) + .first + + return unless school_term_recovery_diary_record + + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + school_term_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + + + not_posted[:school_term_recovery] = student_recovery.try(:any?) + end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 9ed0a0ec7..51eb192d5 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -78,12 +78,14 @@ def post_by_classrooms next if exempted_discipline_ids.include?(discipline.id) - school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) if (value = StudentAverageCalculator.new(student_score) .calculate(classroom, discipline, get_step(classroom))) scores[classroom.api_code][student_score.api_code][discipline.api_code]['nota'] = value end + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] + + school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) next unless school_term_recovery if (recovery_value = score_rounder.round(school_term_recovery)) From a7f24497b77ba6f3c99aad82bb65f0de8b1417ea Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 4 Nov 2021 15:04:02 -0300 Subject: [PATCH 006/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20descritiva?= =?UTF-8?q?=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/descriptive_exam_student.rb | 2 ++ app/services/exam_poster/base.rb | 15 +++++++++++++-- .../exam_poster/descriptive_exam_poster.rb | 3 +++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/models/descriptive_exam_student.rb b/app/models/descriptive_exam_student.rb index 086647834..1bc0c876a 100644 --- a/app/models/descriptive_exam_student.rb +++ b/app/models/descriptive_exam_student.rb @@ -24,6 +24,8 @@ class DescriptiveExamStudent < ActiveRecord::Base ) } scope :ordered, -> { order(:updated_at) } + scope :by_not_poster, ->(poster_sent) { where("descriptive_exam_students.updated_at > ?", poster_sent) } + validates :descriptive_exam, :student, presence: true end diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 63b103c80..f4ee0ab39 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,12 +103,13 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } - exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_absence?(@post_data.post_type, not_posted, options) + exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_school_term_recovery?(@post_data.post_type, not_posted, options) + exist_descriptive_exam?(@post_data.post_type, not_posted, options) not_posted end @@ -162,5 +163,15 @@ def exist_school_term_recovery?(api_posting_type, not_posted, options) not_posted[:school_term_recovery] = student_recovery.try(:any?) end + + def exist_descriptive_exam?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::DESCRIPTIVE_EXAM) + + descriptive_exam_students = DescriptiveExamStudent.by_classroom_and_discipline(options[:classroom], options[:discipline]) + .by_student_id(options[:student]) + .by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:descriptive_exam] = descriptive_exam_students.try(:any?) + end end end diff --git a/app/services/exam_poster/descriptive_exam_poster.rb b/app/services/exam_poster/descriptive_exam_poster.rb index f8188e4df..e78e7dbd6 100644 --- a/app/services/exam_poster/descriptive_exam_poster.rb +++ b/app/services/exam_poster/descriptive_exam_poster.rb @@ -132,6 +132,7 @@ def post_by_year exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.uses_differentiated_exam_rule, OpinionTypes::BY_YEAR, classroom.first_exam_rule @@ -161,6 +162,7 @@ def post_by_year_and_discipline exams = DescriptiveExamStudent.joins(:student).by_classroom_and_discipline(classroom, discipline).ordered exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, discipline: discipline, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.try(:uses_differentiated_exam_rule), OpinionTypes::BY_YEAR_AND_DISCIPLINE, @@ -199,6 +201,7 @@ def post_by_step_and_discipline exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, discipline: discipline, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.try(:uses_differentiated_exam_rule), OpinionTypes::BY_STEP_AND_DISCIPLINE, From c4eec42b77d365f2fa41857ab0e3d7a31e110429 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Tue, 9 Nov 2021 17:47:27 -0300 Subject: [PATCH 007/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20conceitual?= =?UTF-8?q?=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/conceptual_exam_value.rb | 1 + app/services/exam_poster/base.rb | 18 ++++++++++++++++-- .../exam_poster/conceptual_exam_poster.rb | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/models/conceptual_exam_value.rb b/app/models/conceptual_exam_value.rb index 1bbe0af2b..c21007fa8 100644 --- a/app/models/conceptual_exam_value.rb +++ b/app/models/conceptual_exam_value.rb @@ -16,6 +16,7 @@ class ConceptualExamValue < ActiveRecord::Base scope :by_discipline_id, lambda { |discipline_id| where(discipline_id: discipline_id) } scope :by_conceptual_exam_id, lambda { |conceptual_exam_id| where(conceptual_exam_id: conceptual_exam_id) } + scope :by_not_poster, ->(poster_sent) { where("conceptual_exam_values.updated_at > ?", poster_sent) } def self.active(join_conceptual_exam = true) scoped = if join_conceptual_exam diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index f4ee0ab39..aac913ff3 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,13 +103,14 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } exist_absence?(@post_data.post_type, not_posted, options) exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_school_term_recovery?(@post_data.post_type, not_posted, options) exist_descriptive_exam?(@post_data.post_type, not_posted, options) + exist_conceptual_exam?(@post_data.post_type, not_posted, options) not_posted end @@ -160,7 +161,6 @@ def exist_school_term_recovery?(api_posting_type, not_posted, options) school_term_recovery_diary_record.recovery_diary_record_id ).by_not_poster(@post_data_last.try(:created_at)) - not_posted[:school_term_recovery] = student_recovery.try(:any?) end @@ -173,5 +173,19 @@ def exist_descriptive_exam?(api_posting_type, not_posted, options) not_posted[:descriptive_exam] = descriptive_exam_students.try(:any?) end + + def exist_conceptual_exam?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::CONCEPTUAL_EXAM) + + conceptual_exam = ConceptualExam.by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_discipline(options[:discipline]).first + + return unless conceptual_exam + + conceptual_exam_values = conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) + end end end diff --git a/app/services/exam_poster/conceptual_exam_poster.rb b/app/services/exam_poster/conceptual_exam_poster.rb index 8cfb50bb8..99bd7de38 100644 --- a/app/services/exam_poster/conceptual_exam_poster.rb +++ b/app/services/exam_poster/conceptual_exam_poster.rb @@ -52,6 +52,8 @@ def post_conceptual_exams conceptual_exam_values.each do |conceptual_exam_value| conceptual_exam = conceptual_exam_value.conceptual_exam + next unless not_posted?({ classroom: classroom, student: conceptual_exam.student, discipline: conceptual_exam_value.discipline })[:conceptual_exam] + if conceptual_exam_value.value.blank? student_name = conceptual_exam.student.name classroom_description = conceptual_exam.classroom.description From 1f3abb1df2be86c2a9f5dd1e5ec2736388003cda Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 11 Nov 2021 11:12:25 -0300 Subject: [PATCH 008/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20recupera=C3=A7=C3=A3o=20final=20?= =?UTF-8?q?n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 20 ++++++++++++++++++- .../exam_poster/final_recovery_poster.rb | 10 +++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index aac913ff3..0519e2d94 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,7 +103,7 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true, final_recovery: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } exist_absence?(@post_data.post_type, not_posted, options) @@ -111,6 +111,7 @@ def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) exist_school_term_recovery?(@post_data.post_type, not_posted, options) exist_descriptive_exam?(@post_data.post_type, not_posted, options) exist_conceptual_exam?(@post_data.post_type, not_posted, options) + exist_final_recovery?(@post_data.post_type, not_posted, options) not_posted end @@ -187,5 +188,22 @@ def exist_conceptual_exam?(api_posting_type, not_posted, options) not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) end + + def exist_final_recovery?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::FINAL_RECOVERY) + + final_recovery_diary_record = FinalRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + .by_discipline_id(options[:discipline]) + .first + + return unless final_recovery_diary_record + + student_recoveries = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + final_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:final_recovery] = student_recoveries.try(:any?) + end end end diff --git a/app/services/exam_poster/final_recovery_poster.rb b/app/services/exam_poster/final_recovery_poster.rb index f3da00ed4..af3b2cbe6 100644 --- a/app/services/exam_poster/final_recovery_poster.rb +++ b/app/services/exam_poster/final_recovery_poster.rb @@ -48,10 +48,14 @@ def build_params RoundedAvaliations::FINAL_RECOVERY ) - final_recovery_diary_record.recovery_diary_record.students.each do |student| - value = score_rounder.round(student.score) + final_recovery_diary_record.recovery_diary_record.students.each do |recovery_diary_record_student| + next unless not_posted?({ classroom: recovery_diary_record_student.recovery_diary_record.classroom, + discipline: recovery_diary_record_student.recovery_diary_record.discipline, + student: recovery_diary_record_student.student })[:final_recovery] - params[classroom_api_code][student.student.api_code][discipline_api_code]['nota'] = value + value = score_rounder.round(recovery_diary_record_student.score) + + params[classroom_api_code][recovery_diary_record_student.student.api_code][discipline_api_code]['nota'] = value end end From aa53c867bcff856948983e162113637fb9ae74a4 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Fri, 19 Nov 2021 15:12:38 -0300 Subject: [PATCH 009/304] =?UTF-8?q?resolver(enviar=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20enviar=20somente=20avalia=C3=A7=C3=A3o=20conceitual=20n?= =?UTF-8?q?=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 0519e2d94..efd977389 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -178,13 +178,19 @@ def exist_descriptive_exam?(api_posting_type, not_posted, options) def exist_conceptual_exam?(api_posting_type, not_posted, options) return unless api_posting_type.eql?(ApiPostingTypes::CONCEPTUAL_EXAM) - conceptual_exam = ConceptualExam.by_classroom_id(options[:classroom]) + conceptual_exams = ConceptualExam.by_classroom_id(options[:classroom]) .by_student_id(options[:student]) - .by_discipline(options[:discipline]).first + .by_discipline(options[:discipline]) - return unless conceptual_exam + return unless conceptual_exams.any? - conceptual_exam_values = conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + conceptual_exam_values = [] + + conceptual_exams.each do |conceptual_exam| + conceptual_exam_values.push conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + end + + conceptual_exam_values.reject! { |c| c.empty? } not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) end From 2f582a304234a3be46e34d72cad7345b4c0ea9c2 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 24 Nov 2021 16:48:56 -0300 Subject: [PATCH 010/304] =?UTF-8?q?resolver(enviar=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20recupera=C3=A7=C3=A3o=20por=20etapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 21 ++++++++++++------- .../exam_poster/numerical_exam_poster.rb | 8 ++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index efd977389..e39aa32bf 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -147,22 +147,27 @@ def exist_numerical_exam?(api_posting_type, not_posted, options) def exist_school_term_recovery?(api_posting_type, not_posted, options) return unless api_posting_type.eql?(ApiPostingTypes::SCHOOL_TERM_RECOVERY) - school_term_recovery_diary_record = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + school_term_recovery_diary_records = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) .by_discipline_id(options[:discipline]) .by_step_id( options[:classroom], get_step(options[:classroom]).id ) - .first - return unless school_term_recovery_diary_record + return unless school_term_recovery_diary_records.any? - student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) - .by_recovery_diary_record_id( - school_term_recovery_diary_record.recovery_diary_record_id - ).by_not_poster(@post_data_last.try(:created_at)) + student_recoveries = [] + + school_term_recovery_diary_records.each do |school_term_recovery_diary_record| + student_recoveries.push RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + school_term_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + end + + student_recoveries.reject! { |c| c.empty? } - not_posted[:school_term_recovery] = student_recovery.try(:any?) + not_posted[:school_term_recovery] = student_recoveries.try(:any?) end def exist_descriptive_exam?(api_posting_type, not_posted, options) diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 51eb192d5..e51a8547c 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -72,6 +72,7 @@ def post_by_classrooms next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + next unless numerical_or_school_term_recovery?(classroom, discipline, student_score) exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) @@ -83,7 +84,6 @@ def post_by_classrooms scores[classroom.api_code][student_score.api_code][discipline.api_code]['nota'] = value end - next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) next unless school_term_recovery @@ -99,6 +99,12 @@ def post_by_classrooms scores end + def numerical_or_school_term_recovery?(classroom, discipline, student_score) + numerical_exam = not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + school_term_recovery = not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] + numerical_exam || school_term_recovery + end + def correct_score_type(differentiated, exam_rule) exam_rule = (exam_rule.differentiated_exam_rule || exam_rule) if differentiated score_types = [ScoreTypes::NUMERIC, ScoreTypes::NUMERIC_AND_CONCEPT] From ef47cb7988016c67055103c8f52d421cb90f311d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Feb 2022 04:41:44 +0000 Subject: [PATCH 011/304] Bump url-parse from 1.5.7 to 1.5.10 Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.7 to 1.5.10. - [Release notes](https://github.com/unshiftio/url-parse/releases) - [Commits](https://github.com/unshiftio/url-parse/compare/1.5.7...1.5.10) --- updated-dependencies: - dependency-name: url-parse dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 96d22a34e..955b39856 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7265,9 +7265,9 @@ urix@^0.1.0: integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse@^1.4.3: - version "1.5.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" - integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" From 41b0f65363f84b6779d5c99d227cdc7c7772c866 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 13 Oct 2021 15:39:02 -0300 Subject: [PATCH 012/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20faltas=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ieducar_api_exam_postings_controller.rb | 18 ++++++++++-------- app/models/daily_frequency.rb | 1 + app/models/daily_frequency_student.rb | 1 + app/services/exam_poster/absence_poster.rb | 9 ++++----- app/services/exam_poster/base.rb | 7 ++++--- app/workers/ieducar_exam_posting_worker.rb | 5 +++-- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/app/controllers/ieducar_api_exam_postings_controller.rb b/app/controllers/ieducar_api_exam_postings_controller.rb index c5c5e8c6f..ad01cc910 100644 --- a/app/controllers/ieducar_api_exam_postings_controller.rb +++ b/app/controllers/ieducar_api_exam_postings_controller.rb @@ -11,14 +11,16 @@ def index def create authorize(IeducarApiExamPosting.new) - ieducar_api_exam_posting = IeducarApiExamPosting.new(permitted_attributes) - ieducar_api_exam_posting.author = current_user - ieducar_api_exam_posting.teacher = current_user.current_teacher - ieducar_api_exam_posting.status = ApiSynchronizationStatus::STARTED - ieducar_api_exam_posting.ieducar_api_configuration = IeducarApiConfiguration.current - ieducar_api_exam_posting.save! - - jid = IeducarExamPostingWorker.perform_in(5.seconds, current_entity.id, ieducar_api_exam_posting.id) + new_permitted_attributes = permitted_attributes.merge!({ author: current_user }) + new_permitted_attributes = new_permitted_attributes.merge!({ teacher: current_user.current_teacher }) + new_permitted_attributes = new_permitted_attributes.merge!({ ieducar_api_configuration: IeducarApiConfiguration.current }) + new_permitted_attributes = new_permitted_attributes.merge!({ status: ApiSynchronizationStatus::STARTED }) + + ieducar_api_exam_posting = IeducarApiExamPosting.create!(new_permitted_attributes) + + ieducar_api_exam_posting_last = IeducarApiExamPosting.where(new_permitted_attributes.merge({status: ApiSynchronizationStatus::COMPLETED })).last + + jid = IeducarExamPostingWorker.perform_in(5.seconds, current_entity.id, ieducar_api_exam_posting.id, ieducar_api_exam_posting_last.try(:id)) WorkerBatch.create!( main_job_class: 'IeducarExamPostingWorker', diff --git a/app/models/daily_frequency.rb b/app/models/daily_frequency.rb index 2cae7613d..1b39a66cb 100644 --- a/app/models/daily_frequency.rb +++ b/app/models/daily_frequency.rb @@ -73,6 +73,7 @@ class DailyFrequency < ActiveRecord::Base scope :by_frequency_date_between, lambda { |start_at, end_at| where(frequency_date: start_at.to_date..end_at.to_date) } scope :by_class_number, lambda { |class_number| where(class_number: class_number) } scope :by_school_calendar_id, ->(school_calendar_id) { where(school_calendar_id: school_calendar_id) } + scope :by_not_poster, ->(poster_sent) { joins(:students).where("daily_frequency_students.updated_at > ?", poster_sent) } scope :general_frequency, lambda { where(discipline_id: nil, class_number: nil) } scope :has_frequency_for_student, lambda{ |student_id| joins(:students).merge(DailyFrequencyStudent.by_student_id(student_id)) } scope :order_by_student_name, -> { order('students.name') } diff --git a/app/models/daily_frequency_student.rb b/app/models/daily_frequency_student.rb index 42a7cc458..d5007bbc9 100644 --- a/app/models/daily_frequency_student.rb +++ b/app/models/daily_frequency_student.rb @@ -31,6 +31,7 @@ class DailyFrequencyStudent < ActiveRecord::Base scope :by_student_id, lambda { |student_id| where(student_id: student_id) } scope :by_frequency_date, lambda { |frequency_date| joins(:daily_frequency).merge(DailyFrequency.by_frequency_date(frequency_date)) } scope :by_frequency_date_between, lambda { |start_at, end_at| joins(:daily_frequency).merge(DailyFrequency.by_frequency_date_between(start_at, end_at)) } + scope :by_not_poster, ->(poster_sent) { where("daily_frequency_students.updated_at > ?", poster_sent) } scope :general_by_classroom_student_date_between, lambda { |classroom_id, student_id, start_at, end_at| where( 'daily_frequencies.classroom_id' => classroom_id, diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index 21e955b3b..f8185f424 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -62,10 +62,7 @@ def post_general_classrooms end_date = step_end_at(classroom) daily_frequencies = DailyFrequency.by_classroom_id(classroom.id) - .by_frequency_date_between( - start_date, - end_date - ) + .by_frequency_date_between(start_date,end_date) .general_frequency students = fetch_students(daily_frequencies) @@ -169,7 +166,9 @@ def step_end_at(classroom) def fetch_students(daily_frequencies) students_ids = [] - daily_frequencies.each { |d| students_ids << d.students.map(&:student_id) } + daily_frequencies.each do |d| + students_ids << d.students.by_not_poster(@post_data_last.try(:created_at)).map(&:student_id) + end students_ids.flatten!.uniq! if students_ids.any? Student.find(students_ids) end diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 7a054dd11..911b9c714 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -4,8 +4,9 @@ class InvalidClassroomError < StandardError; end attr_accessor :warning_messages, :requests - def initialize(post_data, entity_id, queue = nil) + def initialize(post_data, entity_id, post_data_last = nil, queue = nil) @post_data = post_data + @post_data_last = post_data_last @entity_id = entity_id @worker_batch = post_data.worker_batch @warning_messages = [] @@ -13,8 +14,8 @@ def initialize(post_data, entity_id, queue = nil) @queue = queue || 'critical' end - def self.post!(post_data, entity_id, queue = nil) - new(post_data, entity_id, queue).post! + def self.post!(post_data, entity_id, post_data_last = nil, queue = nil) + new(post_data, entity_id, post_data_last, queue).post! end def post! diff --git a/app/workers/ieducar_exam_posting_worker.rb b/app/workers/ieducar_exam_posting_worker.rb index d70555a70..adc3d768e 100644 --- a/app/workers/ieducar_exam_posting_worker.rb +++ b/app/workers/ieducar_exam_posting_worker.rb @@ -20,11 +20,12 @@ class IeducarExamPostingWorker Honeybadger.notify(exception) end - def perform(entity_id, posting_id) + def perform(entity_id, posting_id, posting_last_id) entity = Entity.find(entity_id) entity.using_connection do posting = IeducarApiExamPosting.find(posting_id) + posting_last = IeducarApiExamPosting.find_by(id: posting_last_id) case posting.post_type when ApiPostingTypes::NUMERICAL_EXAM, ApiPostingTypes::SCHOOL_TERM_RECOVERY @@ -36,7 +37,7 @@ def perform(entity_id, posting_id) when ApiPostingTypes::DESCRIPTIVE_EXAM ExamPoster::DescriptiveExamPoster.post!(posting, entity_id) when ApiPostingTypes::ABSENCE - ExamPoster::AbsencePoster.post!(posting, entity_id) + ExamPoster::AbsencePoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::FINAL_RECOVERY ExamPoster::FinalRecoveryPoster.post!(posting, entity_id) end From a218caa0b0c4b5ea2c48b7ac5ef2a74c5d8cbf9e Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 28 Oct 2021 17:26:59 -0300 Subject: [PATCH 013/304] =?UTF-8?q?refatora=C3=A7=C3=A3o(enviar=5Favalia?= =?UTF-8?q?=C3=A7=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20num?= =?UTF-8?q?=C3=A9rica=20e=20frequ=E1=BA=BDncias=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/daily_note_student.rb | 1 + app/models/recovery_diary_record_student.rb | 1 + .../school_term_recovery_diary_record.rb | 1 + app/services/exam_poster/absence_poster.rb | 6 +++- app/services/exam_poster/base.rb | 36 +++++++++++++++++++ .../exam_poster/numerical_exam_poster.rb | 2 ++ app/workers/ieducar_exam_posting_worker.rb | 8 ++--- ...add_timestamps_to_recovery_diary_record.rb | 7 ++++ 8 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb diff --git a/app/models/daily_note_student.rb b/app/models/daily_note_student.rb index 219d76cd2..36b368fb7 100644 --- a/app/models/daily_note_student.rb +++ b/app/models/daily_note_student.rb @@ -34,6 +34,7 @@ class DailyNoteStudent < ActiveRecord::Base scope :active, -> { where(active: true) } scope :ordered, -> { joins(:student, daily_note: :avaliation).order(Avaliation.arel_table[:test_date], Student.arel_table[:name]) } scope :order_by_discipline_and_date, -> { joins(daily_note: [avaliation: :discipline]).order('disciplines.description, avaliations.test_date') } + scope :by_not_poster, ->(poster_sent) { where("daily_note_students.updated_at > ?", poster_sent) } def dependence? self.dependence diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index b238d55ed..b336e872b 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -15,6 +15,7 @@ class RecoveryDiaryRecordStudent < ActiveRecord::Base scope :by_student_id, lambda { |student_id| where(student_id: student_id) } scope :by_recovery_diary_record_id, lambda { |recovery_diary_record_id| where(recovery_diary_record_id: recovery_diary_record_id) } + scope :by_not_poster, ->(poster_sent) { where("recovery_diary_record_students.updated_at > ?", poster_sent) } scope :ordered, -> { joins(:student).order(Student.arel_table[:name]) } diff --git a/app/models/school_term_recovery_diary_record.rb b/app/models/school_term_recovery_diary_record.rb index 2375a76b4..de1d6e157 100644 --- a/app/models/school_term_recovery_diary_record.rb +++ b/app/models/school_term_recovery_diary_record.rb @@ -27,6 +27,7 @@ class SchoolTermRecoveryDiaryRecord < ActiveRecord::Base joins(:recovery_diary_record).where(recovery_diary_records: { discipline_id: discipline_id }) } scope :by_recorded_at, lambda { |recorded_at| where(recorded_at: recorded_at) } + scope :by_not_poster, ->(poster_sent) { where("school_term_recovery_diary_records.updated_at > ?", poster_sent) } scope :ordered, -> { order(arel_table[:recorded_at].desc) } before_validation :set_recorded_at, on: [:create, :update] diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index f8185f424..43a423c93 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -68,6 +68,8 @@ def post_general_classrooms students = fetch_students(daily_frequencies) students.each do |student| + next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, student: student })[:absence] + value = AbsenceCountService.new(student, classroom, start_date, end_date).count absences[classroom.api_code][student.api_code]['valor'] = value @@ -103,6 +105,8 @@ def post_by_discipline_classrooms students = fetch_students(daily_frequencies) students.each do |student| + next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, discipline: discipline, student: student })[:absence] + value = AbsenceCountService.new(student, classroom, start_date, end_date, discipline).count absences[classroom.api_code][student.api_code][discipline.api_code]['valor'] = value @@ -167,7 +171,7 @@ def step_end_at(classroom) def fetch_students(daily_frequencies) students_ids = [] daily_frequencies.each do |d| - students_ids << d.students.by_not_poster(@post_data_last.try(:created_at)).map(&:student_id) + students_ids << d.students.map(&:student_id) end students_ids.flatten!.uniq! if students_ids.any? Student.find(students_ids) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 911b9c714..f94527588 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -101,5 +101,41 @@ def can_post?(classroom) same_unity?(classroom) && step_exists_for_classroom?(classroom) end + + def not_posted?(api_posting_type, options = { classroom: nil, discipline: nil, student: nil }) + not_posted = { absence: false, numerical_exam: false } + exist_numerical_exam?(api_posting_type, not_posted, options) + exist_absence?(api_posting_type, not_posted, options) + not_posted + end + + def exist_absence?(api_posting_type, not_posted, options) + if api_posting_type.eql?(ApiPostingTypes::ABSENCE) + if options[:discipline].present? + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + else + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + end + + not_posted[:absence] = daily_frequency_students.try(:any?) + end + end + + def exist_numerical_exam?(api_posting_type, not_posted, options) + if api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_not_poster(@post_data_last.created_at) + + daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) + .by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.created_at) + + not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) + end + end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 9acab3348..61fddaddb 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -71,6 +71,7 @@ def post_by_classrooms next if exempted_discipline(classroom, discipline.id, student_score.id) next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) + next unless not_posted?(ApiPostingTypes::NUMERICAL_EXAM,{ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) @@ -157,5 +158,6 @@ def exempted_discipline(classroom, discipline_id, student_id) false end + end end diff --git a/app/workers/ieducar_exam_posting_worker.rb b/app/workers/ieducar_exam_posting_worker.rb index adc3d768e..199fda0a7 100644 --- a/app/workers/ieducar_exam_posting_worker.rb +++ b/app/workers/ieducar_exam_posting_worker.rb @@ -29,17 +29,17 @@ def perform(entity_id, posting_id, posting_last_id) case posting.post_type when ApiPostingTypes::NUMERICAL_EXAM, ApiPostingTypes::SCHOOL_TERM_RECOVERY - ExamPoster::NumericalExamPoster.post!(posting, entity_id) + ExamPoster::NumericalExamPoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::CONCEPTUAL_EXAM queue = SmartEnqueuer.new(EXAM_POSTING_QUEUES).less_used_queue - ExamPoster::ConceptualExamPoster.post!(posting, entity_id, queue) + ExamPoster::ConceptualExamPoster.post!(posting, entity_id, posting_last, queue) when ApiPostingTypes::DESCRIPTIVE_EXAM - ExamPoster::DescriptiveExamPoster.post!(posting, entity_id) + ExamPoster::DescriptiveExamPoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::ABSENCE ExamPoster::AbsencePoster.post!(posting, entity_id, posting_last) when ApiPostingTypes::FINAL_RECOVERY - ExamPoster::FinalRecoveryPoster.post!(posting, entity_id) + ExamPoster::FinalRecoveryPoster.post!(posting, entity_id, posting_last) end end end diff --git a/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb b/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb new file mode 100644 index 000000000..ca40658de --- /dev/null +++ b/db/migrate/20211028151730_add_timestamps_to_recovery_diary_record.rb @@ -0,0 +1,7 @@ +class AddTimestampsToRecoveryDiaryRecord < ActiveRecord::Migration + def change + add_timestamps(:recovery_diary_record_students) + add_timestamps(:school_term_recovery_diary_records) + + end +end From 6ddfeadce5a1be53922f4f5f8053751edc0c4844 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 3 Nov 2021 09:30:58 -0300 Subject: [PATCH 014/304] =?UTF-8?q?refatora=C3=A7=C3=A3o(enviar=5Favalia?= =?UTF-8?q?=C3=A7=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20num?= =?UTF-8?q?=C3=A9rica=20e=20frequ=E1=BA=BDncias=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/absence_poster.rb | 4 +- app/services/exam_poster/base.rb | 46 ++++++++++--------- .../exam_poster/numerical_exam_poster.rb | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/app/services/exam_poster/absence_poster.rb b/app/services/exam_poster/absence_poster.rb index 43a423c93..488543b3b 100644 --- a/app/services/exam_poster/absence_poster.rb +++ b/app/services/exam_poster/absence_poster.rb @@ -68,7 +68,7 @@ def post_general_classrooms students = fetch_students(daily_frequencies) students.each do |student| - next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, student: student })[:absence] + next unless not_posted?({ classroom: classroom, student: student })[:absence] value = AbsenceCountService.new(student, classroom, start_date, end_date).count @@ -105,7 +105,7 @@ def post_by_discipline_classrooms students = fetch_students(daily_frequencies) students.each do |student| - next unless not_posted?(ApiPostingTypes::ABSENCE,{ classroom: classroom, discipline: discipline, student: student })[:absence] + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student })[:absence] value = AbsenceCountService.new(student, classroom, start_date, end_date, discipline).count diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index f94527588..61298a799 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -102,40 +102,42 @@ def can_post?(classroom) step_exists_for_classroom?(classroom) end - def not_posted?(api_posting_type, options = { classroom: nil, discipline: nil, student: nil }) + def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) + return { absence: true, numerical_exam: true } if @post_data_last.nil? + not_posted = { absence: false, numerical_exam: false } - exist_numerical_exam?(api_posting_type, not_posted, options) - exist_absence?(api_posting_type, not_posted, options) + exist_numerical_exam?(@post_data.post_type, not_posted, options) + exist_absence?(@post_data.post_type, not_posted, options) not_posted end def exist_absence?(api_posting_type, not_posted, options) - if api_posting_type.eql?(ApiPostingTypes::ABSENCE) - if options[:discipline].present? - daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) - else - daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) - end + return unless api_posting_type.eql?(ApiPostingTypes::ABSENCE) - not_posted[:absence] = daily_frequency_students.try(:any?) + if options[:discipline].present? + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_discipline_student_date_between(options[:classroom], options[:discipline], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) + else + daily_frequency_students = DailyFrequencyStudent.general_by_classroom_student_date_between(options[:classroom], options[:student], get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) end + + not_posted[:absence] = daily_frequency_students.try(:any?) end def exist_numerical_exam?(api_posting_type, not_posted, options) - if api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) - student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) - .by_not_poster(@post_data_last.created_at) + return unless api_posting_type.eql?(ApiPostingTypes::NUMERICAL_EXAM) - daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) - .by_classroom_id(options[:classroom]) - .by_student_id(options[:student]) - .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) - .by_not_poster(@post_data_last.created_at) + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_not_poster(@post_data_last.try(:created_at)) - not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) - end + daily_note_student = DailyNoteStudent.by_discipline_id(options[:discipline]) + .by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_test_date_between(get_step(options[:classroom]).start_at, get_step(options[:classroom]).end_at) + .by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 61fddaddb..002d2542f 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -71,7 +71,7 @@ def post_by_classrooms next if exempted_discipline(classroom, discipline.id, student_score.id) next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) - next unless not_posted?(ApiPostingTypes::NUMERICAL_EXAM,{ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) From 724387a8b305bda892db885423414f6e69896d0e Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 4 Nov 2021 10:34:38 -0300 Subject: [PATCH 015/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20recupera=C3=A7=C3=A3o=20de=20eta?= =?UTF-8?q?pas=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 23 +++++++++++++++++++ .../exam_poster/numerical_exam_poster.rb | 4 +++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 61298a799..63b103c80 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -108,6 +108,7 @@ def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) not_posted = { absence: false, numerical_exam: false } exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_absence?(@post_data.post_type, not_posted, options) + exist_school_term_recovery?(@post_data.post_type, not_posted, options) not_posted end @@ -139,5 +140,27 @@ def exist_numerical_exam?(api_posting_type, not_posted, options) not_posted[:numerical_exam] = student_recovery.try(:any?) || daily_note_student.try(:any?) end + + def exist_school_term_recovery?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::SCHOOL_TERM_RECOVERY) + + school_term_recovery_diary_record = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + .by_discipline_id(options[:discipline]) + .by_step_id( + options[:classroom], + get_step(options[:classroom]).id + ) + .first + + return unless school_term_recovery_diary_record + + student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + school_term_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + + + not_posted[:school_term_recovery] = student_recovery.try(:any?) + end end end diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 002d2542f..4d05399d3 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -78,12 +78,14 @@ def post_by_classrooms next if exempted_discipline_ids.include?(discipline.id) - school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) if (value = StudentAverageCalculator.new(student_score) .calculate(classroom, discipline, get_step(classroom))) scores[classroom.api_code][student_score.api_code][discipline.api_code]['nota'] = value end + next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] + + school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) next unless school_term_recovery if (recovery_value = score_rounder.round(school_term_recovery)) From c8758dc6d767585908b482831fa4cc4adc1aef50 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 4 Nov 2021 15:04:02 -0300 Subject: [PATCH 016/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20descritiva?= =?UTF-8?q?=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/descriptive_exam_student.rb | 2 ++ app/services/exam_poster/base.rb | 15 +++++++++++++-- .../exam_poster/descriptive_exam_poster.rb | 3 +++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/models/descriptive_exam_student.rb b/app/models/descriptive_exam_student.rb index 086647834..1bc0c876a 100644 --- a/app/models/descriptive_exam_student.rb +++ b/app/models/descriptive_exam_student.rb @@ -24,6 +24,8 @@ class DescriptiveExamStudent < ActiveRecord::Base ) } scope :ordered, -> { order(:updated_at) } + scope :by_not_poster, ->(poster_sent) { where("descriptive_exam_students.updated_at > ?", poster_sent) } + validates :descriptive_exam, :student, presence: true end diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 63b103c80..f4ee0ab39 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,12 +103,13 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } - exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_absence?(@post_data.post_type, not_posted, options) + exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_school_term_recovery?(@post_data.post_type, not_posted, options) + exist_descriptive_exam?(@post_data.post_type, not_posted, options) not_posted end @@ -162,5 +163,15 @@ def exist_school_term_recovery?(api_posting_type, not_posted, options) not_posted[:school_term_recovery] = student_recovery.try(:any?) end + + def exist_descriptive_exam?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::DESCRIPTIVE_EXAM) + + descriptive_exam_students = DescriptiveExamStudent.by_classroom_and_discipline(options[:classroom], options[:discipline]) + .by_student_id(options[:student]) + .by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:descriptive_exam] = descriptive_exam_students.try(:any?) + end end end diff --git a/app/services/exam_poster/descriptive_exam_poster.rb b/app/services/exam_poster/descriptive_exam_poster.rb index f8188e4df..e78e7dbd6 100644 --- a/app/services/exam_poster/descriptive_exam_poster.rb +++ b/app/services/exam_poster/descriptive_exam_poster.rb @@ -132,6 +132,7 @@ def post_by_year exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.uses_differentiated_exam_rule, OpinionTypes::BY_YEAR, classroom.first_exam_rule @@ -161,6 +162,7 @@ def post_by_year_and_discipline exams = DescriptiveExamStudent.joins(:student).by_classroom_and_discipline(classroom, discipline).ordered exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, discipline: discipline, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.try(:uses_differentiated_exam_rule), OpinionTypes::BY_YEAR_AND_DISCIPLINE, @@ -199,6 +201,7 @@ def post_by_step_and_discipline exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, discipline: discipline, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.try(:uses_differentiated_exam_rule), OpinionTypes::BY_STEP_AND_DISCIPLINE, From 6ac6f74f6c37e20fc73aa27ff9eb48ee66a8e301 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Tue, 9 Nov 2021 17:47:27 -0300 Subject: [PATCH 017/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20avalia=C3=A7=C3=A3o=20conceitual?= =?UTF-8?q?=20n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/conceptual_exam_value.rb | 1 + app/services/exam_poster/base.rb | 18 ++++++++++++++++-- .../exam_poster/conceptual_exam_poster.rb | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/models/conceptual_exam_value.rb b/app/models/conceptual_exam_value.rb index 1bbe0af2b..c21007fa8 100644 --- a/app/models/conceptual_exam_value.rb +++ b/app/models/conceptual_exam_value.rb @@ -16,6 +16,7 @@ class ConceptualExamValue < ActiveRecord::Base scope :by_discipline_id, lambda { |discipline_id| where(discipline_id: discipline_id) } scope :by_conceptual_exam_id, lambda { |conceptual_exam_id| where(conceptual_exam_id: conceptual_exam_id) } + scope :by_not_poster, ->(poster_sent) { where("conceptual_exam_values.updated_at > ?", poster_sent) } def self.active(join_conceptual_exam = true) scoped = if join_conceptual_exam diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index f4ee0ab39..aac913ff3 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,13 +103,14 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } exist_absence?(@post_data.post_type, not_posted, options) exist_numerical_exam?(@post_data.post_type, not_posted, options) exist_school_term_recovery?(@post_data.post_type, not_posted, options) exist_descriptive_exam?(@post_data.post_type, not_posted, options) + exist_conceptual_exam?(@post_data.post_type, not_posted, options) not_posted end @@ -160,7 +161,6 @@ def exist_school_term_recovery?(api_posting_type, not_posted, options) school_term_recovery_diary_record.recovery_diary_record_id ).by_not_poster(@post_data_last.try(:created_at)) - not_posted[:school_term_recovery] = student_recovery.try(:any?) end @@ -173,5 +173,19 @@ def exist_descriptive_exam?(api_posting_type, not_posted, options) not_posted[:descriptive_exam] = descriptive_exam_students.try(:any?) end + + def exist_conceptual_exam?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::CONCEPTUAL_EXAM) + + conceptual_exam = ConceptualExam.by_classroom_id(options[:classroom]) + .by_student_id(options[:student]) + .by_discipline(options[:discipline]).first + + return unless conceptual_exam + + conceptual_exam_values = conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) + end end end diff --git a/app/services/exam_poster/conceptual_exam_poster.rb b/app/services/exam_poster/conceptual_exam_poster.rb index 8cfb50bb8..99bd7de38 100644 --- a/app/services/exam_poster/conceptual_exam_poster.rb +++ b/app/services/exam_poster/conceptual_exam_poster.rb @@ -52,6 +52,8 @@ def post_conceptual_exams conceptual_exam_values.each do |conceptual_exam_value| conceptual_exam = conceptual_exam_value.conceptual_exam + next unless not_posted?({ classroom: classroom, student: conceptual_exam.student, discipline: conceptual_exam_value.discipline })[:conceptual_exam] + if conceptual_exam_value.value.blank? student_name = conceptual_exam.student.name classroom_description = conceptual_exam.classroom.description From 59e7dae036bc820416f4fdf26a3087678520180e Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Thu, 11 Nov 2021 11:12:25 -0300 Subject: [PATCH 018/304] =?UTF-8?q?funcionalidade(enviar=5Favalia=C3=A7?= =?UTF-8?q?=C3=A3o):=20enviar=20somente=20recupera=C3=A7=C3=A3o=20final=20?= =?UTF-8?q?n=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 20 ++++++++++++++++++- .../exam_poster/final_recovery_poster.rb | 10 +++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index aac913ff3..0519e2d94 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -103,7 +103,7 @@ def can_post?(classroom) end def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) - return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true } if @post_data_last.nil? + return { absence: true, numerical_exam: true, school_term_recovery: true, descriptive_exam: true, conceptual_exam: true, final_recovery: true } if @post_data_last.nil? not_posted = { absence: false, numerical_exam: false } exist_absence?(@post_data.post_type, not_posted, options) @@ -111,6 +111,7 @@ def not_posted?(options = { classroom: nil, discipline: nil, student: nil }) exist_school_term_recovery?(@post_data.post_type, not_posted, options) exist_descriptive_exam?(@post_data.post_type, not_posted, options) exist_conceptual_exam?(@post_data.post_type, not_posted, options) + exist_final_recovery?(@post_data.post_type, not_posted, options) not_posted end @@ -187,5 +188,22 @@ def exist_conceptual_exam?(api_posting_type, not_posted, options) not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) end + + def exist_final_recovery?(api_posting_type, not_posted, options) + return unless api_posting_type.eql?(ApiPostingTypes::FINAL_RECOVERY) + + final_recovery_diary_record = FinalRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + .by_discipline_id(options[:discipline]) + .first + + return unless final_recovery_diary_record + + student_recoveries = RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + final_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + + not_posted[:final_recovery] = student_recoveries.try(:any?) + end end end diff --git a/app/services/exam_poster/final_recovery_poster.rb b/app/services/exam_poster/final_recovery_poster.rb index f3da00ed4..af3b2cbe6 100644 --- a/app/services/exam_poster/final_recovery_poster.rb +++ b/app/services/exam_poster/final_recovery_poster.rb @@ -48,10 +48,14 @@ def build_params RoundedAvaliations::FINAL_RECOVERY ) - final_recovery_diary_record.recovery_diary_record.students.each do |student| - value = score_rounder.round(student.score) + final_recovery_diary_record.recovery_diary_record.students.each do |recovery_diary_record_student| + next unless not_posted?({ classroom: recovery_diary_record_student.recovery_diary_record.classroom, + discipline: recovery_diary_record_student.recovery_diary_record.discipline, + student: recovery_diary_record_student.student })[:final_recovery] - params[classroom_api_code][student.student.api_code][discipline_api_code]['nota'] = value + value = score_rounder.round(recovery_diary_record_student.score) + + params[classroom_api_code][recovery_diary_record_student.student.api_code][discipline_api_code]['nota'] = value end end From 924865fde239b9e094e64ae59ebfd63deba8b146 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Fri, 19 Nov 2021 15:12:38 -0300 Subject: [PATCH 019/304] =?UTF-8?q?resolver(enviar=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20enviar=20somente=20avalia=C3=A7=C3=A3o=20conceitual=20n?= =?UTF-8?q?=C3=A3o=20enviadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index 0519e2d94..efd977389 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -178,13 +178,19 @@ def exist_descriptive_exam?(api_posting_type, not_posted, options) def exist_conceptual_exam?(api_posting_type, not_posted, options) return unless api_posting_type.eql?(ApiPostingTypes::CONCEPTUAL_EXAM) - conceptual_exam = ConceptualExam.by_classroom_id(options[:classroom]) + conceptual_exams = ConceptualExam.by_classroom_id(options[:classroom]) .by_student_id(options[:student]) - .by_discipline(options[:discipline]).first + .by_discipline(options[:discipline]) - return unless conceptual_exam + return unless conceptual_exams.any? - conceptual_exam_values = conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + conceptual_exam_values = [] + + conceptual_exams.each do |conceptual_exam| + conceptual_exam_values.push conceptual_exam.conceptual_exam_values.by_not_poster(@post_data_last.try(:created_at)) + end + + conceptual_exam_values.reject! { |c| c.empty? } not_posted[:conceptual_exam] = conceptual_exam_values.try(:any?) end From 84df027223cd78e9955483c3107136a38e8537b1 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 24 Nov 2021 16:48:56 -0300 Subject: [PATCH 020/304] =?UTF-8?q?resolver(enviar=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20recupera=C3=A7=C3=A3o=20por=20etapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/base.rb | 21 ++++++++++++------- .../exam_poster/numerical_exam_poster.rb | 8 ++++++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/services/exam_poster/base.rb b/app/services/exam_poster/base.rb index efd977389..e39aa32bf 100644 --- a/app/services/exam_poster/base.rb +++ b/app/services/exam_poster/base.rb @@ -147,22 +147,27 @@ def exist_numerical_exam?(api_posting_type, not_posted, options) def exist_school_term_recovery?(api_posting_type, not_posted, options) return unless api_posting_type.eql?(ApiPostingTypes::SCHOOL_TERM_RECOVERY) - school_term_recovery_diary_record = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) + school_term_recovery_diary_records = SchoolTermRecoveryDiaryRecord.by_classroom_id(options[:classroom]) .by_discipline_id(options[:discipline]) .by_step_id( options[:classroom], get_step(options[:classroom]).id ) - .first - return unless school_term_recovery_diary_record + return unless school_term_recovery_diary_records.any? - student_recovery = RecoveryDiaryRecordStudent.by_student_id(options[:student]) - .by_recovery_diary_record_id( - school_term_recovery_diary_record.recovery_diary_record_id - ).by_not_poster(@post_data_last.try(:created_at)) + student_recoveries = [] + + school_term_recovery_diary_records.each do |school_term_recovery_diary_record| + student_recoveries.push RecoveryDiaryRecordStudent.by_student_id(options[:student]) + .by_recovery_diary_record_id( + school_term_recovery_diary_record.recovery_diary_record_id + ).by_not_poster(@post_data_last.try(:created_at)) + end + + student_recoveries.reject! { |c| c.empty? } - not_posted[:school_term_recovery] = student_recovery.try(:any?) + not_posted[:school_term_recovery] = student_recoveries.try(:any?) end def exist_descriptive_exam?(api_posting_type, not_posted, options) diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 4d05399d3..2d50adb3d 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -72,6 +72,7 @@ def post_by_classrooms next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + next unless numerical_or_school_term_recovery?(classroom, discipline, student_score) exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids(classroom.id, get_step(classroom).to_number) @@ -83,7 +84,6 @@ def post_by_classrooms scores[classroom.api_code][student_score.api_code][discipline.api_code]['nota'] = value end - next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] school_term_recovery = fetch_school_term_recovery_score(classroom, discipline, student_score.id) next unless school_term_recovery @@ -99,6 +99,12 @@ def post_by_classrooms scores end + def numerical_or_school_term_recovery?(classroom, discipline, student_score) + numerical_exam = not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] + school_term_recovery = not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:school_term_recovery] + numerical_exam || school_term_recovery + end + def correct_score_type(differentiated, exam_rule) return if exam_rule.nil? From 5dc4bede6719bcfbc947dd2b5603fca3a7b26b10 Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Wed, 9 Mar 2022 05:48:37 -0300 Subject: [PATCH 021/304] =?UTF-8?q?resolver(envio=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20avalia=C3=A7=C3=A3o=20descritiva?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/numerical_exam_poster.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/services/exam_poster/numerical_exam_poster.rb b/app/services/exam_poster/numerical_exam_poster.rb index 2d50adb3d..32feef1c3 100644 --- a/app/services/exam_poster/numerical_exam_poster.rb +++ b/app/services/exam_poster/numerical_exam_poster.rb @@ -71,7 +71,6 @@ def post_by_classrooms next if exempted_discipline(classroom, discipline.id, student_score.id) next unless correct_score_type(student_score.uses_differentiated_exam_rule, exam_rule) - next unless not_posted?({ classroom: classroom, discipline: discipline, student: student_score })[:numerical_exam] next unless numerical_or_school_term_recovery?(classroom, discipline, student_score) exempted_discipline_ids = From 288d5cca681e64fad86bd6ce809e5a35e8ae49df Mon Sep 17 00:00:00 2001 From: Bruno Date: Thu, 10 Mar 2022 16:14:11 -0300 Subject: [PATCH 022/304] Aloca cache_key para evitar cachear quando for o mesmo professor --- app/services/current_profile.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/services/current_profile.rb b/app/services/current_profile.rb index c04e249c9..840aa20c1 100644 --- a/app/services/current_profile.rb +++ b/app/services/current_profile.rb @@ -116,8 +116,16 @@ def disciplines_as_json disciplines.as_json end + def last_allocation + Rails.cache.fetch("last_teacher_discipline_classroom-#{classroom.id}-#{teacher.id}", expires_in: 1.day) do + TeacherDisciplineClassroom.where(classroom_id: classroom.id, teacher_id: teacher.id) + .last + .cache_key + end + end + def disciplines - cache ['disciplines', classroom&.id, teacher&.id] do + cache ['disciplines', classroom&.id, teacher&.id, last_allocation] do return Discipline.none unless classroom && teacher Discipline.by_teacher_and_classroom(teacher.id, classroom.id) From 95cf7cd016b35be83adbda118f90df308e4c609c Mon Sep 17 00:00:00 2001 From: Bruno Date: Thu, 10 Mar 2022 16:17:22 -0300 Subject: [PATCH 023/304] =?UTF-8?q?Deleta=20cache=20de=20disciplinas=20ap?= =?UTF-8?q?=C3=B3s=20salvar=20o=20novo=20objeto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teacher_discipline_classrooms_synchronizer.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb index 94b7c14d7..17beb5f09 100644 --- a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb +++ b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb @@ -3,8 +3,8 @@ def synchronize! update_teacher_discipline_classrooms( HashDecorator.new( api.fetch( - ano: year, - escola: unity_api_code + ano: 2021, + escola: 13170 )['vinculos'] ) ) @@ -96,6 +96,10 @@ def create_or_update_teacher_discipline_classrooms( teacher_discipline_classroom.active = true if teacher_discipline_classroom.active.nil? teacher_discipline_classroom.save! if teacher_discipline_classroom.changed? + cache_key = "last_teacher_discipline_classroom-#{classroom_id}-#{teacher_id}" + + Rails.cache.delete(cache_key) + teacher_discipline_classroom.discard_or_undiscard(false) end From 795deea37544cd446b626f13a16c002987d64440 Mon Sep 17 00:00:00 2001 From: Bruno Date: Thu, 10 Mar 2022 16:23:40 -0300 Subject: [PATCH 024/304] =?UTF-8?q?Ajusta=20parametros=20da=20sincroniza?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teacher_discipline_classrooms_synchronizer.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb index 17beb5f09..a89c5d0f3 100644 --- a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb +++ b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb @@ -3,8 +3,8 @@ def synchronize! update_teacher_discipline_classrooms( HashDecorator.new( api.fetch( - ano: 2021, - escola: 13170 + ano: year, + escola: unity_api_code )['vinculos'] ) ) From 1fe6957613a4d35593759f4d5eaa66898873e4b7 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 17:55:46 -0300 Subject: [PATCH 025/304] =?UTF-8?q?Adiciona=20campo=20'nota=20m=C3=ADnima'?= =?UTF-8?q?=20em=20configura=C3=A7=C3=A3o=20de=20avalia=C3=A7=C3=A3o=20num?= =?UTF-8?q?=C3=A9rica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/test_settings/_form.html.erb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/views/test_settings/_form.html.erb b/app/views/test_settings/_form.html.erb index 2636b35d4..a139d20ba 100644 --- a/app/views/test_settings/_form.html.erb +++ b/app/views/test_settings/_form.html.erb @@ -69,6 +69,17 @@ <%= f.input :maximum_score %> +
+ <%= f.input :minimum_score, input_html: { rel: 'popover-hover', + data: { + placement: 'top', + content: t('test_settings.form.minimum_score_warn.'), + toggle: 'popover' + } + } + %> +
+
<%= f.input :number_of_decimal_places %>
From d3e194c0704130d734a9528f30dc6a38e0501273 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 17:57:50 -0300 Subject: [PATCH 026/304] Adiciona minimum_score como parametro ao controller de test_setting --- app/controllers/test_settings_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/test_settings_controller.rb b/app/controllers/test_settings_controller.rb index 49577b16b..8b59aa727 100644 --- a/app/controllers/test_settings_controller.rb +++ b/app/controllers/test_settings_controller.rb @@ -102,6 +102,7 @@ def resource_params :year, :school_term_type_step_id, :maximum_score, + :minimum_score, :number_of_decimal_places, :average_calculation_type, :unities, From 46b810f1117f4dbc7b366200a0c688b1fc08100e Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 17:58:55 -0300 Subject: [PATCH 027/304] =?UTF-8?q?Cria=20mensagem=20da=20tolltip,=20de=20?= =?UTF-8?q?erro=20e=20de=20tradu=C3=A7=C3=A3o=20para=20o=20novo=20campo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/models/test_setting.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/locales/models/test_setting.yml b/config/locales/models/test_setting.yml index b7359b515..695acfb4d 100644 --- a/config/locales/models/test_setting.yml +++ b/config/locales/models/test_setting.yml @@ -12,6 +12,7 @@ pt-BR: school_term_type_step: "Período escolar" year: "Ano" maximum_score: "Nota máxima" + minimum_score: "Nota mínima" number_of_decimal_places: "Número de casas decimais" average_calculation_type: "Cálculo da média" responsible_id: "Responsável" @@ -32,9 +33,11 @@ pt-BR: taken: 'já existe uma configuração para esses dados' base: has_avaliation_associated: "Não é possível modificar as configurações de Avaliações numéricas pois existem avaliações vinculadas" + check_minimum_score: "A nota mínima deve ser menor que a nota máxima" test_settings: form: + minimum_score_warn: "A nota mínima será considerada na tela de Diário de avaliações numéricas, não afetando notas complementares ou recuperações" add_test: "Adicionar avaliação" test_fields: remove: "Remover" From 4fda3c82d23309c869f6bb1abb3db7193123b369 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 18:00:04 -0300 Subject: [PATCH 028/304] =?UTF-8?q?Valida=20obrigatoriedade=20e=20se=20not?= =?UTF-8?q?a=20m=C3=ADnima=20=C3=A9=20menor=20que=20nota=20m=C3=A1xima?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/test_setting.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/models/test_setting.rb b/app/models/test_setting.rb index 42afe30ff..ac3d818b6 100644 --- a/app/models/test_setting.rb +++ b/app/models/test_setting.rb @@ -20,12 +20,23 @@ class TestSetting < ActiveRecord::Base scope :by_unities, ->(unities) { where('unities @> ARRAY[?]::integer[]', unities) } scope :by_grades, ->(grades) { where('grades @> ARRAY[?]::integer[]', grades) } + validates :minimum_score, :maximum_score, presence: true + validate :check_minimum_score validate :can_update_test_setting?, on: :update def to_s school_term_type_step ? school_term_humanize : year.to_s end + def check_minimum_score + return false if minimum_score.nil? || maximum_score.nil? + + return true if maximum_score > minimum_score + + errors.add(:base, :check_minimum_score) + false + end + def school_term_humanize return '-' unless school_term_type_step From d5ca3b8f858c215610485d81c13dcab82a8c2495 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 18:01:07 -0300 Subject: [PATCH 029/304] =?UTF-8?q?Adiciona=20nota=20m=C3=ADnima=20como=20?= =?UTF-8?q?validate=20ao=20lan=C3=A7ar=20nota=20para=20estudante=20em=20Di?= =?UTF-8?q?=C3=A1rio=20de=20Avalia=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/daily_note_student.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/models/daily_note_student.rb b/app/models/daily_note_student.rb index 219d76cd2..783f13633 100644 --- a/app/models/daily_note_student.rb +++ b/app/models/daily_note_student.rb @@ -20,7 +20,7 @@ class DailyNoteStudent < ActiveRecord::Base validates :student, presence: true validates :daily_note, presence: true - validates :note, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: lambda { |daily_note_student| daily_note_student.maximum_score } }, allow_blank: true + validates :note, numericality: { greater_than_or_equal_to: :minimum_score, less_than_or_equal_to: lambda { |daily_note_student| daily_note_student.maximum_score } }, allow_blank: true default_scope -> { kept } @@ -47,6 +47,10 @@ def recovered_note recovery_note.to_f > note.to_f ? recovery_note : note end + def minimum_score + daily_note.avaliation.test_setting.minimum_score + end + def recovery_note if has_recovery? recovery_diary_record_id = daily_note.avaliation.recovery_diary_record.id From afd8245f279a234edbc1b239beaf776d2c93d497 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 4 Apr 2022 18:01:44 -0300 Subject: [PATCH 030/304] Cria migration para incluir campo minimum_score na tabela de test_setting --- .../20220404145950_add_minimum_score_to_test_settings.rb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 db/migrate/20220404145950_add_minimum_score_to_test_settings.rb diff --git a/db/migrate/20220404145950_add_minimum_score_to_test_settings.rb b/db/migrate/20220404145950_add_minimum_score_to_test_settings.rb new file mode 100644 index 000000000..9ccc33cdc --- /dev/null +++ b/db/migrate/20220404145950_add_minimum_score_to_test_settings.rb @@ -0,0 +1,7 @@ +class AddMinimumScoreToTestSettings < ActiveRecord::Migration + def change + remove_column :test_settings, :minimum_score + + add_column :test_settings, :minimum_score, :integer, default: 0, null: false + end +end From 3fc77dfe6a5f0bfa5fd32f2b062b8635d9a9ed12 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 5 Apr 2022 08:36:05 -0300 Subject: [PATCH 031/304] =?UTF-8?q?Ajusta=20identa=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/test_settings/_form.html.erb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/app/views/test_settings/_form.html.erb b/app/views/test_settings/_form.html.erb index a139d20ba..01cd43f39 100644 --- a/app/views/test_settings/_form.html.erb +++ b/app/views/test_settings/_form.html.erb @@ -70,13 +70,14 @@
- <%= f.input :minimum_score, input_html: { rel: 'popover-hover', - data: { - placement: 'top', - content: t('test_settings.form.minimum_score_warn.'), - toggle: 'popover' - } - } + <%= f.input :minimum_score, input_html: { + rel: 'popover-hover', + data: { + placement: 'top', + content: t('test_settings.form.minimum_score_warn.'), + toggle: 'popover' + } + } %>
From 4b6ca381dcad1ff319a336c69b7ed850314ff8e6 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 5 Apr 2022 11:56:04 -0300 Subject: [PATCH 032/304] Remove linha usada pra testes local na migration para criar novo campo na tabela test_settings --- ...b => 20220404145951_add_minimum_score_to_test_settings.rb} | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) rename db/migrate/{20220404145950_add_minimum_score_to_test_settings.rb => 20220404145951_add_minimum_score_to_test_settings.rb} (70%) diff --git a/db/migrate/20220404145950_add_minimum_score_to_test_settings.rb b/db/migrate/20220404145951_add_minimum_score_to_test_settings.rb similarity index 70% rename from db/migrate/20220404145950_add_minimum_score_to_test_settings.rb rename to db/migrate/20220404145951_add_minimum_score_to_test_settings.rb index 9ccc33cdc..7b42e5bd2 100644 --- a/db/migrate/20220404145950_add_minimum_score_to_test_settings.rb +++ b/db/migrate/20220404145951_add_minimum_score_to_test_settings.rb @@ -1,7 +1,5 @@ class AddMinimumScoreToTestSettings < ActiveRecord::Migration - def change - remove_column :test_settings, :minimum_score - + def create add_column :test_settings, :minimum_score, :integer, default: 0, null: false end end From 3783934c840108db4cfd4faab94acd73a5a16fc8 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 5 Apr 2022 16:29:42 -0300 Subject: [PATCH 033/304] =?UTF-8?q?Altera=20nome=20do=20m=C3=A9todo=20da?= =?UTF-8?q?=20migration=20para=20rodar=20em=20staging?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....rb => 20220404145952_add_minimum_score_to_test_settings.rb} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename db/migrate/{20220404145951_add_minimum_score_to_test_settings.rb => 20220404145952_add_minimum_score_to_test_settings.rb} (92%) diff --git a/db/migrate/20220404145951_add_minimum_score_to_test_settings.rb b/db/migrate/20220404145952_add_minimum_score_to_test_settings.rb similarity index 92% rename from db/migrate/20220404145951_add_minimum_score_to_test_settings.rb rename to db/migrate/20220404145952_add_minimum_score_to_test_settings.rb index 7b42e5bd2..8a2d67d79 100644 --- a/db/migrate/20220404145951_add_minimum_score_to_test_settings.rb +++ b/db/migrate/20220404145952_add_minimum_score_to_test_settings.rb @@ -1,5 +1,5 @@ class AddMinimumScoreToTestSettings < ActiveRecord::Migration - def create + def change add_column :test_settings, :minimum_score, :integer, default: 0, null: false end end From 5150651f0cfeecb1359f32e81122ea8f224b82d3 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:13:12 -0300 Subject: [PATCH 034/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20traz=20turma?= =?UTF-8?q?s=20baseado=20em=20uma=20escola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/classrooms_controller.rb | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/controllers/classrooms_controller.rb b/app/controllers/classrooms_controller.rb index 0ee514a03..6c97d87f9 100644 --- a/app/controllers/classrooms_controller.rb +++ b/app/controllers/classrooms_controller.rb @@ -27,6 +27,43 @@ def multi_grade render json: current_user_classroom.multi_grade? end + def by_unity + return nil if params[:unity_id].blank? + + render json: classrooms_to_select2(params[:unity_id]) + end + + def classrooms_to_select2(unity_id) + classrooms_to_select2 = [] + + if current_user.teacher? + Classroom.by_unity(unity_id) + .by_year(current_user_school_year || Date.current.year) + .by_teacher_id(current_teacher.id) + .ordered + .each do |classroom| + classrooms_to_select2 << OpenStruct.new( + id: classroom.id, + name: classroom.description.to_s, + text: classroom.description.to_s + ) + end + else + Classroom.by_unity(unity_id) + .by_year(current_user_school_year || Date.current.year) + .ordered + .each do |classroom| + classrooms_to_select2 << OpenStruct.new( + id: classroom.id, + name: classroom.description.to_s, + text: classroom.description.to_s + ) + end + end + + classrooms_to_select2 + end + def show return unless teacher_id = current_teacher.try(:id) id = params[:id] From d36c02cf943e51fc6a4ad3757342e2a923a3b90f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:15:30 -0300 Subject: [PATCH 035/304] =?UTF-8?q?Cria=20m=C3=A9todo=20para=20pegar=20dis?= =?UTF-8?q?ciplinas=20baseado=20em=20uma=20turma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/disciplines_controller.rb | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/controllers/disciplines_controller.rb b/app/controllers/disciplines_controller.rb index 2f915ff46..4d1254d45 100644 --- a/app/controllers/disciplines_controller.rb +++ b/app/controllers/disciplines_controller.rb @@ -54,4 +54,34 @@ def search_grouped_by_knowledge_area render json: disciplines.as_json end + + def by_classroom + return nil if params[:classroom_id].blank? + + render json: disciplines_to_select2(params[:classroom_id]) + end + + def disciplines_to_select2(classroom_id) + disciplines_to_select2 = [] + + if current_user.teacher? + Discipline.by_classroom_id(classroom_id).by_teacher_id(current_teacher.id).each do |discipline| + disciplines_to_select2 << OpenStruct.new( + id: discipline.id, + name: discipline.description.to_s, + text: discipline.description.to_s + ) + end + else + Discipline.by_classroom_id(classroom_id).each do |discipline| + disciplines_to_select2 << OpenStruct.new( + id: discipline.id, + name: discipline.description.to_s, + text: discipline.description.to_s + ) + end + end + + disciplines_to_select2 + end end From 815f707c9eb0f2b99b1b43692a2e7652ece4406c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:16:33 -0300 Subject: [PATCH 036/304] Cria rotas para fazer get de turmas por escola e disciplinas por turma --- config/routes.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 01994df3e..bb59d9cac 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -225,6 +225,7 @@ end resources :classrooms, only: [:index, :show] do collection do + get :by_unity get :multi_grade end resources :students, only: [:index] @@ -234,6 +235,7 @@ collection do get :search get :search_grouped_by_knowledge_area + get :by_classroom end end resources :knowledge_areas, only: [:index] From c081197f020f65e4bde7b4cc98fa8a2ff481eb43 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:17:30 -0300 Subject: [PATCH 037/304] Cria scope para fazer query filtrando disciplinas a partir de uma turma --- app/models/discipline.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/models/discipline.rb b/app/models/discipline.rb index b191aa532..28b350e87 100644 --- a/app/models/discipline.rb +++ b/app/models/discipline.rb @@ -20,6 +20,9 @@ class Discipline < ActiveRecord::Base scope :by_unity_id, lambda { |unity_id| by_unity_id(unity_id) } scope :by_teacher_id, lambda { |teacher_id| joins(:teacher_discipline_classrooms).where(teacher_discipline_classrooms: { teacher_id: teacher_id }).uniq } + scope :by_classroom_id, lambda { |classroom_id| + joins(:teacher_discipline_classrooms).where(teacher_discipline_classrooms: { classroom_id: classroom_id }).uniq + } # It works only when the query chain has join with # teacher_discipline_classrooms. Using scopes like by_teacher_id or From c0ba051a5ed29b323cfaf3b39628ab2fe0a9d023 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:17:59 -0300 Subject: [PATCH 038/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20traz=20escol?= =?UTF-8?q?as?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/observation_record_report_controller.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/controllers/observation_record_report_controller.rb b/app/controllers/observation_record_report_controller.rb index 1141b2ff8..9fbfd1fbc 100644 --- a/app/controllers/observation_record_report_controller.rb +++ b/app/controllers/observation_record_report_controller.rb @@ -29,6 +29,15 @@ def report end end + def unities + if current_user.current_user_role.try(:role_administrator?) + Unity.ordered + else + [current_user_unity] + end + end + helper_method :unities + private def resource_params From 2bafa8f79a4c4fb99de9c42944a61b000ff087ac Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:20:08 -0300 Subject: [PATCH 039/304] =?UTF-8?q?Obriga=20usu=C3=A1rio=20a=20informar=20?= =?UTF-8?q?disciplinas=20em=20todos=20os=20casos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/observation_record_report_form.rb | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/app/forms/observation_record_report_form.rb b/app/forms/observation_record_report_form.rb index fcdd156bc..f996c456b 100644 --- a/app/forms/observation_record_report_form.rb +++ b/app/forms/observation_record_report_form.rb @@ -17,8 +17,7 @@ class ObservationRecordReportForm validates :teacher_id, presence: true validates :unity_id, presence: true validates :classroom_id, presence: true - validates :discipline_id, presence: true, if: :require_discipline? - validates :discipline_id, absence: true, unless: :require_discipline? + validates :discipline_id, presence: true validates :start_at, presence: true, date: true, not_in_future: true, timeliness: { on_or_before: :end_at, type: :date, on_or_before_message: 'não pode ser maior que a Data final' } validates :end_at, presence: true, date: true, not_in_future: true, timeliness: { on_or_after: :start_at, type: :date, on_or_after_message: 'deve ser maior ou igual a Data inicial' } validates :observation_diary_records, presence: true, if: :require_observation_diary_records? @@ -59,6 +58,7 @@ def records_not_found_message def query @query ||= ObservationRecordReportQuery.new( + unity_id, teacher_id, classroom_id, discipline_id, @@ -67,15 +67,6 @@ def query ) end - def require_discipline? - return unless classroom_id.present? && teacher_id.present? - - frequency_type_definer = FrequencyTypeDefiner.new(classroom, teacher, year: classroom.year) - frequency_type_definer.define! - - frequency_type_definer.frequency_type == FrequencyTypes::BY_DISCIPLINE - end - def require_observation_diary_records? errors.blank? end From 47d8ba6d24c0078db0d90dfdd33e20f47a56912e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:28:09 -0300 Subject: [PATCH 040/304] =?UTF-8?q?Ajusta=20query=20do=20relat=C3=B3rio=20?= =?UTF-8?q?para=20emitir=20em=20lote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observation_record_report_query.rb | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 0b47ec780..4db5d2199 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -1,5 +1,6 @@ class ObservationRecordReportQuery - def initialize(teacher_id, classroom_id, discipline_id, start_at, end_at) + def initialize(unity_id, teacher_id, classroom_id, discipline_id, start_at, end_at) + @unity_id = unity_id @teacher_id = teacher_id @classroom_id = classroom_id @discipline_id = discipline_id @@ -8,18 +9,30 @@ def initialize(teacher_id, classroom_id, discipline_id, start_at, end_at) end def observation_diary_records - relation = ObservationDiaryRecord.includes(notes: :students) - .by_teacher(teacher_id) - .by_classroom(classroom_id) - .where(date: start_at..end_at) - .order(:date) + if @classroom_id.eql?('all') + classrooms_id = if current_user.teacher? + Classroom.by_unity_and_teacher(unity_id, current_teacher.id).pluck(:id) + else + Classroom.by_unity(unity_id).pluck(:id) + end + relation = ObservationDiaryRecord.includes(notes: :students) + .by_classroom(classrooms_id) + .where(date: start_at..end_at) + .order(:date) + else + relation = ObservationDiaryRecord.includes(notes: :students) + .by_teacher(teacher_id) + .by_classroom(classroom_id) + .where(date: start_at..end_at) + .order(:date) - relation = relation.by_discipline(discipline_id) if discipline_id.present? + relation = relation.by_discipline(discipline_id) if discipline_id.present? + end relation end private - attr_accessor :teacher_id, :classroom_id, :discipline_id, :start_at, :end_at + attr_accessor :unity_id, :teacher_id, :classroom_id, :discipline_id, :start_at, :end_at end From d3195c6497e2f4a1b4b707682f68e65e5fd1a4f5 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:33:24 -0300 Subject: [PATCH 041/304] =?UTF-8?q?Passa=20current=5Fuser=20por=20par?= =?UTF-8?q?=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../observation_record_report_controller.rb | 3 ++- app/reports/observation_record_report.rb | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/controllers/observation_record_report_controller.rb b/app/controllers/observation_record_report_controller.rb index 9fbfd1fbc..f0bfb6f5d 100644 --- a/app/controllers/observation_record_report_controller.rb +++ b/app/controllers/observation_record_report_controller.rb @@ -6,7 +6,8 @@ def form teacher_id: current_teacher.id, unity_id: current_unity.id, start_at: Time.zone.today, - end_at: Time.zone.today + end_at: Time.zone.today, + current_user: current_user ).localized end diff --git a/app/reports/observation_record_report.rb b/app/reports/observation_record_report.rb index 06b93052c..1c0cc40b6 100644 --- a/app/reports/observation_record_report.rb +++ b/app/reports/observation_record_report.rb @@ -28,12 +28,18 @@ def identification discipline_header = make_row_header_cell(t(:discipline), width: 70) classroom_header = make_row_header_cell(t(:classroom)) - discipline_cell = make_content_cell( - @form.discipline.present? ? @form.discipline.to_s : t(:empty_discipline), - width: 70 - ) - - classroom_cell = make_content_cell(@form.classroom.to_s) + discipline_name = if @form.discipline_id.eql?('all') + 'Todas' + elsif @form.discipline.present? + @form.discipline.to_s + else + t(:empty_discipline) + end + + classroom_name = @form.classroom_id.eql?('all') ? 'Todas' : @form.classroom.to_s + + discipline_cell = make_content_cell(discipline_name, width: 70) + classroom_cell = make_content_cell(classroom_name) teacher_header = make_row_header_cell(t(:teacher)) period_header = make_row_header_cell(t(:period)) teacher_cell = make_content_cell(@form.teacher.to_s) From 91512dc53ace9a3f637db7e9d3c4f9df284baccd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:42:52 -0300 Subject: [PATCH 042/304] =?UTF-8?q?Passa=20id=20do=20usu=C3=A1rio=20por=20?= =?UTF-8?q?par=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/observation_record_report_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/observation_record_report_controller.rb b/app/controllers/observation_record_report_controller.rb index f0bfb6f5d..d771ee43a 100644 --- a/app/controllers/observation_record_report_controller.rb +++ b/app/controllers/observation_record_report_controller.rb @@ -48,7 +48,8 @@ def resource_params :classroom_id, :discipline_id, :start_at, - :end_at + :end_at, + :current_user_id ) end From 2cb2ebf864626e61c98a87cc12ecac40535ad987 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:43:20 -0300 Subject: [PATCH 043/304] =?UTF-8?q?Recebe=20current=5Fuser=5Fid=20por=20pa?= =?UTF-8?q?r=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/observation_record_report_form.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/forms/observation_record_report_form.rb b/app/forms/observation_record_report_form.rb index f996c456b..bddde1490 100644 --- a/app/forms/observation_record_report_form.rb +++ b/app/forms/observation_record_report_form.rb @@ -11,7 +11,8 @@ class ObservationRecordReportForm :classroom_id, :discipline_id, :start_at, - :end_at + :end_at, + :current_user_id ) validates :teacher_id, presence: true @@ -63,7 +64,8 @@ def query classroom_id, discipline_id, start_at, - end_at + end_at, + current_user_id ) end From 749cc6b854333f9c8ed43c2a7846a3c0cc9f9905 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 18:44:20 -0300 Subject: [PATCH 044/304] =?UTF-8?q?Ajusta=20nome=20do=20par=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/observation_record_report_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/observation_record_report_controller.rb b/app/controllers/observation_record_report_controller.rb index d771ee43a..b438fb999 100644 --- a/app/controllers/observation_record_report_controller.rb +++ b/app/controllers/observation_record_report_controller.rb @@ -7,7 +7,7 @@ def form unity_id: current_unity.id, start_at: Time.zone.today, end_at: Time.zone.today, - current_user: current_user + current_user_id: current_user.id ).localized end From fa6ad115f250430aad94579bd9509737576a4edd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 5 Apr 2022 19:07:41 -0300 Subject: [PATCH 045/304] Ajusta view, js e query para novo formato em lote --- .../views/observation_record_report/form.js | 113 +++++++++++------- .../observation_record_report_query.rb | 10 +- .../observation_record_report/form.html.erb | 13 +- 3 files changed, 83 insertions(+), 53 deletions(-) diff --git a/app/assets/javascripts/views/observation_record_report/form.js b/app/assets/javascripts/views/observation_record_report/form.js index dc06036f0..dc8279621 100644 --- a/app/assets/javascripts/views/observation_record_report/form.js +++ b/app/assets/javascripts/views/observation_record_report/form.js @@ -1,71 +1,98 @@ $(function () { 'use strict'; - var flashMessages = new FlashMessages(); - var $classroom = $('#observation_record_report_form_classroom_id'); - var $discipline = $('#observation_record_report_form_discipline_id'); - var $disciplineContainer = $('.observation_record_report_form_discipline_id'); + let flashMessages = new FlashMessages(); + let $unity = $('#observation_record_report_form_unity_id'); + let $classroom = $('#observation_record_report_form_classroom_id'); + let $discipline = $('#observation_record_report_form_discipline_id'); - function fetchDisciplines() { - var classroom_id = $classroom.select2('val'); + $(document).ready(function() { + $('#btn-submit').attr("disabled", true); + getClassrooms(); + getDisciplines(); + }); - $discipline.select2('val', ''); - $discipline.select2({ data: [] }); + $unity.on('change', function () { + clearFields(); + getClassrooms(); + getDisciplines(); + }); - if (!_.isEmpty(classroom_id)) { + $classroom.on('change', function() { + $discipline.val('').select2({ data: [] }); + emptyDiscipline(); + getDisciplines(); + }); + + $discipline.on('change', function() { + emptyDiscipline(); + }) + + function emptyDiscipline() { + if ($discipline.val() !== '') { + $('#btn-submit').attr("disabled", false); + } else { + $('#btn-submit').attr("disabled", true); + } + } + + function getClassrooms() { + const unity_id = $unity.select2('val'); + + if (!_.isEmpty(unity_id)) { $.ajax({ - url: Routes.disciplines_pt_br_path({ classroom_id: classroom_id, format: 'json' }), - success: handleFetchDisciplinesSuccess, - error: handleFetchDisciplinesError + url: Routes.by_unity_classrooms_pt_br_path({ + unity_id: unity_id, + format: 'json' + }), + success: handleFetchClassroomsSuccess, + error: handleFetchClassroomsError }); } } - function handleFetchDisciplinesSuccess(disciplines) { - var selectedDisciplines = _.map(disciplines, function(discipline) { - return { id: discipline['id'], text: discipline['description'] }; + function handleFetchClassroomsSuccess(data) { + let classrooms = _.map(data.classrooms, function(classroom) { + return { id: classroom.table.id, name: classroom.table.name, text: classroom.table.text }; }); - $discipline.select2({ data: selectedDisciplines }); + classrooms.unshift({ id: 'all', name: '', text: 'Todas' }); + + $classroom.select2({ data: classrooms }) } - function handleFetchDisciplinesError() { - flashMessages.error('Ocorreu um erro ao buscar as disciplinas da turma selecionada.'); + function handleFetchClassroomsError() { + flashMessages.error('Ocorreu um erro ao buscar as turmas da escola selecionada.'); } - function fetchExamRule() { - $disciplineContainer.hide(); - var classroom_id = $classroom.select2('val'); + function getDisciplines() { + const classroom_id = $classroom.select2('val'); if (!_.isEmpty(classroom_id)) { $.ajax({ - url: Routes.exam_rules_pt_br_path({ classroom_id: classroom_id, format: 'json' }), - success: handleFetchExamRuleSuccess, - error: handleFetchExamRuleError + url: Routes.by_classroom_disciplines_pt_br_path({ classroom_id: classroom_id, format: 'json' }), + success: handleFetchDisciplinesSuccess, + error: handleFetchDisciplinesError }); } - }; + } - function handleFetchExamRuleSuccess(data) { - var examRule = data.exam_rule - if (!$.isEmptyObject(examRule) && (examRule.frequency_type == '2' || examRule.allow_frequency_by_discipline)) { - $disciplineContainer.show(); - } else { - $disciplineContainer.hide(); - $discipline.select2('val', ''); - } - }; + function handleFetchDisciplinesSuccess(data) { + let selectedDisciplines = _.map(data.disciplines, function(discipline) { + return { id: discipline.table.id, name: discipline.table.name, text: discipline.table.text }; + }); - function handleFetchExamRuleError() { - flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); - }; + selectedDisciplines.unshift({ id: 'all', name: '', text: 'Todas' }); - // On change + $discipline.select2({ data: selectedDisciplines }); + } - $classroom.on('change', function() { - fetchExamRule(); - fetchDisciplines(); - }); + function handleFetchDisciplinesError() { + flashMessages.error('Ocorreu um erro ao buscar as disciplinas da turma selecionada.'); + } - fetchExamRule(); + function clearFields() { + $classroom.val('').select2({ data: [] }); + $discipline.val('').select2({ data: [] }); + } }); diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 4db5d2199..1c4d02804 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -1,17 +1,19 @@ class ObservationRecordReportQuery - def initialize(unity_id, teacher_id, classroom_id, discipline_id, start_at, end_at) + def initialize(unity_id, teacher_id, classroom_id, discipline_id, start_at, end_at, current_user_id) @unity_id = unity_id @teacher_id = teacher_id @classroom_id = classroom_id @discipline_id = discipline_id @start_at = start_at.to_date @end_at = end_at.to_date + @current_user_id = current_user_id end def observation_diary_records if @classroom_id.eql?('all') - classrooms_id = if current_user.teacher? - Classroom.by_unity_and_teacher(unity_id, current_teacher.id).pluck(:id) + user = User.find(current_user_id) + classrooms_id = if user.teacher? + Classroom.by_unity_and_teacher(unity_id, user.id).pluck(:id) else Classroom.by_unity(unity_id).pluck(:id) end @@ -34,5 +36,5 @@ def observation_diary_records private - attr_accessor :unity_id, :teacher_id, :classroom_id, :discipline_id, :start_at, :end_at + attr_accessor :unity_id, :teacher_id, :classroom_id, :discipline_id, :start_at, :end_at, :current_user_id end diff --git a/app/views/observation_record_report/form.html.erb b/app/views/observation_record_report/form.html.erb index 43ca9a2de..6361ef42a 100644 --- a/app/views/observation_record_report/form.html.erb +++ b/app/views/observation_record_report/form.html.erb @@ -14,21 +14,22 @@ <% end %> <%= f.hidden_field :teacher_id %> + <%= f.hidden_field :current_user_id, value: current_user.id %>
- <%= f.input :unity_id, as: :select2_unity, user: current_user %> + <%= f.input :unity_id, as: :select2, elements: unities, readonly: !current_user.admin?, + input_html: { value: @observation_record_report_form.unity_id } %>
- <%= f.input :classroom_id, as: :select2_classroom, user: current_user, + <%= f.input :classroom_id, as: :select2, elements: [], input_html: { value: @observation_record_report_form.classroom_id } %>
- <%= f.input :discipline_id, as: :select2_discipline, user: current_user, - classroom_id: @observation_record_report_form.classroom_id, - required: true, input_html: { value: @observation_record_report_form.discipline_id } %> + <%= f.input :discipline_id, as: :select2, elements: [], + input_html: { value: @observation_record_report_form.discipline_id } %>
@@ -44,7 +45,7 @@
- <%= f.submit t('.print'), class: 'btn btn-primary' %> + <%= f.submit t('.print'), class: 'btn btn-primary', id: 'btn-submit' %>
<% end %> From 874cd110870a6fa3dd06de95f09f806afc2fac9c Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 6 Apr 2022 10:10:13 -0300 Subject: [PATCH 046/304] Apaga cache somente quando for um novo registro --- .../teacher_discipline_classrooms_synchronizer.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb index a89c5d0f3..c7b5d7139 100644 --- a/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb +++ b/app/services/ieducar_synchronizers/teacher_discipline_classrooms_synchronizer.rb @@ -96,9 +96,10 @@ def create_or_update_teacher_discipline_classrooms( teacher_discipline_classroom.active = true if teacher_discipline_classroom.active.nil? teacher_discipline_classroom.save! if teacher_discipline_classroom.changed? - cache_key = "last_teacher_discipline_classroom-#{classroom_id}-#{teacher_id}" - - Rails.cache.delete(cache_key) + if teacher_discipline_classroom.new_record? + cache_key = "last_teacher_discipline_classroom-#{classroom_id}-#{teacher_id}" + Rails.cache.delete(cache_key) + end teacher_discipline_classroom.discard_or_undiscard(false) end From 4a11e7cf616072e846361764b1f9f204da0b8832 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 6 Apr 2022 14:29:13 -0300 Subject: [PATCH 047/304] =?UTF-8?q?Adiciona=20mensagem=20de=20erro=20ao=20?= =?UTF-8?q?criar=20evento=20em=20lote=20quando=20a=20data=20for=20fora=20d?= =?UTF-8?q?o=20per=C3=ADodo=20escolar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event_creator_worker.rb | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index 76a24f56c..7c0ab8c14 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -26,12 +26,21 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) end rescue ActiveRecord::RecordInvalid unity_name = Unity.find_by(id: school_calendar.unity_id)&.name - notify( - school_calendar_event_batch, - "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date}.", - user_id - ) + if school_calendar_event_batch.start_date < school_calendar.steps.first.start_at || school_calendar_event_batch.end_date > school_calendar.steps.last.end_at + notify( + school_calendar_event_batch, + "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ + #{unity_name} pois a #{school_calendar_event_batch.start_date} não está dentro do período letivo.", + user_id + ) + else + notify( + school_calendar_event_batch, + "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ + #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date}.", + user_id + ) + end next end From b2911e0bcaf75617a8572f6c769c5d99023c59db Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 6 Apr 2022 14:40:48 -0300 Subject: [PATCH 048/304] Ajusta mensagem de erro para melhor entendimento --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index 7c0ab8c14..d676a2b63 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -30,7 +30,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) notify( school_calendar_event_batch, "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a #{school_calendar_event_batch.start_date} não está dentro do período letivo.", + #{unity_name} pois a data #{school_calendar_event_batch.start_date} não está dentro do período letivo.", user_id ) else From 06a34224844b0fb619cb0a5b08ee63697e7a9fa1 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 6 Apr 2022 14:48:52 -0300 Subject: [PATCH 049/304] =?UTF-8?q?Refatora=20m=C3=A9todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/classrooms_controller.rb | 35 +++++++---------------- app/controllers/disciplines_controller.rb | 26 ++++++----------- 2 files changed, 20 insertions(+), 41 deletions(-) diff --git a/app/controllers/classrooms_controller.rb b/app/controllers/classrooms_controller.rb index 6c97d87f9..a3e4bd672 100644 --- a/app/controllers/classrooms_controller.rb +++ b/app/controllers/classrooms_controller.rb @@ -34,34 +34,21 @@ def by_unity end def classrooms_to_select2(unity_id) - classrooms_to_select2 = [] + classrooms = Classroom.by_unity(unity_id) + .by_year(current_user_school_year || Date.current.year) + .ordered if current_user.teacher? - Classroom.by_unity(unity_id) - .by_year(current_user_school_year || Date.current.year) - .by_teacher_id(current_teacher.id) - .ordered - .each do |classroom| - classrooms_to_select2 << OpenStruct.new( - id: classroom.id, - name: classroom.description.to_s, - text: classroom.description.to_s - ) - end - else - Classroom.by_unity(unity_id) - .by_year(current_user_school_year || Date.current.year) - .ordered - .each do |classroom| - classrooms_to_select2 << OpenStruct.new( - id: classroom.id, - name: classroom.description.to_s, - text: classroom.description.to_s - ) - end + classrooms = classrooms.by_teacher_id(current_teacher.id) end - classrooms_to_select2 + classrooms.map do |classroom| + OpenStruct.new( + id: classroom.id, + name: classroom.description.to_s, + text: classroom.description.to_s + ) + end end def show diff --git a/app/controllers/disciplines_controller.rb b/app/controllers/disciplines_controller.rb index 4d1254d45..00d1f4ad3 100644 --- a/app/controllers/disciplines_controller.rb +++ b/app/controllers/disciplines_controller.rb @@ -62,26 +62,18 @@ def by_classroom end def disciplines_to_select2(classroom_id) - disciplines_to_select2 = [] + disciplines = Discipline.by_classroom_id(classroom_id) if current_user.teacher? - Discipline.by_classroom_id(classroom_id).by_teacher_id(current_teacher.id).each do |discipline| - disciplines_to_select2 << OpenStruct.new( - id: discipline.id, - name: discipline.description.to_s, - text: discipline.description.to_s - ) - end - else - Discipline.by_classroom_id(classroom_id).each do |discipline| - disciplines_to_select2 << OpenStruct.new( - id: discipline.id, - name: discipline.description.to_s, - text: discipline.description.to_s - ) - end + disciplines.by_teacher_id(current_teacher.id) end - disciplines_to_select2 + disciplines.map do |discipline| + OpenStruct.new( + id: discipline.id, + name: discipline.description.to_s, + text: discipline.description.to_s + ) + end end end From bbd34c930dca9b65cf0526bb408e423dd3797223 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 7 Apr 2022 18:44:49 -0300 Subject: [PATCH 050/304] =?UTF-8?q?Mostra=20corretamente=20conte=C3=BAdos?= =?UTF-8?q?=20v=C3=ADnculados=20ao=20plano?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/discipline_content_records/show.html.erb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/app/views/discipline_content_records/show.html.erb b/app/views/discipline_content_records/show.html.erb index ef1b79840..4d030dfaf 100644 --- a/app/views/discipline_content_records/show.html.erb +++ b/app/views/discipline_content_records/show.html.erb @@ -45,12 +45,15 @@ <% end %>
    - <% contents.each do |content| %> -
  • - + <% content_id_in_plan = content.id.in?(@discipline_content_record.contents.collect(&:id)) %> + <% classes = content_id_in_plan ? "list-group-item-info active initialized" : "" %> +
  • + <% if content_id_in_plan %> + + <% end %> <%= check_box_tag("discipline_content_record[content_record_attributes][content_ids][]", - content.id, content.id.in?(@discipline_content_record.contents.collect(&:id)), + content.id, content_id_in_plan, hidden: true, 'data-content_description': content.to_s ) %> <%= content %>
  • From 1e88042e085eda38848f75583ecf6671757e4f41 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 8 Apr 2022 18:30:38 -0300 Subject: [PATCH 051/304] Corrige service que pega sequencial --- app/services/student_enrollment_classroom_businesses.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/student_enrollment_classroom_businesses.rb b/app/services/student_enrollment_classroom_businesses.rb index 96bd5607f..960cf17bd 100644 --- a/app/services/student_enrollment_classroom_businesses.rb +++ b/app/services/student_enrollment_classroom_businesses.rb @@ -30,6 +30,10 @@ def same_enrollment_classroom?(classroom_ids) end def student_enrollment_last(student_enrollment) - StudentEnrollment.active.by_year(year).by_student(student_enrollment.student.try(:id)).last + enrollments_in_year = StudentEnrollment.active.by_year(year).by_student(student_enrollment.student.try(:id)) + + if enrollments_in_year.size > 1 + enrollments_in_year.last + end end end From 8969b4dcf74de9dba95f76e837118b299a575c6e Mon Sep 17 00:00:00 2001 From: Marco Castro Date: Sat, 9 Apr 2022 10:22:05 -0300 Subject: [PATCH 052/304] =?UTF-8?q?resolver(envio=5Favalia=C3=A7=C3=A3o):?= =?UTF-8?q?=20avalia=C3=A7=C3=A3o=20descritiva?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/exam_poster/descriptive_exam_poster.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/exam_poster/descriptive_exam_poster.rb b/app/services/exam_poster/descriptive_exam_poster.rb index e78e7dbd6..4f57864cf 100644 --- a/app/services/exam_poster/descriptive_exam_poster.rb +++ b/app/services/exam_poster/descriptive_exam_poster.rb @@ -109,6 +109,7 @@ def post_by_step exams.each do |exam| next if exam.student.nil? + next unless not_posted?({ classroom: classroom, student: exam.student })[:descriptive_exam] next unless valid_opinion_type?( exam.student.uses_differentiated_exam_rule, OpinionTypes::BY_STEP, classroom.first_exam_rule From db166ae66fc1b764e8d455b4ebbedee2072d7fbf Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Sat, 9 Apr 2022 13:03:46 -0300 Subject: [PATCH 053/304] =?UTF-8?q?Cria=20scope=20para=20eventos=20no=20re?= =?UTF-8?q?lat=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/school_calendar_event.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/school_calendar_event.rb b/app/models/school_calendar_event.rb index 2bb6dfea8..9c333a8db 100644 --- a/app/models/school_calendar_event.rb +++ b/app/models/school_calendar_event.rb @@ -41,6 +41,7 @@ class SchoolCalendarEvent < ActiveRecord::Base where(event_type: [EventTypes::NO_SCHOOL_WITH_FREQUENCY, EventTypes::NO_SCHOOL]) } scope :extra_school_without_frequency, -> { where(event_type: EventTypes::EXTRA_SCHOOL_WITHOUT_FREQUENCY) } + scope :events_to_report, -> { where(event_type: [EventTypes::NO_SCHOOL, EventTypes::EXTRA_SCHOOL_WITHOUT_FREQUENCY]) } scope :without_grade, -> { where(arel_table[:grade_id].eq(nil)) } scope :without_classroom, -> { where(arel_table[:classroom_id].eq(nil)) } scope :without_discipline, -> { where(arel_table[:discipline_id].eq(nil)) } From 750230c32de2e5526e628d74eb49fe7cc5c7943b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Sat, 9 Apr 2022 13:04:26 -0300 Subject: [PATCH 054/304] Ajusta chamada do scope no report --- app/forms/attendance_record_report_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index b7af756b7..d6ef5b3ad 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -58,7 +58,7 @@ def daily_frequencies def school_calendar_events events_by_day = [] events = school_calendar.events - .no_school_event + .events_to_report .by_date_between(start_at, end_at) .all_events_for_classroom(classroom) .where( From be20b621af4d753246717102aa398b693cddf98b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 10:48:33 -0300 Subject: [PATCH 055/304] =?UTF-8?q?Cria=20coluna=20na=20tabela=20de=20conf?= =?UTF-8?q?igura=C3=A7=C3=B5es=20gerais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...add_show_inactive_enrollment_to_general_configurations.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 db/migrate/20220411124840_add_show_inactive_enrollment_to_general_configurations.rb diff --git a/db/migrate/20220411124840_add_show_inactive_enrollment_to_general_configurations.rb b/db/migrate/20220411124840_add_show_inactive_enrollment_to_general_configurations.rb new file mode 100644 index 000000000..6e8575585 --- /dev/null +++ b/db/migrate/20220411124840_add_show_inactive_enrollment_to_general_configurations.rb @@ -0,0 +1,5 @@ +class AddShowInactiveEnrollmentToGeneralConfigurations < ActiveRecord::Migration + def change + add_column :general_configurations, :show_inactive_enrollments, :boolean, default: false + end +end From 8497fcf488c97c8ab0e25d7978dc8a85bb50c44f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 10:48:50 -0300 Subject: [PATCH 056/304] =?UTF-8?q?Permite=20par=C3=A2metro=20no=20control?= =?UTF-8?q?ler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/general_configurations_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/general_configurations_controller.rb b/app/controllers/general_configurations_controller.rb index d2f231765..1c6e1e103 100644 --- a/app/controllers/general_configurations_controller.rb +++ b/app/controllers/general_configurations_controller.rb @@ -52,7 +52,8 @@ def permitted_attributes :type_of_teaching, :types_of_teaching, :days_to_expire_password, - :days_to_disable_access + :days_to_disable_access, + :show_inactive_enrollments ) parameters[:types_of_teaching] = parameters[:types_of_teaching].split(',') From acf7dbc2f87b4328fc5bc8ffe45a8229e56ba7d5 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 10:50:08 -0300 Subject: [PATCH 057/304] =?UTF-8?q?Cria=20checkbox=20na=20tela=20de=20conf?= =?UTF-8?q?igura=C3=A7=C3=B5es=20gerais?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/general_configurations/edit.html.erb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/views/general_configurations/edit.html.erb b/app/views/general_configurations/edit.html.erb index 85a98bfac..4b3ede7ec 100644 --- a/app/views/general_configurations/edit.html.erb +++ b/app/views/general_configurations/edit.html.erb @@ -60,6 +60,11 @@ <%= f.input :allows_copy_lesson_plans_to_other_grades, label: false, inline_label: true %>
+
+
+ <%= f.input :show_inactive_enrollments, label: false, inline_label: true %> +
+
<%= f.input :create_users_for_students_when_synchronize, label: false, inline_label: true %> @@ -80,7 +85,7 @@
<%= f.input :types_of_teaching, as: :select2, elements: TypesOfTeaching.to_select(false).to_json, multiple: true, required: false, - input_html: { value: f.object.types_of_teaching.join(','), data: { without_json_parser: true } } %> + input_html: { value: f.object.types_of_teaching.join(','), data: { without_json_parser: true } } %>
From 4fc5ebff985c41ec040c85b1e5ae25585245303b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 10:50:17 -0300 Subject: [PATCH 058/304] =?UTF-8?q?Cria=20tradu=C3=A7=C3=A3o=20para=20o=20?= =?UTF-8?q?campo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/models/general_configuration.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/models/general_configuration.yml b/config/locales/models/general_configuration.yml index 9b1cbdeaf..bc0d35f72 100644 --- a/config/locales/models/general_configuration.yml +++ b/config/locales/models/general_configuration.yml @@ -29,6 +29,7 @@ pt-BR: days_to_expire_password: "Quantidade de dias para expirar automaticamente as senhas dos usuários ativos" days_to_expire_password_label_hint: "A contagem será efetuada em dias corridos. Se o valor preenchido for zero (0) ou nenhum, não ocorrerá automatização" days_to_disable_access: "Quantidade de dias permitidos sem acessar o sistema para inativação automática de usuário" + show_inactive_enrollments: "Apresentar enturmações inativas de alunos(as) nas telas de lançamento e relatórios (avaliação e frequência)" backup: completed: "Exportação de dados realizada com sucesso! Clique %{link} para fazer download!" error: "Exportação de dados não pode ser realizada. Favor tentar novamente." From 6afd78f7d08f743e7fe1811d8375c0abed77265d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 17:55:10 -0300 Subject: [PATCH 059/304] =?UTF-8?q?N=C3=A3o=20pega=20alunos=20baseado=20na?= =?UTF-8?q?=20data=20caso=20seja=20para=20mostrar=20todos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_enrollments_list.rb | 25 ++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index 26c2e52f8..d34ad31a8 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -115,6 +115,8 @@ def student_active?(student_enrollment) end def student_displayable_as_inactive?(student_enrollment) + return true if show_inactive_enrollments + StudentEnrollment.where(id: student_enrollment) .by_classroom(classroom) .by_discipline(discipline) @@ -123,6 +125,10 @@ def student_displayable_as_inactive?(student_enrollment) .any? end + def show_inactive_enrollments + @show_inactive_enrollments ||= GeneralConfiguration.first.show_inactive_enrollments + end + def remove_not_displayable_students(students_enrollments) students_enrollments.select { |student_enrollment| student_active?(student_enrollment) || @@ -153,14 +159,17 @@ def order_by_sequence_and_name(students_enrollments) .by_classroom(@classroom) enrollments = enrollments.by_period(period) if period - enrollments = if search_type != :by_year - start_at = @start_at || @date - end_at = @end_at || @date - - enrollments.by_date_range(start_at, end_at) - else - enrollments.by_year(year) - end + + unless show_inactive_enrollments + enrollments = if search_type != :by_year + start_at = @start_at || @date + end_at = @end_at || @date + + enrollments.by_date_range(start_at, end_at) + else + enrollments.by_year(year) + end + end enrollments.active .ordered From 4fdcce774eab06454ac9bca92a87ddb304187d53 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 18:28:39 -0300 Subject: [PATCH 060/304] =?UTF-8?q?Caso=20use=20a=20configura=C3=A7=C3=A3o?= =?UTF-8?q?=20sempre=20mostra=20todos=20alunos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_enrollments_list.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index d34ad31a8..a3edf35fb 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -25,6 +25,8 @@ def initialize(params) @year = classroom.year end + @show_inactive = true if show_inactive_enrollments + adjust_date_range_by_year if opinion_type_by_year? end From 5c9bbf36b1ce30803b00bf48497b1cf54f0c9273 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 18:30:58 -0300 Subject: [PATCH 061/304] =?UTF-8?q?Seta=20tamb=C3=A9m=20show=5Finactive=5F?= =?UTF-8?q?outside=5Fstep?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_enrollments_list.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index a3edf35fb..04d2389ec 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -25,7 +25,10 @@ def initialize(params) @year = classroom.year end - @show_inactive = true if show_inactive_enrollments + if show_inactive_enrollments + @show_inactive = true + @show_inactive_outside_step = true + end adjust_date_range_by_year if opinion_type_by_year? end From 17ad8060adf77541812e45ee8f800fc28f2ec64e Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 11 Apr 2022 18:40:58 -0300 Subject: [PATCH 062/304] =?UTF-8?q?Ajusta=20m=C3=A9todo=20que=20verifica?= =?UTF-8?q?=20datas=20para=20caso=20de=20turma=20multisseriada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/infrequency_tracking_notifier.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/services/infrequency_tracking_notifier.rb b/app/services/infrequency_tracking_notifier.rb index c456f42c4..5e5fcde13 100644 --- a/app/services/infrequency_tracking_notifier.rb +++ b/app/services/infrequency_tracking_notifier.rb @@ -65,12 +65,17 @@ def last_notification_date(classroom_id, student_id, type) def school_dates(end_at, classroom) days = general_configuration.days_to_consider_alternate_absences + school_dates = [] + + classroom.grade_ids.each do |grade| + school_dates << SchoolDayChecker.new( + school_calendar(classroom), end_at, grade, classroom.id, nil + ).school_dates_since( + end_at, days + ).sort + end - SchoolDayChecker.new( - school_calendar(classroom), end_at, classroom.grade_ids, classroom.id, nil - ).school_dates_since( - end_at, days - ).sort + school_dates.flatten end def consecutive_school_dates(school_dates) From 61f1fe41daa1c3b8e510070aff8b622539addd52 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 19:18:32 -0300 Subject: [PATCH 063/304] =?UTF-8?q?Altera=20para=20aluno=20n=C3=A3o=20entu?= =?UTF-8?q?rmado=20ser=20mostrado=20com=20tr=C3=AAs=20asteriscos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/daily_frequency_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/daily_frequency_helper.rb b/app/helpers/daily_frequency_helper.rb index 2db6efa31..f79d00a50 100644 --- a/app/helpers/daily_frequency_helper.rb +++ b/app/helpers/daily_frequency_helper.rb @@ -57,7 +57,7 @@ def frequency_student_name_class(dependence, active, exempted_from_discipline, i def frequency_student_name(student, dependence, active, exempted_from_discipline, in_active_search) if !active - "**#{student}" + "***#{student}" elsif dependence "*#{student}" elsif exempted_from_discipline From c881efe924122614431f5da9b3676400d8097c4c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 19:50:53 -0300 Subject: [PATCH 064/304] Aplica ajustes na query --- .../observation_record_report_query.rb | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 1c4d02804..4e0bc3fc8 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -12,25 +12,24 @@ def initialize(unity_id, teacher_id, classroom_id, discipline_id, start_at, end_ def observation_diary_records if @classroom_id.eql?('all') user = User.find(current_user_id) - classrooms_id = if user.teacher? + @classroom_id = if user.teacher? Classroom.by_unity_and_teacher(unity_id, user.id).pluck(:id) else Classroom.by_unity(unity_id).pluck(:id) end - relation = ObservationDiaryRecord.includes(notes: :students) - .by_classroom(classrooms_id) - .where(date: start_at..end_at) - .order(:date) - else - relation = ObservationDiaryRecord.includes(notes: :students) - .by_teacher(teacher_id) - .by_classroom(classroom_id) - .where(date: start_at..end_at) - .order(:date) + end + + relation = ObservationDiaryRecord.includes(notes: :students) + .by_classroom(classroom_id) + .where(date: start_at..end_at) + .order(:date) - relation = relation.by_discipline(discipline_id) if discipline_id.present? + if @discipline_id.eql?('all') + @discipline_id = Discipline.by_classroom_id(classroom_id).pluck(:id) end + relation = relation.by_discipline(discipline_id) if discipline_id.present? + relation end From 9317d29bf0c86965dbd35ff334e9817e29ad1f9a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 11 Apr 2022 20:10:44 -0300 Subject: [PATCH 065/304] Ajusta para pegar id do professor --- app/queries/observation_record_report_query.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 4e0bc3fc8..83e0176d5 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -13,7 +13,7 @@ def observation_diary_records if @classroom_id.eql?('all') user = User.find(current_user_id) @classroom_id = if user.teacher? - Classroom.by_unity_and_teacher(unity_id, user.id).pluck(:id) + Classroom.by_unity_and_teacher(unity_id, user.teacher_id).pluck(:id) else Classroom.by_unity(unity_id).pluck(:id) end From dcb90dad88a42da1ed40eb381a3c1e385612198a Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Thu, 14 Apr 2022 17:34:56 -0300 Subject: [PATCH 066/304] =?UTF-8?q?Ajusta=20para=20notifier=20validar=20se?= =?UTF-8?q?=20per=C3=ADodo=20est=C3=A1=20entre=20etapas=20do=20calend?= =?UTF-8?q?=C3=A1rio=20letivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event_creator_worker.rb | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index d676a2b63..c0a1fd304 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -26,22 +26,26 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) end rescue ActiveRecord::RecordInvalid unity_name = Unity.find_by(id: school_calendar.unity_id)&.name - if school_calendar_event_batch.start_date < school_calendar.steps.first.start_at || school_calendar_event_batch.end_date > school_calendar.steps.last.end_at - notify( - school_calendar_event_batch, - "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a data #{school_calendar_event_batch.start_date} não está dentro do período letivo.", - user_id - ) - else - notify( - school_calendar_event_batch, - "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date}.", - user_id - ) - end + school_calendar.steps.flatten.map do |step| + if school_calendar_event_batch.start_date.between?(step.start_at, step.end_at) && + school_calendar_event_batch.end_date.between?(step.start_at, step.end_at) + + notify( + school_calendar_event_batch, + "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ + #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date}.", + user_id + ) + else + notify( + school_calendar_event_batch, + "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ + #{unity_name} pois a data #{school_calendar_event_batch.start_date} não está dentro do período letivo.", + user_id + ) + end + end next end end From ee28bc799c4a24bd92209d13dd88622f796bd0c2 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 18 Apr 2022 15:50:55 -0300 Subject: [PATCH 067/304] Formata data corretamente --- app/views/daily_frequencies/edit_multiple.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/daily_frequencies/edit_multiple.html.erb b/app/views/daily_frequencies/edit_multiple.html.erb index 5108b6c71..759642d15 100644 --- a/app/views/daily_frequencies/edit_multiple.html.erb +++ b/app/views/daily_frequencies/edit_multiple.html.erb @@ -14,7 +14,7 @@ <%= @daily_frequencies.first.classroom.unity %> <%= @daily_frequencies.first.classroom %> <%= @daily_frequencies.first.discipline || 'Todas' %> - <%= @daily_frequencies.first.frequency_date %> + <%= l(@daily_frequencies.first.frequency_date) %> From a4c33d398a3f4939e271dd36a35c05fe75712db9 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 18 Apr 2022 15:53:24 -0300 Subject: [PATCH 068/304] =?UTF-8?q?Ajusta=20mensagem=20gen=C3=A9rica=20de?= =?UTF-8?q?=20erro=20para=20melhor=20entendimento=20do=20cliente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/rails.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/rails.yml b/config/locales/rails.yml index dc52504eb..f45c74fec 100644 --- a/config/locales/rails.yml +++ b/config/locales/rails.yml @@ -1,7 +1,7 @@ pt-BR: errors: general: - error: "Ocorreu um erro e os responsáveis já foram notificados. Tente novamente mais tarde" + error: "Ops! Ocorreu um erro. Tente recarregar a página, se o problema persistir entre em contato com a Secretaria de Educação do seu município." require_current_year: 'É necessário vincular um ano ao perfil atual para acessar esse cadastro' require_current_classroom: "É necessário vincular uma turma ao perfil atual para acessar esse cadastro" require_current_teacher: "É necessário vincular um professor ao usuário atual para acessar esse cadastro" From 3d1dd6eeaa4a55e6a95cbc60167ee572035288e8 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 19 Apr 2022 10:44:37 -0300 Subject: [PATCH 069/304] =?UTF-8?q?Ajusta=20msg=20de=20erro=20gen=C3=A9ric?= =?UTF-8?q?a=20para=20evitar=20N=20problemas=20internos=20no=20munic=C3=AD?= =?UTF-8?q?pio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/rails.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/rails.yml b/config/locales/rails.yml index f45c74fec..69f15f920 100644 --- a/config/locales/rails.yml +++ b/config/locales/rails.yml @@ -1,7 +1,7 @@ pt-BR: errors: general: - error: "Ops! Ocorreu um erro. Tente recarregar a página, se o problema persistir entre em contato com a Secretaria de Educação do seu município." + error: "Ops! Ocorreu um erro. Tente recarregar a página e, se o problema persistir, entre em contato com a gestão da sua Escola ou a Secretaria de Educação do seu município para que o problema seja reportado ao Suporte." require_current_year: 'É necessário vincular um ano ao perfil atual para acessar esse cadastro' require_current_classroom: "É necessário vincular uma turma ao perfil atual para acessar esse cadastro" require_current_teacher: "É necessário vincular um professor ao usuário atual para acessar esse cadastro" From 6630bcffad9ec0257556f07d697a280f5185c17f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 16:25:40 -0300 Subject: [PATCH 070/304] =?UTF-8?q?Cria=20migration=20para=20estutura=20de?= =?UTF-8?q?=20recupera=C3=A7=C3=A3o=20de=20menor=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...19184536_create_avaliation_recovery_lowest_notes.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb diff --git a/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb new file mode 100644 index 000000000..271b5bd17 --- /dev/null +++ b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb @@ -0,0 +1,10 @@ +class CreateAvaliationRecoveryLowestNotes < ActiveRecord::Migration + def change + create_table :avaliation_recovery_lowest_notes do |t| + t.references :recovery_diary_record, index: { name: 'idx_recovery_diary_record_id_on_recovery_lowest_note' }, + null: false, foreign_key: true + t.integer :step_number, null:false, default: 0 + t.timestamps null: false + end + end +end From 13c2ac2d3a55585c14dcecfc51cf4ddabc8b78fa Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 16:26:16 -0300 Subject: [PATCH 071/304] Cria rota --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index 01994df3e..d8d3b7945 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -275,6 +275,7 @@ end resources :final_recovery_diary_records, concerns: :history resources :avaliation_recovery_diary_records, concerns: :history + resources :avaliation_recovery_lowest_notes resources :conceptual_exams, concerns: :history do collection do get :exempted_disciplines From accdfae7c73a94c88ec32f832884c1731dadd9b6 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 16:26:30 -0300 Subject: [PATCH 072/304] Cria atalho no menu --- config/navigation.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/navigation.yml b/config/navigation.yml index 1775dd127..c668422c4 100644 --- a/config/navigation.yml +++ b/config/navigation.yml @@ -183,6 +183,9 @@ navigation: - menu: type: "avaliation_recovery_diary_records" path: "avaliation_recovery_diary_records_path" + - menu: + type: "avaliation_recovery_lowest_notes" + path: "avaliation_recovery_lowest_notes_path" - menu: type: "observation_diary_records" icon: "fa-sticky-note-o" From 75bbc271e68cd8497a8383065292abbe112aee1b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 16:58:08 -0300 Subject: [PATCH 073/304] =?UTF-8?q?Permite=20visualizar=20hist=C3=B3rico?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index d8d3b7945..2a2e84cae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -275,7 +275,7 @@ end resources :final_recovery_diary_records, concerns: :history resources :avaliation_recovery_diary_records, concerns: :history - resources :avaliation_recovery_lowest_notes + resources :avaliation_recovery_lowest_notes, concerns: :history resources :conceptual_exams, concerns: :history do collection do get :exempted_disciplines From 66d7b6ddb563391280d5290986c32f93e1836232 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 17:30:44 -0300 Subject: [PATCH 074/304] Ajusta migration --- .../20220419184536_create_avaliation_recovery_lowest_notes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb index 271b5bd17..d986040db 100644 --- a/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb +++ b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb @@ -3,6 +3,7 @@ def change create_table :avaliation_recovery_lowest_notes do |t| t.references :recovery_diary_record, index: { name: 'idx_recovery_diary_record_id_on_recovery_lowest_note' }, null: false, foreign_key: true + t.date :recorded_at, null: false t.integer :step_number, null:false, default: 0 t.timestamps null: false end From 887195c630840d7befd35e026c256d25acad7da9 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:14:47 -0300 Subject: [PATCH 075/304] =?UTF-8?q?Cria=20servi=C3=A7o=20que=20traz=20meno?= =?UTF-8?q?r=20nota=20do=20aluno?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_notes_in_step_fetcher.rb | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 app/services/student_notes_in_step_fetcher.rb diff --git a/app/services/student_notes_in_step_fetcher.rb b/app/services/student_notes_in_step_fetcher.rb new file mode 100644 index 000000000..fb45e4c37 --- /dev/null +++ b/app/services/student_notes_in_step_fetcher.rb @@ -0,0 +1,42 @@ +class StudentNotesInStepFetcher + include I18n::Alchemy + + def initialize(student) + @student = student + end + + def lowest_note_in_step(classroom_id, discipline_id, step_id) + classroom = Classroom.find(classroom_id) + avaliations = Avaliation.by_classroom_id(classroom_id) + .by_discipline_id(discipline_id) + .by_step(classroom_id, step_id) + .ordered + + lowest_note = nil + + avaliations.each do |avaliation| + score = DailyNoteStudent.by_student_id(student.id) + .by_avaliation(avaliation.id) + .first + .try(:recovered_note) + + next if score.nil? + + lowest_note = score if lowest_note.nil? + + if score < lowest_note + lowest_note = score + end + end + + numeric_parser.localize(lowest_note) + end + + private + + def numeric_parser + @numeric_parser ||= I18n::Alchemy::NumericParser + end + + attr_accessor :student, :school_calendar_step_id, :classroom_id, :discipline_id +end From 585a7adaed1fc956e2d7990cbd415a8635bfe9ff Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:15:10 -0300 Subject: [PATCH 076/304] =?UTF-8?q?Cria=20scope=20para=20trazer=20avalia?= =?UTF-8?q?=C3=A7=C3=B5es=20baseado=20na=20etapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/avaliation.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/avaliation.rb b/app/models/avaliation.rb index a4b66a37f..3bb8c8a5f 100644 --- a/app/models/avaliation.rb +++ b/app/models/avaliation.rb @@ -71,6 +71,7 @@ class Avaliation < ActiveRecord::Base scope :by_test_setting_test_id, lambda { |test_setting_test_id| where(test_setting_test_id: test_setting_test_id) } scope :by_school_calendar_step, lambda { |school_calendar_step_id| by_school_calendar_step_query(school_calendar_step_id) } scope :by_school_calendar_classroom_step, lambda { |school_calendar_classroom_step_id| by_school_calendar_classroom_step_query(school_calendar_classroom_step_id) } + scope :by_step, lambda { |classroom_id, step_id| by_step_id(classroom_id, step_id) } scope :not_including_classroom_id, lambda { |classroom_id| where(arel_table[:classroom_id].not_eq(classroom_id) ) } scope :by_id, lambda { |id| where(id: id) } scope :by_test_date_after, lambda { |date| where("test_date >= ?", date) } From 2c023ebda36db14c421bc9f7d97cd4f1ad79b813 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:16:06 -0300 Subject: [PATCH 077/304] Cria URI para nova tela --- config/locales/routes.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/routes.yml b/config/locales/routes.yml index 5acc8f6c0..55bcd576a 100644 --- a/config/locales/routes.yml +++ b/config/locales/routes.yml @@ -23,6 +23,7 @@ pt-BR: school_term_recovery_diary_records: 'diario-de-recuperacoes-de-etapas' final_recovery_diary_records: 'diario-de-recuperacoes-finais' avaliation_recovery_diary_records: 'diario-de-recuperacoes-de-avaliacoes' + avaliation_recovery_lowest_notes: 'diario-de-recuperacoes-de-avaliacoes-da-menor-nota' absence_justifications: 'justificativas-de-falta' observation_diary_records: 'diario-de-observacoes' conceptual_exams: 'diario-de-avaliacoes-conceituais' From 5527de3ec4dbf06c7fd8eea3a1aae4a53567d79b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:16:22 -0300 Subject: [PATCH 078/304] =?UTF-8?q?Cria=20tradu=C3=A7=C3=A3o=20para=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/navigation.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/navigation.yml b/config/locales/navigation.yml index d1ce394a6..67e1c4454 100644 --- a/config/locales/navigation.yml +++ b/config/locales/navigation.yml @@ -30,6 +30,7 @@ pt-BR: recovery_diary_records_menu: "Recuperações" school_term_recovery_diary_records: "Diário de recuperações de etapas" avaliation_recovery_diary_records: "Diário de recuperações de avaliações" + avaliation_recovery_lowest_notes: "Diário de recuperações de avaliações da menor nota" final_recovery_diary_records: "Diário de recuperações finais" frequencies_menu: "Frequência" daily_frequencies: "Diário de frequência" From 113970bc26aafe6ec97edb1c934ed331899e6a6f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:16:50 -0300 Subject: [PATCH 079/304] =?UTF-8?q?Seta=20que=20recupera=C3=A7=C3=A3o=20po?= =?UTF-8?q?der=C3=A1=20ter=20pelo=20menos=20uma=20recupera=C3=A7=C3=A3o=20?= =?UTF-8?q?de=20avalia=C3=A7=C3=A3o=20de=20menor=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/recovery_diary_record.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/recovery_diary_record.rb b/app/models/recovery_diary_record.rb index a94c8cece..4bba210b7 100644 --- a/app/models/recovery_diary_record.rb +++ b/app/models/recovery_diary_record.rb @@ -24,6 +24,7 @@ class RecoveryDiaryRecord < ActiveRecord::Base has_one :school_term_recovery_diary_record has_one :final_recovery_diary_record has_one :avaliation_recovery_diary_record + has_one :avaliation_recovery_lowest_note scope :by_teacher_id, lambda { |teacher_id| From 77e0f0fef828877627a3d4e0ba24b9c62eb89e31 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:17:16 -0300 Subject: [PATCH 080/304] =?UTF-8?q?Cria=20m=C3=A9todo=20no=20serializer=20?= =?UTF-8?q?para=20ter=20acesso=20ao=20dado=20ap=C3=B3s=20ajax?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/serializers/student_in_recovery_serializer.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/serializers/student_in_recovery_serializer.rb b/app/serializers/student_in_recovery_serializer.rb index 1bc310a75..9788bf397 100644 --- a/app/serializers/student_in_recovery_serializer.rb +++ b/app/serializers/student_in_recovery_serializer.rb @@ -1,5 +1,5 @@ class StudentInRecoverySerializer < StudentSerializer - attributes :average, :exempted_from_discipline + attributes :average, :exempted_from_discipline, :lowest_note_in_step def average return if student_recovery_average.blank? @@ -7,6 +7,16 @@ def average "%.#{@serialization_options[:number_of_decimal_places]}f" % student_recovery_average end + def lowest_note_in_step + StudentNotesInStepFetcher.new( + object + ).lowest_note_in_step( + @serialization_options[:classroom], + @serialization_options[:discipline], + @serialization_options[:step] + ) + end + private def student_recovery_average From 3a79b567be5593f9c8eb930cbf0ad3f2aeb2083c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:18:44 -0300 Subject: [PATCH 081/304] Cria template para renderizar alunos via front-end --- .../student_fields.jst.ejs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs diff --git a/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs b/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs new file mode 100644 index 000000000..26ce1a214 --- /dev/null +++ b/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs @@ -0,0 +1,35 @@ + + + + + <% if(exempted_from_discipline) { %> + ****<%= name %> + <% } else { %> + <%= name %> + <% } %> + + + + + <%= lowest_note_in_step %> + + + + +
+ +
+ readonly <% } %>> +
+
+ + From 87de2f1e785de55a19ed8ad821c7a8d3c109834c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:19:43 -0300 Subject: [PATCH 082/304] Cria arquivo js para a nova tela --- .../avaliation_recovery_lowest_notes/form.js | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js new file mode 100644 index 000000000..158b0aacd --- /dev/null +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -0,0 +1,218 @@ +$(function () { + 'use strict'; + + var dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; + var flashMessages = new FlashMessages(); + var examRule = null; + var $unity = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_unity_id'); + var $classroom = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_classroom_id'); + var $discipline = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_discipline_id'); + var $step = $('#avaliation_recovery_lowest_note_step_id'); + var $recorded_at = $('#avaliation_recovery_lowest_note_recorded_at'); + var $submitButton = $('input[type=submit]'); + + function fetchExamRule() { + var classroom_id = $classroom.select2('val'); + + if (!_.isEmpty(classroom_id)) { + $.ajax({ + url: Routes.exam_rules_pt_br_path({ classroom_id: classroom_id, format: 'json' }), + success: handleFetchExamRuleSuccess, + error: handleFetchExamRuleError + }); + } + }; + + function handleFetchExamRuleSuccess(data) { + examRule = data.exam_rule; + + if (!$.isEmptyObject(examRule) && examRule.recovery_type === 0) { + flashMessages.error('A turma selecionada está configurada para não permitir o lançamento de recuperações de etapas.'); + } else { + flashMessages.pop(''); + } + }; + + function handleFetchExamRuleError() { + flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); + }; + + function fetchStudentsInRecovery() { + var step_id = $step.select2('val'); + var recorded_at = $recorded_at.val(); + + if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && examRule.recovery_type !== 0) { + $.ajax({ + url: Routes.in_recovery_students_pt_br_path({ + classroom_id: $classroom.select2('val'), + discipline_id: $discipline.select2('val'), + step_id: step_id, + date: recorded_at, + format: 'json' + }), + success: handleFetchStudentsInRecoverySuccess, + error: handleFetchStudentsInRecoveryError + }); + } + }; + + function handleFetchStudentsInRecoverySuccess(data) { + var students = data.students; + + if (!_.isEmpty(students)) { + var element_counter = 0; + var existing_ids = []; + var fetched_ids = []; + + hideNoItemMessage(); + + $('#recovery-diary-record-students').children('tr').each(function () { + if (!$(this).hasClass('destroy')){ + existing_ids.push(parseInt(this.id)); + } + }); + existing_ids.shift(); + + if (_.isEmpty(existing_ids)){ + _.each(students, function(student) { + var element_id = new Date().getTime() + element_counter++; + + buildStudentField(element_id, student); + }); + loadDecimalMasks(); + } else { + $.each(students, function(index, student) { + var fetched_id = student.id; + + fetched_ids.push(fetched_id); + + if ($.inArray(fetched_id, existing_ids) == -1) { + if($('#' + fetched_id).length != 0 && $('#' + fetched_id).hasClass('destroy')) { + restoreStudent(fetched_id); + } else { + var element_id = new Date().getTime() + element_counter++; + + buildStudentField(element_id, student, index); + } + existing_ids.push(fetched_id); + } + }); + + loadDecimalMasks(); + + _.each(existing_ids, function (existing_id) { + if ($.inArray(existing_id, fetched_ids) == -1) { + removeStudent(existing_id); + } + }); + } + } else { + $recorded_at.val($recorded_at.data('oldDate')); + + flashMessages.error('Nenhum aluno encontrado.'); + } + }; + + function removeStudent(id){ + $('#' + id).hide(); + $('#' + id).addClass('destroy'); + $('.nested-fields#' + id + ' [id$=_destroy]').val(true); + } + + function restoreStudent(id) { + $('#' + id).show(); + $('#' + id).removeClass('destroy'); + $('.nested-fields#' + id + ' [id$=_destroy]').val(false); + } + + $recorded_at.on('focusin', function(){ + $(this).data('oldDate', $(this).val()); + }); + + function buildStudentField(element_id, student, index = null){ + var html = JST['templates/avaliation_recovery_lowest_notes/student_fields']({ + id: student.id, + name: student.name, + lowest_note_in_step: student.lowest_note_in_step, + scale: 2, + element_id: element_id, + exempted_from_discipline: student.exempted_from_discipline + }); + + var $tbody = $('#recovery-diary-record-students'); + + if ($.isNumeric(index)) { + $(html).insertAfter($tbody.children('tr')[index]); + } else { + $tbody.append(html); + } + } + + function handleFetchStudentsInRecoveryError() { + flashMessages.error('Ocorreu um erro ao buscar os alunos.'); + }; + + function checkPersistedDailyNote() { + var step_id = $step.select2('val'); + + var filter = { + by_classroom_id: $classroom.select2('val'), + by_unity_id: $unity.select2('val'), + by_discipline_id: $discipline.select2('val'), + by_step_id: step_id, + with_daily_note_students: true + }; + + if (!_.isEmpty(step_id)) { + $.ajax({ + url: Routes.search_daily_notes_pt_br_path({ filter: filter, format: 'json' }), + success: handleFetchCheckPersistedDailyNoteSuccess, + error: handleFetchCheckPersistedDailyNoteError + }); + } + }; + + function handleFetchCheckPersistedDailyNoteSuccess(data) { + if(_.isEmpty(data.daily_notes)){ + flashMessages.error('A turma selecionada não possui notas lançadas nesta etapa.'); + } else { + flashMessages.pop(''); + fetchStudentsInRecovery(); + } + }; + + function handleFetchCheckPersistedDailyNoteError() { + flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); + }; + + function hideNoItemMessage() { + $('.no_item_found').hide(); + } + + function showNoItemMessage() { + if (!$('.nested-fields').is(":visible")) { + $('.no_item_found').show(); + } + } + + function loadDecimalMasks() { + var numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); + $('.nested-fields input.decimal').inputmask('customDecimal', { digits: numberOfDecimalPlaces }); + } + + $step.on('change', function() { + checkPersistedDailyNote(); + }); + + $recorded_at.on('change', function() { + checkPersistedDailyNote(); + }); + + $submitButton.on('click', function() { + $recorded_at.unbind(); + }); + + fetchExamRule(); + loadDecimalMasks(); + checkPersistedDailyNote(); +}); From 6ea0ac686d3a3f143ee9c3d8f714590c3eb0c0c0 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:19:59 -0300 Subject: [PATCH 083/304] =?UTF-8?q?Cria=20model=20para=20nova=20recupera?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/avaliation_recovery_lowest_note.rb | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 app/models/avaliation_recovery_lowest_note.rb diff --git a/app/models/avaliation_recovery_lowest_note.rb b/app/models/avaliation_recovery_lowest_note.rb new file mode 100644 index 000000000..aa3f6401a --- /dev/null +++ b/app/models/avaliation_recovery_lowest_note.rb @@ -0,0 +1,28 @@ +class AvaliationRecoveryLowestNote < ActiveRecord::Base + include Audit + include Stepable + include Filterable + + audited + has_associated_audits + + belongs_to :recovery_diary_record, dependent: :destroy + + accepts_nested_attributes_for :recovery_diary_record + + delegate :classroom, :classroom_id, :discipline, :discipline_id, to: :recovery_diary_record + + scope :by_unity_id, lambda { |unity_id| + joins(:recovery_diary_record).where(recovery_diary_records: { unity_id: unity_id }) + } + scope :by_classroom_id, lambda { |classroom_id| + joins(:recovery_diary_record).where(recovery_diary_records: { classroom_id: classroom_id }) + } + scope :by_discipline_id, lambda { |discipline_id| + joins(:recovery_diary_record).where(recovery_diary_records: { discipline_id: discipline_id }) + } + scope :by_created_at, lambda { |created_at| where(created_at: created_at) } + scope :ordered, -> { order(arel_table[:recorded_at].desc) } + + +end From 2b22c81f6b9a663e8409b9f410faa31dc4962e70 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:20:33 -0300 Subject: [PATCH 084/304] =?UTF-8?q?Adiciona=20teste=20b=C3=A1sico=20do=20m?= =?UTF-8?q?odel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/models/avaliation_recovery_lowest_note_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 spec/models/avaliation_recovery_lowest_note_spec.rb diff --git a/spec/models/avaliation_recovery_lowest_note_spec.rb b/spec/models/avaliation_recovery_lowest_note_spec.rb new file mode 100644 index 000000000..f2327cd85 --- /dev/null +++ b/spec/models/avaliation_recovery_lowest_note_spec.rb @@ -0,0 +1,11 @@ +require 'rails_helper' + +RSpec.describe AvaliationRecoveryLowestNote, type: :model do + describe 'associations' do + it { expect(subject).to belong_to(:recovery_diary_record).dependent(:destroy) } + end + + describe 'validations' do + # + end +end From 63d9f65ac5aea4707ff1a7b9d78316a4a8473155 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:20:51 -0300 Subject: [PATCH 085/304] Cria views para a nova tela --- .../_form.html.erb | 99 +++++++++++++++++++ .../_resources.html.erb | 27 +++++ .../_student_fields.html.erb | 29 ++++++ .../index.html.erb | 49 +++++++++ .../new.html.erb | 3 + 5 files changed, 207 insertions(+) create mode 100644 app/views/avaliation_recovery_lowest_notes/_form.html.erb create mode 100644 app/views/avaliation_recovery_lowest_notes/_resources.html.erb create mode 100644 app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb create mode 100644 app/views/avaliation_recovery_lowest_notes/index.html.erb create mode 100644 app/views/avaliation_recovery_lowest_notes/new.html.erb diff --git a/app/views/avaliation_recovery_lowest_notes/_form.html.erb b/app/views/avaliation_recovery_lowest_notes/_form.html.erb new file mode 100644 index 000000000..c162bdc10 --- /dev/null +++ b/app/views/avaliation_recovery_lowest_notes/_form.html.erb @@ -0,0 +1,99 @@ +<% content_for :js do %> + <%= javascript_include_tag 'views/avaliation_recovery_lowest_notes/form' %> +<% end %> + +<%= simple_form_for @avaliation_recovery_lowest_note, html: { class: 'smart-form' } do |f| %> + <%= f.error_notification %> + + <%= f.simple_fields_for :recovery_diary_record, @avaliation_recovery_lowest_note.recovery_diary_record.localized do |recovery_diary_record| %> + <%= recovery_diary_record.hidden_field :id %> + +
+
+
+ <%= recovery_diary_record.association :unity, as: :select2_unity, user: current_user %> +
+ +
+ <%= recovery_diary_record.association :classroom, as: :select2_classroom, user: current_user, + record: f.object %> +
+ +
+ <%= recovery_diary_record.association :discipline, + as: :select2_discipline, + user: current_user, + record: f.object, + classroom_id: @avaliation_recovery_lowest_note.recovery_diary_record.classroom_id %> +
+
+ +
+
+ <%= f.input :step_id, as: :select2_step, classroom: current_user_classroom, + readonly: @avaliation_recovery_lowest_note.persisted?, required: true %> +
+ +
+ <%= f.input :recorded_at, as: :date %> +
+
+
+ +
+ <%= t('.students') %> + + <% if recovery_diary_record.object.errors.added? :students, :at_least_one_assigned_student %> +
+ + <%= recovery_diary_record.object.errors[:students].first %> +
+ <% end %> + + + + + + + + + + + + + + + + <%= recovery_diary_record.fields_for :students, @students do |student| %> + <%= render 'student_fields', f: student %> + <% end %> + + + '> + + + + +
<%= RecoveryDiaryRecordStudent.human_attribute_name :student %><%= t('.current_lowest_note') %><%= RecoveryDiaryRecordStudent.human_attribute_name :score %>
+ <%= t('.no_item_found') %> +
+ + <%= t('.exempted_students_from_discipline_legend') %> + +
+
+ <% end %> + +
+ <%= link_to t('views.form.back'), avaliation_recovery_lowest_notes_path, class: 'btn btn-default' %> + + <% if @avaliation_recovery_lowest_note.persisted? %> + <%= link_to t('views.form.history'), + history_avaliation_recovery_lowest_note_path(@avaliation_recovery_lowest_note), + class: 'btn btn-info' %> + <% end %> + + <%= f.submit t('views.form.save'), class: 'btn btn-primary', data: { disable_with: 'Salvando...'} %> +
+<% end %> diff --git a/app/views/avaliation_recovery_lowest_notes/_resources.html.erb b/app/views/avaliation_recovery_lowest_notes/_resources.html.erb new file mode 100644 index 000000000..60b4648db --- /dev/null +++ b/app/views/avaliation_recovery_lowest_notes/_resources.html.erb @@ -0,0 +1,27 @@ + + <% if @avaliation_recovery_lowest_notes.empty? %> + + + <%= t('views.index.no_record_found')%> + + + <% else %> + <% @avaliation_recovery_lowest_notes.each do |avaliation_recovery_lowest_note| %> + + <%= avaliation_recovery_lowest_note.recovery_diary_record.unity %> + <%= avaliation_recovery_lowest_note.recovery_diary_record.classroom %> + <%= avaliation_recovery_lowest_note.recovery_diary_record.discipline %> + <%= avaliation_recovery_lowest_note.step %> + <%= l(avaliation_recovery_lowest_note.recovery_diary_record.recorded_at) %> + + <%= link_to t('views.index.edit'), + edit_avaliation_recovery_lowest_note_path(avaliation_recovery_lowest_note), + class: 'btn btn-success' %> + <%= link_to t('views.index.delete'), + avaliation_recovery_lowest_note_path(avaliation_recovery_lowest_note), + class: 'btn btn-danger', method: 'delete', data: { confirm: t('views.index.confirm') } %> + + + <% end %> + <% end %> + diff --git a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb new file mode 100644 index 000000000..6ded7b0b6 --- /dev/null +++ b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb @@ -0,0 +1,29 @@ + + + <% if f.object.persisted? %> + <%= f.hidden_field :id %> + <%= f.hidden_field :_destroy %> + <% end %> + + <% present(f.object) do |student| %> + <%= f.input :student_id, as: :hidden %> + <%= student.student_name %> + <% end %> + + + + + <%= StudentNotesInStepFetcher.new(f.object.student) + .lowest_note(@avaliation_recovery_lowest_note.recovery_diary_record.classroom, + @avaliation_recovery_lowest_note.recovery_diary_record.discipline, + @avaliation_recovery_lowest_note.step.id) + &.to_d&.truncate(decimal_places) %> + + + + + <%= f.input :score, label: false, + input_html: decimal_input_mask(decimal_places), + readonly: !f.object.active || f.object.exempted_from_discipline %> + + diff --git a/app/views/avaliation_recovery_lowest_notes/index.html.erb b/app/views/avaliation_recovery_lowest_notes/index.html.erb new file mode 100644 index 000000000..60c69802f --- /dev/null +++ b/app/views/avaliation_recovery_lowest_notes/index.html.erb @@ -0,0 +1,49 @@ +
+ <%= simple_form_for :filter, { url: avaliation_recovery_lowest_notes_path, method: :get, + html: { class: 'filterable_search_form' } } do |f| %> +
+ + + + + + + + + + + + + + + + + + + + + <%= render 'resources' %> + + + + +
+ <%= f.input :by_step_id, as: :select2_step, classroom: current_user_classroom, + label: false, placeholder: t('.by_step_id') %> + + <%= f.input :by_created_at, as: :date, label: false, placeholder: t('.by_recorded_at') %> + + <%= link_to t('.new_html'), new_avaliation_recovery_lowest_note_path, class: 'btn btn-primary pull-right' %> +
<%= RecoveryDiaryRecord.human_attribute_name :unity %><%= RecoveryDiaryRecord.human_attribute_name :classroom %><%= RecoveryDiaryRecord.human_attribute_name :discipline %> + <%= AvaliationRecoveryLowestNote.human_attribute_name :step %><%= RecoveryDiaryRecord.human_attribute_name :recorded_at %>
+ + +
+ <%= paginate @avaliation_recovery_lowest_notes %> +
+
+
+ <% end %> +
diff --git a/app/views/avaliation_recovery_lowest_notes/new.html.erb b/app/views/avaliation_recovery_lowest_notes/new.html.erb new file mode 100644 index 000000000..9ba7ceb8f --- /dev/null +++ b/app/views/avaliation_recovery_lowest_notes/new.html.erb @@ -0,0 +1,3 @@ +
+ <%= render 'form' %> +
From 9dd157491408c0ca5c8bdf00e581bb31cb1d8229 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 19 Apr 2022 20:21:59 -0300 Subject: [PATCH 086/304] Cria controller --- ...iation_recovery_lowest_notes_controller.rb | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 app/controllers/avaliation_recovery_lowest_notes_controller.rb diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb new file mode 100644 index 000000000..702ae76a0 --- /dev/null +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -0,0 +1,58 @@ +class AvaliationRecoveryLowestNotesController < ApplicationController + has_scope :page, default: 1 + has_scope :per, default: 10 + + before_action :require_current_classroom + before_action :require_current_teacher + before_action :require_allow_to_modify_prev_years, only: [:create, :update, :destroy] + + def index + step_id = (params[:filter] || []).delete(:by_step_id) + + @avaliation_recovery_lowest_notes = apply_scopes(AvaliationRecoveryLowestNote) + .includes( + recovery_diary_record: [ + :unity, + :classroom, + :discipline + ] + ) + .by_classroom_id(current_user_classroom) + .by_discipline_id(current_user_discipline) + .ordered + + if step_id.present? + @avaliation_recovery_lowest_notes = @avaliation_recovery_lowest_notes.by_step_id( + current_user_classroom, + step_id + ) + params[:filter][:by_step_id] = step_id + end + + authorize @avaliation_recovery_lowest_notes + end + + def new + @avaliation_recovery_lowest_note = AvaliationRecoveryLowestNote.new.localized + @avaliation_recovery_lowest_note.build_recovery_diary_record + @avaliation_recovery_lowest_note.recovery_diary_record.unity = current_unity + + if current_test_setting.blank? + flash[:error] = t('errors.avaliations.require_setting') + + redirect_to(avaliation_recovery_lowest_note_path) + end + + return if performed? + + @number_of_decimal_places = current_test_setting.number_of_decimal_places + end + + def create; end + + def edit; end + + def update; end + + def destroy; end +end From 87e0d1a2692adbe2275b2c516cb4c9ee4e2612b7 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 11:41:09 -0300 Subject: [PATCH 087/304] =?UTF-8?q?N=C3=A3o=20considera=20avalia=C3=A7?= =?UTF-8?q?=C3=B5es=20duplicadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/avaliation.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/avaliation.rb b/app/models/avaliation.rb index a4b66a37f..14b802b7d 100644 --- a/app/models/avaliation.rb +++ b/app/models/avaliation.rb @@ -240,6 +240,8 @@ def test_setting_test_weight_available .by_discipline_id(discipline) .by_test_setting_test_id(test_setting_test_id) .by_test_date_between(step.start_at, step.end_at) + .uniq + avaliations = avaliations.where.not(id: id) if persisted? total_weight_of_existing_avaliations = avaliations.any? ? avaliations.inject(0) { |sum, avaliation| avaliation.weight ? sum + avaliation.weight : 0 } : 0 From a737dc9dc556a4a9865805d97afef6255bc29b07 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 15:17:37 -0300 Subject: [PATCH 088/304] Refaz lista sempre que recarregar os alunos --- .../avaliation_recovery_lowest_notes/form.js | 65 +++---------------- 1 file changed, 9 insertions(+), 56 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 158b0aacd..9fe391fe2 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -57,55 +57,20 @@ $(function () { }; function handleFetchStudentsInRecoverySuccess(data) { - var students = data.students; + let students = data.students; if (!_.isEmpty(students)) { - var element_counter = 0; - var existing_ids = []; - var fetched_ids = []; - + let element_counter = 0; hideNoItemMessage(); - $('#recovery-diary-record-students').children('tr').each(function () { - if (!$(this).hasClass('destroy')){ - existing_ids.push(parseInt(this.id)); - } + $('#recovery-diary-record-students').empty(); + + _.each(students, function(student) { + let element_id = new Date().getTime() + element_counter++; + buildStudentField(element_id, student); }); - existing_ids.shift(); - - if (_.isEmpty(existing_ids)){ - _.each(students, function(student) { - var element_id = new Date().getTime() + element_counter++; - - buildStudentField(element_id, student); - }); - loadDecimalMasks(); - } else { - $.each(students, function(index, student) { - var fetched_id = student.id; - - fetched_ids.push(fetched_id); - - if ($.inArray(fetched_id, existing_ids) == -1) { - if($('#' + fetched_id).length != 0 && $('#' + fetched_id).hasClass('destroy')) { - restoreStudent(fetched_id); - } else { - var element_id = new Date().getTime() + element_counter++; - - buildStudentField(element_id, student, index); - } - existing_ids.push(fetched_id); - } - }); - - loadDecimalMasks(); - - _.each(existing_ids, function (existing_id) { - if ($.inArray(existing_id, fetched_ids) == -1) { - removeStudent(existing_id); - } - }); - } + + loadDecimalMasks(); } else { $recorded_at.val($recorded_at.data('oldDate')); @@ -113,18 +78,6 @@ $(function () { } }; - function removeStudent(id){ - $('#' + id).hide(); - $('#' + id).addClass('destroy'); - $('.nested-fields#' + id + ' [id$=_destroy]').val(true); - } - - function restoreStudent(id) { - $('#' + id).show(); - $('#' + id).removeClass('destroy'); - $('.nested-fields#' + id + ' [id$=_destroy]').val(false); - } - $recorded_at.on('focusin', function(){ $(this).data('oldDate', $(this).val()); }); From 8fe45f20a8950afc5f6312a82d45d7c7e21c61bf Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 15:20:42 -0300 Subject: [PATCH 089/304] Style code --- .../avaliation_recovery_lowest_notes/form.js | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 9fe391fe2..ebd1c5cab 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -1,18 +1,18 @@ $(function () { 'use strict'; - var dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; - var flashMessages = new FlashMessages(); - var examRule = null; - var $unity = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_unity_id'); - var $classroom = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_classroom_id'); - var $discipline = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_discipline_id'); - var $step = $('#avaliation_recovery_lowest_note_step_id'); - var $recorded_at = $('#avaliation_recovery_lowest_note_recorded_at'); - var $submitButton = $('input[type=submit]'); + let dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; + let flashMessages = new FlashMessages(); + let examRule = null; + let $unity = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_unity_id'); + let $classroom = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_classroom_id'); + let $discipline = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_discipline_id'); + let $step = $('#avaliation_recovery_lowest_note_step_id'); + let $recorded_at = $('#avaliation_recovery_lowest_note_recorded_at'); + let $submitButton = $('input[type=submit]'); function fetchExamRule() { - var classroom_id = $classroom.select2('val'); + let classroom_id = $classroom.select2('val'); if (!_.isEmpty(classroom_id)) { $.ajax({ @@ -21,7 +21,7 @@ $(function () { error: handleFetchExamRuleError }); } - }; + } function handleFetchExamRuleSuccess(data) { examRule = data.exam_rule; @@ -31,15 +31,15 @@ $(function () { } else { flashMessages.pop(''); } - }; + } function handleFetchExamRuleError() { flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); - }; + } function fetchStudentsInRecovery() { - var step_id = $step.select2('val'); - var recorded_at = $recorded_at.val(); + let step_id = $step.select2('val'); + let recorded_at = $recorded_at.val(); if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && examRule.recovery_type !== 0) { $.ajax({ @@ -54,7 +54,7 @@ $(function () { error: handleFetchStudentsInRecoveryError }); } - }; + } function handleFetchStudentsInRecoverySuccess(data) { let students = data.students; @@ -76,14 +76,14 @@ $(function () { flashMessages.error('Nenhum aluno encontrado.'); } - }; + } $recorded_at.on('focusin', function(){ $(this).data('oldDate', $(this).val()); }); function buildStudentField(element_id, student, index = null){ - var html = JST['templates/avaliation_recovery_lowest_notes/student_fields']({ + let html = JST['templates/avaliation_recovery_lowest_notes/student_fields']({ id: student.id, name: student.name, lowest_note_in_step: student.lowest_note_in_step, @@ -92,7 +92,7 @@ $(function () { exempted_from_discipline: student.exempted_from_discipline }); - var $tbody = $('#recovery-diary-record-students'); + let $tbody = $('#recovery-diary-record-students'); if ($.isNumeric(index)) { $(html).insertAfter($tbody.children('tr')[index]); @@ -103,12 +103,12 @@ $(function () { function handleFetchStudentsInRecoveryError() { flashMessages.error('Ocorreu um erro ao buscar os alunos.'); - }; + } function checkPersistedDailyNote() { - var step_id = $step.select2('val'); + let step_id = $step.select2('val'); - var filter = { + let filter = { by_classroom_id: $classroom.select2('val'), by_unity_id: $unity.select2('val'), by_discipline_id: $discipline.select2('val'), @@ -123,7 +123,7 @@ $(function () { error: handleFetchCheckPersistedDailyNoteError }); } - }; + } function handleFetchCheckPersistedDailyNoteSuccess(data) { if(_.isEmpty(data.daily_notes)){ @@ -132,24 +132,18 @@ $(function () { flashMessages.pop(''); fetchStudentsInRecovery(); } - }; + } function handleFetchCheckPersistedDailyNoteError() { flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); - }; + } function hideNoItemMessage() { $('.no_item_found').hide(); } - function showNoItemMessage() { - if (!$('.nested-fields').is(":visible")) { - $('.no_item_found').show(); - } - } - function loadDecimalMasks() { - var numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); + let numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); $('.nested-fields input.decimal').inputmask('customDecimal', { digits: numberOfDecimalPlaces }); } From 46cd1010709ead35f3d5b3402f150f896c7f7bd8 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 16:24:06 -0300 Subject: [PATCH 090/304] =?UTF-8?q?Refatora=20e=20extrai=20l=C3=B3gica=20d?= =?UTF-8?q?uplicada=20para=20um=20arquivo=20isolado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascripts/fetch_students_in_recovery.js | 32 ++++ .../avaliation_recovery_lowest_notes/form.js | 117 ++++++-------- .../form.js | 144 ++++++++---------- .../_form.html.erb | 1 + .../_form.html.erb | 1 + 5 files changed, 137 insertions(+), 158 deletions(-) create mode 100644 app/assets/javascripts/fetch_students_in_recovery.js diff --git a/app/assets/javascripts/fetch_students_in_recovery.js b/app/assets/javascripts/fetch_students_in_recovery.js new file mode 100644 index 000000000..073a90462 --- /dev/null +++ b/app/assets/javascripts/fetch_students_in_recovery.js @@ -0,0 +1,32 @@ +let dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; +let $recorded_at = null; + +function fetchStudentsInRecovery(classroom, discipline, exam_rule, step_id, recorded_at, success_callback) { + $recorded_at = recorded_at + if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && exam_rule.recovery_type !== 0) { + $.ajax({ + url: Routes.in_recovery_students_pt_br_path({ + classroom_id: classroom, + discipline_id: discipline, + step_id: step_id, + date: recorded_at, + format: 'json' + }), + success: success_callback, + error: handleFetchStudentsInRecoveryError + }); + } +} + +function hideNoItemMessage() { + $('.no_item_found').hide(); +} + +function loadDecimalMasks() { + let numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); + $('.nested-fields input.decimal').inputmask('customDecimal', { digits: numberOfDecimalPlaces }); +} + +function handleFetchStudentsInRecoveryError() { + flashMessages.error('Ocorreu um erro ao buscar os alunos.'); +} diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index ebd1c5cab..e60f4b59d 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -1,7 +1,6 @@ $(function () { 'use strict'; - let dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; let flashMessages = new FlashMessages(); let examRule = null; let $unity = $('#avaliation_recovery_lowest_note_recovery_diary_record_attributes_unity_id'); @@ -37,74 +36,10 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); } - function fetchStudentsInRecovery() { - let step_id = $step.select2('val'); - let recorded_at = $recorded_at.val(); - - if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && examRule.recovery_type !== 0) { - $.ajax({ - url: Routes.in_recovery_students_pt_br_path({ - classroom_id: $classroom.select2('val'), - discipline_id: $discipline.select2('val'), - step_id: step_id, - date: recorded_at, - format: 'json' - }), - success: handleFetchStudentsInRecoverySuccess, - error: handleFetchStudentsInRecoveryError - }); - } - } - - function handleFetchStudentsInRecoverySuccess(data) { - let students = data.students; - - if (!_.isEmpty(students)) { - let element_counter = 0; - hideNoItemMessage(); - - $('#recovery-diary-record-students').empty(); - - _.each(students, function(student) { - let element_id = new Date().getTime() + element_counter++; - buildStudentField(element_id, student); - }); - - loadDecimalMasks(); - } else { - $recorded_at.val($recorded_at.data('oldDate')); - - flashMessages.error('Nenhum aluno encontrado.'); - } - } - $recorded_at.on('focusin', function(){ $(this).data('oldDate', $(this).val()); }); - function buildStudentField(element_id, student, index = null){ - let html = JST['templates/avaliation_recovery_lowest_notes/student_fields']({ - id: student.id, - name: student.name, - lowest_note_in_step: student.lowest_note_in_step, - scale: 2, - element_id: element_id, - exempted_from_discipline: student.exempted_from_discipline - }); - - let $tbody = $('#recovery-diary-record-students'); - - if ($.isNumeric(index)) { - $(html).insertAfter($tbody.children('tr')[index]); - } else { - $tbody.append(html); - } - } - - function handleFetchStudentsInRecoveryError() { - flashMessages.error('Ocorreu um erro ao buscar os alunos.'); - } - function checkPersistedDailyNote() { let step_id = $step.select2('val'); @@ -130,21 +65,55 @@ $(function () { flashMessages.error('A turma selecionada não possui notas lançadas nesta etapa.'); } else { flashMessages.pop(''); - fetchStudentsInRecovery(); + let step_id = $step.select2('val'); + let recorded_at = $recorded_at.val(); + fetchStudentsInRecovery($classroom.select2('val'), $discipline.select2('val'), examRule, step_id, recorded_at, studentInLowestNoteRecovery); } } - function handleFetchCheckPersistedDailyNoteError() { - flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); - } + function studentInLowestNoteRecovery(data) { + let students = data.students; + + if (!_.isEmpty(students)) { + let element_counter = 0; + hideNoItemMessage(); + + $('#recovery-diary-record-students').empty(); + + _.each(students, function(student) { + let element_id = new Date().getTime() + element_counter++; + buildStudentField(element_id, student); + }); + + loadDecimalMasks(); + } else { + $recorded_at.val($recorded_at.data('oldDate')); + + flashMessages.error('Nenhum aluno encontrado.'); + } + + function buildStudentField(element_id, student, index = null){ + let html = JST['templates/avaliation_recovery_lowest_notes/student_fields']({ + id: student.id, + name: student.name, + lowest_note_in_step: student.lowest_note_in_step, + scale: 2, + element_id: element_id, + exempted_from_discipline: student.exempted_from_discipline + }); - function hideNoItemMessage() { - $('.no_item_found').hide(); + let $tbody = $('#recovery-diary-record-students'); + + if ($.isNumeric(index)) { + $(html).insertAfter($tbody.children('tr')[index]); + } else { + $tbody.append(html); + } + } } - function loadDecimalMasks() { - let numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); - $('.nested-fields input.decimal').inputmask('customDecimal', { digits: numberOfDecimalPlaces }); + function handleFetchCheckPersistedDailyNoteError() { + flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); } $step.on('change', function() { diff --git a/app/assets/javascripts/views/school_term_recovery_diary_records/form.js b/app/assets/javascripts/views/school_term_recovery_diary_records/form.js index ee08af671..d10e7344d 100644 --- a/app/assets/javascripts/views/school_term_recovery_diary_records/form.js +++ b/app/assets/javascripts/views/school_term_recovery_diary_records/form.js @@ -1,9 +1,6 @@ $(function () { 'use strict'; - // Regular expression for dd/mm/yyyy date including validation for leap year and more - var dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; - var flashMessages = new FlashMessages(); var examRule = null; var $unity = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_unity_id'); @@ -39,32 +36,48 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); }; - function fetchStudentsInRecovery() { + $recorded_at.on('focusin', function(){ + $(this).data('oldDate', $(this).val()); + }); + + function checkPersistedDailyNote() { var step_id = $step.select2('val'); - var recorded_at = $recorded_at.val(); - if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && examRule.recovery_type !== 0) { + var filter = { + by_classroom_id: $classroom.select2('val'), + by_unity_id: $unity.select2('val'), + by_discipline_id: $discipline.select2('val'), + by_step_id: step_id, + with_daily_note_students: true + }; + + if (!_.isEmpty(step_id)) { $.ajax({ - url: Routes.in_recovery_students_pt_br_path({ - classroom_id: $classroom.select2('val'), - discipline_id: $discipline.select2('val'), - step_id: step_id, - date: recorded_at, - format: 'json' - }), - success: handleFetchStudentsInRecoverySuccess, - error: handleFetchStudentsInRecoveryError + url: Routes.search_daily_notes_pt_br_path({ filter: filter, format: 'json' }), + success: handleFetchCheckPersistedDailyNoteSuccess, + error: handleFetchCheckPersistedDailyNoteError }); } }; - function handleFetchStudentsInRecoverySuccess(data) { - var students = data.students; + function handleFetchCheckPersistedDailyNoteSuccess(data) { + if(_.isEmpty(data.daily_notes)){ + flashMessages.error('A turma selecionada não possui notas lançadas nesta etapa.'); + } else { + flashMessages.pop(''); + let step_id = $step.select2('val'); + let recorded_at = $recorded_at.val(); + fetchStudentsInRecovery($classroom.select2('val'), $discipline.select2('val'), examRule, step_id, recorded_at, studentInStepRecovery); + } + }; + + function studentInStepRecovery(data) { + let students = data.students; if (!_.isEmpty(students)) { - var element_counter = 0; - var existing_ids = []; - var fetched_ids = []; + let element_counter = 0; + let existing_ids = []; + let fetched_ids = []; hideNoItemMessage(); @@ -77,14 +90,14 @@ $(function () { if (_.isEmpty(existing_ids)){ _.each(students, function(student) { - var element_id = new Date().getTime() + element_counter++; + let element_id = new Date().getTime() + element_counter++; buildStudentField(element_id, student); }); loadDecimalMasks(); } else { $.each(students, function(index, student) { - var fetched_id = student.id; + let fetched_id = student.id; fetched_ids.push(fetched_id); @@ -92,7 +105,7 @@ $(function () { if($('#' + fetched_id).length != 0 && $('#' + fetched_id).hasClass('destroy')) { restoreStudent(fetched_id); } else { - var element_id = new Date().getTime() + element_counter++; + let element_id = new Date().getTime() + element_counter++; buildStudentField(element_id, student, index); } @@ -113,75 +126,38 @@ $(function () { flashMessages.error('Nenhum aluno encontrado.'); } - }; - - function removeStudent(id){ - $('#' + id).hide(); - $('#' + id).addClass('destroy'); - $('.nested-fields#' + id + ' [id$=_destroy]').val(true); - } - - function restoreStudent(id) { - $('#' + id).show(); - $('#' + id).removeClass('destroy'); - $('.nested-fields#' + id + ' [id$=_destroy]').val(false); - } - $recorded_at.on('focusin', function(){ - $(this).data('oldDate', $(this).val()); - }); - - function buildStudentField(element_id, student, index = null){ - var html = JST['templates/school_term_recovery_diary_records/student_fields']({ - id: student.id, - name: student.name, - average: student.average, - scale: 2, - element_id: element_id, - exempted_from_discipline: student.exempted_from_discipline - }); + function buildStudentField(element_id, student, index = null){ + let html = JST['templates/school_term_recovery_diary_records/student_fields']({ + id: student.id, + name: student.name, + average: student.average, + scale: 2, + element_id: element_id, + exempted_from_discipline: student.exempted_from_discipline + }); - var $tbody = $('#recovery-diary-record-students'); + let $tbody = $('#recovery-diary-record-students'); - if ($.isNumeric(index)) { - $(html).insertAfter($tbody.children('tr')[index]); - } else { - $tbody.append(html); + if ($.isNumeric(index)) { + $(html).insertAfter($tbody.children('tr')[index]); + } else { + $tbody.append(html); + } } - } - - function handleFetchStudentsInRecoveryError() { - flashMessages.error('Ocorreu um erro ao buscar os alunos.'); - }; - function checkPersistedDailyNote() { - var step_id = $step.select2('val'); - - var filter = { - by_classroom_id: $classroom.select2('val'), - by_unity_id: $unity.select2('val'), - by_discipline_id: $discipline.select2('val'), - by_step_id: step_id, - with_daily_note_students: true - }; - - if (!_.isEmpty(step_id)) { - $.ajax({ - url: Routes.search_daily_notes_pt_br_path({ filter: filter, format: 'json' }), - success: handleFetchCheckPersistedDailyNoteSuccess, - error: handleFetchCheckPersistedDailyNoteError - }); + function removeStudent(id){ + $('#' + id).hide(); + $('#' + id).addClass('destroy'); + $('.nested-fields#' + id + ' [id$=_destroy]').val(true); } - }; - function handleFetchCheckPersistedDailyNoteSuccess(data) { - if(_.isEmpty(data.daily_notes)){ - flashMessages.error('A turma selecionada não possui notas lançadas nesta etapa.'); - } else { - flashMessages.pop(''); - fetchStudentsInRecovery(); + function restoreStudent(id) { + $('#' + id).show(); + $('#' + id).removeClass('destroy'); + $('.nested-fields#' + id + ' [id$=_destroy]').val(false); } - }; + } function handleFetchCheckPersistedDailyNoteError() { flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); diff --git a/app/views/avaliation_recovery_lowest_notes/_form.html.erb b/app/views/avaliation_recovery_lowest_notes/_form.html.erb index c162bdc10..3096cc7b2 100644 --- a/app/views/avaliation_recovery_lowest_notes/_form.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_form.html.erb @@ -1,5 +1,6 @@ <% content_for :js do %> <%= javascript_include_tag 'views/avaliation_recovery_lowest_notes/form' %> + <%= javascript_include_tag 'fetch_students_in_recovery' %> <% end %> <%= simple_form_for @avaliation_recovery_lowest_note, html: { class: 'smart-form' } do |f| %> diff --git a/app/views/school_term_recovery_diary_records/_form.html.erb b/app/views/school_term_recovery_diary_records/_form.html.erb index 81f8ce71c..e9d2d7dc4 100644 --- a/app/views/school_term_recovery_diary_records/_form.html.erb +++ b/app/views/school_term_recovery_diary_records/_form.html.erb @@ -1,5 +1,6 @@ <% content_for :js do %> <%= javascript_include_tag 'views/school_term_recovery_diary_records/form' %> + <%= javascript_include_tag 'fetch_students_in_recovery' %> <% end %> <%= simple_form_for @school_term_recovery_diary_record, html: { class: 'smart-form' } do |f| %> From 1a7523ed87ef3f7a155a9f5377a71b1f4082013d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 16:24:46 -0300 Subject: [PATCH 091/304] refactor --- .../form.js | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/assets/javascripts/views/school_term_recovery_diary_records/form.js b/app/assets/javascripts/views/school_term_recovery_diary_records/form.js index d10e7344d..4ded002d5 100644 --- a/app/assets/javascripts/views/school_term_recovery_diary_records/form.js +++ b/app/assets/javascripts/views/school_term_recovery_diary_records/form.js @@ -1,17 +1,17 @@ $(function () { 'use strict'; - var flashMessages = new FlashMessages(); - var examRule = null; - var $unity = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_unity_id'); - var $classroom = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_classroom_id'); - var $discipline = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_discipline_id'); - var $step = $('#school_term_recovery_diary_record_step_id'); - var $recorded_at = $('#school_term_recovery_diary_record_recorded_at'); - var $submitButton = $('input[type=submit]'); + let flashMessages = new FlashMessages(); + let examRule = null; + let $unity = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_unity_id'); + let $classroom = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_classroom_id'); + let $discipline = $('#school_term_recovery_diary_record_recovery_diary_record_attributes_discipline_id'); + let $step = $('#school_term_recovery_diary_record_step_id'); + let $recorded_at = $('#school_term_recovery_diary_record_recorded_at'); + let $submitButton = $('input[type=submit]'); function fetchExamRule() { - var classroom_id = $classroom.select2('val'); + let classroom_id = $classroom.select2('val'); if (!_.isEmpty(classroom_id)) { $.ajax({ @@ -20,7 +20,7 @@ $(function () { error: handleFetchExamRuleError }); } - }; + } function handleFetchExamRuleSuccess(data) { examRule = data.exam_rule; @@ -30,20 +30,20 @@ $(function () { } else { flashMessages.pop(''); } - }; + } function handleFetchExamRuleError() { flashMessages.error('Ocorreu um erro ao buscar a regra de avaliação da turma selecionada.'); - }; + } $recorded_at.on('focusin', function(){ $(this).data('oldDate', $(this).val()); }); function checkPersistedDailyNote() { - var step_id = $step.select2('val'); + let step_id = $step.select2('val'); - var filter = { + let filter = { by_classroom_id: $classroom.select2('val'), by_unity_id: $unity.select2('val'), by_discipline_id: $discipline.select2('val'), @@ -58,7 +58,7 @@ $(function () { error: handleFetchCheckPersistedDailyNoteError }); } - }; + } function handleFetchCheckPersistedDailyNoteSuccess(data) { if(_.isEmpty(data.daily_notes)){ @@ -69,7 +69,7 @@ $(function () { let recorded_at = $recorded_at.val(); fetchStudentsInRecovery($classroom.select2('val'), $discipline.select2('val'), examRule, step_id, recorded_at, studentInStepRecovery); } - }; + } function studentInStepRecovery(data) { let students = data.students; @@ -161,7 +161,7 @@ $(function () { function handleFetchCheckPersistedDailyNoteError() { flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); - }; + } function hideNoItemMessage() { $('.no_item_found').hide(); @@ -174,7 +174,7 @@ $(function () { } function loadDecimalMasks() { - var numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); + let numberOfDecimalPlaces = $('#recovery-diary-record-students').data('scale'); $('.nested-fields input.decimal').inputmask('customDecimal', { digits: numberOfDecimalPlaces }); } From 6bb3c6d2046423909e9c82741f5d4e36c29a0687 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 20:05:01 -0300 Subject: [PATCH 092/304] Ajusta template para ter os nomes corretos dos params --- .../student_fields.jst.ejs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs b/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs index 26ce1a214..6d4951a26 100644 --- a/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs +++ b/app/assets/javascripts/templates/avaliation_recovery_lowest_notes/student_fields.jst.ejs @@ -1,8 +1,8 @@ -
<%= f.input :step_id, as: :select2_step, classroom: current_user_classroom, - readonly: @avaliation_recovery_lowest_note.persisted?, required: true %> + readonly: @lowest_note_recovery.persisted?, required: true %>
@@ -89,9 +89,9 @@
<%= link_to t('views.form.back'), avaliation_recovery_lowest_notes_path, class: 'btn btn-default' %> - <% if @avaliation_recovery_lowest_note.persisted? %> + <% if @lowest_note_recovery.persisted? %> <%= link_to t('views.form.history'), - history_avaliation_recovery_lowest_note_path(@avaliation_recovery_lowest_note), + history_avaliation_recovery_lowest_note_path(@lowest_note_recovery), class: 'btn btn-info' %> <% end %> diff --git a/app/views/avaliation_recovery_lowest_notes/_resources.html.erb b/app/views/avaliation_recovery_lowest_notes/_resources.html.erb index 60b4648db..c73178493 100644 --- a/app/views/avaliation_recovery_lowest_notes/_resources.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_resources.html.erb @@ -1,12 +1,12 @@ - <% if @avaliation_recovery_lowest_notes.empty? %> + <% if @lowest_note_recoverys.empty? %> <%= t('views.index.no_record_found')%> <% else %> - <% @avaliation_recovery_lowest_notes.each do |avaliation_recovery_lowest_note| %> + <% @lowest_note_recoverys.each do |avaliation_recovery_lowest_note| %> <%= avaliation_recovery_lowest_note.recovery_diary_record.unity %> <%= avaliation_recovery_lowest_note.recovery_diary_record.classroom %> diff --git a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb index 6ded7b0b6..0d26264d3 100644 --- a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb @@ -14,16 +14,15 @@ <%= StudentNotesInStepFetcher.new(f.object.student) - .lowest_note(@avaliation_recovery_lowest_note.recovery_diary_record.classroom, - @avaliation_recovery_lowest_note.recovery_diary_record.discipline, - @avaliation_recovery_lowest_note.step.id) + .lowest_note_in_step(@lowest_note_recovery.recovery_diary_record.classroom, + @lowest_note_recovery.recovery_diary_record.discipline, + @lowest_note_recovery.step.id) &.to_d&.truncate(decimal_places) %> - <%= f.input :score, label: false, - input_html: decimal_input_mask(decimal_places), + <%= f.input :score, label: false, input_html: decimal_input_mask(decimal_places), readonly: !f.object.active || f.object.exempted_from_discipline %> diff --git a/app/views/avaliation_recovery_lowest_notes/index.html.erb b/app/views/avaliation_recovery_lowest_notes/index.html.erb index 60c69802f..b8903d3b9 100644 --- a/app/views/avaliation_recovery_lowest_notes/index.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/index.html.erb @@ -35,11 +35,11 @@
- <%= paginate @avaliation_recovery_lowest_notes %> + <%= paginate @lowest_note_recoverys %>
From 619affd915a6de2044941510a63a723195046fcd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 20 Apr 2022 20:12:53 -0300 Subject: [PATCH 097/304] =?UTF-8?q?Adiciona=20tradu=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/avaliation_recovery_lowest_note.yml | 18 ++++++++++++++++++ .../views/avaliation_recovery_lowest_notes.yml | 14 ++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 config/locales/models/avaliation_recovery_lowest_note.yml create mode 100644 config/locales/views/avaliation_recovery_lowest_notes.yml diff --git a/config/locales/models/avaliation_recovery_lowest_note.yml b/config/locales/models/avaliation_recovery_lowest_note.yml new file mode 100644 index 000000000..abf2f7a8e --- /dev/null +++ b/config/locales/models/avaliation_recovery_lowest_note.yml @@ -0,0 +1,18 @@ +pt-BR: + activerecord: + models: + avaliation_recovery_lowest_note: + one: 'Recuperação de avaliações da menor nota' + other: 'Recuperação de avaliações da menor nota' + attributes: + avaliation_recovery_lowest_note: + step: 'Etapa' + step_id: 'Etapa' + recorded_at: 'Data' + + errors: + models: + avaliation_recovery_lowest_note: + attributes: + step_id: + unique_by_step_and_classroom: 'já existe um lançamento de recuperação da menor nota para a etapa informada' diff --git a/config/locales/views/avaliation_recovery_lowest_notes.yml b/config/locales/views/avaliation_recovery_lowest_notes.yml new file mode 100644 index 000000000..85d456dff --- /dev/null +++ b/config/locales/views/avaliation_recovery_lowest_notes.yml @@ -0,0 +1,14 @@ +pt-BR: + avaliation_recovery_lowest_notes: + index: + by_classroom_id: 'Filtrar turma' + by_discipline_id: 'Filtrar disciplina' + by_step_id: 'Filtrar etapa' + by_recorded_at: 'Filtrar data' + new_html: " Novo lançamento" + + form: + students: 'Alunos' + no_item_found: 'Nenhum aluno' + current_lowest_note: 'Menor nota' + exempted_students_from_discipline_legend: '**** Alunos dispensados da disciplina' From b7397f35a7ea766251f08c3c84bc80e7dbbe010e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 00:54:25 -0300 Subject: [PATCH 098/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20traz=20a=20n?= =?UTF-8?q?ota=20de=20recupera=C3=A7=C3=A3o=20da=20menor=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/student_notes_query.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/queries/student_notes_query.rb b/app/queries/student_notes_query.rb index d0bc367cf..b256523eb 100644 --- a/app/queries/student_notes_query.rb +++ b/app/queries/student_notes_query.rb @@ -83,6 +83,19 @@ def transfer_notes ) end + def recovery_lowest_note_in_step(step) + RecoveryDiaryRecordStudent.by_student_id(student.id) + .joins(:recovery_diary_record) + .merge( + RecoveryDiaryRecord.by_discipline_id(discipline) + .by_classroom_id(classroom) + .joins(:students, :avaliation_recovery_lowest_note) + .merge( + AvaliationRecoveryLowestNote.by_step_id(classroom, step.id) + ) + ).first + end + private attr_accessor :student, :discipline, :classroom, :step_start_at, :step_end_at From 8fbf4cb137a664a4a5565fc351cf09c3e0ef432b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 00:54:52 -0300 Subject: [PATCH 099/304] =?UTF-8?q?Cria=20l=C3=B3gica=20que=20substitui=20?= =?UTF-8?q?menor=20nota=20pela=20nota=20da=20recupera=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_average_calculator.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index 41a56a818..7f64e4de4 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -9,6 +9,7 @@ def calculate(classroom, discipline, step) student_notes_query.previous_enrollments_daily_note_students test_setting = test_setting(classroom, step) + @recovery_lowest_note_in_step = student_notes_query.recovery_lowest_note_in_step(step) @recovery_diary_records = student_notes_query.recovery_diary_records return if daily_note_students.blank? && recovery_diary_records.blank? @@ -30,7 +31,7 @@ def calculate(classroom, discipline, step) private - attr_accessor :student, :daily_note_students, :recovery_diary_records + attr_accessor :student, :daily_note_students, :recovery_diary_records, :recovery_lowest_note_in_step def weight_sum avaliations = [] @@ -85,6 +86,20 @@ def extract_note_avaliation(avaliations) end values << value end + + unless recovery_lowest_note_in_step.nil? + lowest_note = 0 + index_lowest_note = 0 + + values.each_with_index do |value, index| + if value < lowest_note + index_lowest_note = index + end + end + + values[index_lowest_note] = recovery_lowest_note_in_step.score + end + values end From 22f843fcfdcd3733bce19907894eabbf09c298e8 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 00:55:52 -0300 Subject: [PATCH 100/304] Corrige nome --- .../avaliation_recovery_lowest_notes/_student_fields.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb index 0d26264d3..837e8a89e 100644 --- a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb @@ -12,7 +12,7 @@ - + <%= StudentNotesInStepFetcher.new(f.object.student) .lowest_note_in_step(@lowest_note_recovery.recovery_diary_record.classroom, @lowest_note_recovery.recovery_diary_record.discipline, From a57ad64869611a8a2d9715057036822f52b56135 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 01:02:16 -0300 Subject: [PATCH 101/304] Ajusta para mostrar nota corretamente --- .../_student_fields.html.erb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb index 837e8a89e..2645609be 100644 --- a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb @@ -14,10 +14,12 @@ <%= StudentNotesInStepFetcher.new(f.object.student) - .lowest_note_in_step(@lowest_note_recovery.recovery_diary_record.classroom, - @lowest_note_recovery.recovery_diary_record.discipline, - @lowest_note_recovery.step.id) - &.to_d&.truncate(decimal_places) %> + .lowest_note_in_step( + @lowest_note_recovery.recovery_diary_record.classroom, + @lowest_note_recovery.recovery_diary_record.discipline, + @lowest_note_recovery.step.id + ) + %> From 30d68fb1f47a1631682fc7d7383462ccbec0cf70 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 01:02:51 -0300 Subject: [PATCH 102/304] =?UTF-8?q?Importa=20JS=20s=C3=B3=20na=20cria?= =?UTF-8?q?=C3=A7=C3=A3o=20do=20registro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/avaliation_recovery_lowest_notes/_form.html.erb | 5 ----- app/views/avaliation_recovery_lowest_notes/new.html.erb | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/views/avaliation_recovery_lowest_notes/_form.html.erb b/app/views/avaliation_recovery_lowest_notes/_form.html.erb index 21e6ddf40..e028870f3 100644 --- a/app/views/avaliation_recovery_lowest_notes/_form.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_form.html.erb @@ -1,8 +1,3 @@ -<% content_for :js do %> - <%= javascript_include_tag 'views/avaliation_recovery_lowest_notes/form' %> - <%= javascript_include_tag 'fetch_students_in_recovery' %> -<% end %> - <%= simple_form_for @lowest_note_recovery, html: { class: 'smart-form' } do |f| %> <%= f.error_notification %> diff --git a/app/views/avaliation_recovery_lowest_notes/new.html.erb b/app/views/avaliation_recovery_lowest_notes/new.html.erb index 9ba7ceb8f..7a653c30d 100644 --- a/app/views/avaliation_recovery_lowest_notes/new.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/new.html.erb @@ -1,3 +1,8 @@ +<% content_for :js do %> + <%= javascript_include_tag 'views/avaliation_recovery_lowest_notes/form' %> + <%= javascript_include_tag 'fetch_students_in_recovery' %> +<% end %> +
<%= render 'form' %>
From 928998c3cb777e4dc0106afcae90ece4ae96993e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 01:46:07 -0300 Subject: [PATCH 103/304] =?UTF-8?q?Ajusta=20l=C3=B3gica=20de=20substitui?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20menor=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_average_calculator.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index 7f64e4de4..544479b8a 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -88,10 +88,12 @@ def extract_note_avaliation(avaliations) end unless recovery_lowest_note_in_step.nil? - lowest_note = 0 + lowest_note = nil index_lowest_note = 0 values.each_with_index do |value, index| + lowest_note = value if lowest_note.nil? + if value < lowest_note index_lowest_note = index end From 7c3a03e9471e60d278c09109a561160f02903540 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 02:14:47 -0300 Subject: [PATCH 104/304] =?UTF-8?q?Ajusta=20para=20n=C3=A3o=20trocar=20val?= =?UTF-8?q?ores=20no=20peso=20das=20avalia=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_average_calculator.rb | 39 ++++++++++++++-------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index 544479b8a..e2fbfdcea 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -48,7 +48,7 @@ def weight_sum avaliations << { value: recovery_diary_record.avaliation_recovery_diary_record.avaliation.weight, avaliation_id: recovery_diary_record.avaliation_recovery_diary_record.avaliation.id } end - weights = extract_note_avaliation(avaliations) + weights = extract_weight_avaliations(avaliations) weights.reduce(:+) end @@ -70,22 +70,17 @@ def score_sum avaliations << { value: score, avaliation_id: recovery_diary_record.avaliation_recovery_diary_record.avaliation.id } end - @scores = extract_note_avaliation(avaliations) + @scores = extract_note_avaliations(avaliations) @scores.reduce(:+) end - def extract_note_avaliation(avaliations) - values = [] - avaliations.uniq.group_by { |k, v| k[:avaliation_id] }.each do |avaliation| - value = 0 - if avaliation.last.count > 1 - avaliation.last.each { |array| value = array[:value] if value < array[:value] } - else - value = avaliation.last.last[:value] - end - values << value - end + def extract_weight_avaliations(avaliations) + use_unique_avaliations(avaliations) + end + + def extract_note_avaliations(avaliations) + values = use_unique_avaliations(avaliations) unless recovery_lowest_note_in_step.nil? lowest_note = nil @@ -105,6 +100,24 @@ def extract_note_avaliation(avaliations) values end + def use_unique_avaliations(avaliations) + values = [] + + avaliations.uniq.group_by { |k, v| k[:avaliation_id] }.each do |avaliation| + value = 0 + + if avaliation.last.count > 1 + avaliation.last.each { |array| value = array[:value] if value < array[:value] } + else + value = avaliation.last.last[:value] + end + + values << value + end + + values + end + def calculate_average(sum, count) count == 0 ? 0 : sum / count end From fbc9a28dfc647b2bb914968350f047de425d0696 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 02:28:22 -0300 Subject: [PATCH 105/304] =?UTF-8?q?Adiciona=20permiss=C3=A3o=20para=20aces?= =?UTF-8?q?sar=20nova=20tela?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/enumerations/features.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/enumerations/features.rb b/app/enumerations/features.rb index d883e02d8..a91db9fd7 100644 --- a/app/enumerations/features.rb +++ b/app/enumerations/features.rb @@ -48,7 +48,8 @@ class Features < EnumerateIt::Base :users, :translations, :lessons_boards, - :daily_frequencies_in_batchs + :daily_frequencies_in_batchs, + :avaliation_recovery_lowest_notes sort_by :translation From bd9a14c993826b757a0b71d37e25593d3efaa9e0 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 02:43:58 -0300 Subject: [PATCH 106/304] =?UTF-8?q?Evita=20erro=20caso=20ainda=20n=C3=A3o?= =?UTF-8?q?=20esteja=20criado=20o=20quadro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/lessons_board.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/lessons_board.rb b/app/models/lessons_board.rb index 912a33258..ef0618939 100644 --- a/app/models/lessons_board.rb +++ b/app/models/lessons_board.rb @@ -15,7 +15,7 @@ class LessonsBoard < ActiveRecord::Base accepts_nested_attributes_for :lessons_board_lessons, allow_destroy: true - delegate :classroom, :classroom_id, to: :classrooms_grade + delegate :classroom, :classroom_id, to: :classrooms_grade, allow_nil: true default_scope -> { kept } From 9a87d4f6e69034b6ee341a9a2df103b18648e02b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 03:49:46 -0300 Subject: [PATCH 107/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20retorna=20se?= =?UTF-8?q?=20na=20etapa=20x=20existe=20recupera=C3=A7=C3=A3o=20de=20menor?= =?UTF-8?q?=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/exam_record_report_form.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/forms/exam_record_report_form.rb b/app/forms/exam_record_report_form.rb index aa906ff5e..b00dcd4af 100644 --- a/app/forms/exam_record_report_form.rb +++ b/app/forms/exam_record_report_form.rb @@ -25,6 +25,15 @@ def daily_notes .order_by_avaliation_test_date end + def recovery_lowest_notes? + classroom = Classroom.find(classroom_id) + @recovery_lowest_notes = AvaliationRecoveryLowestNote.by_unity_id(unity_id) + .by_classroom_id(classroom_id) + .by_discipline_id(discipline_id) + .by_step_id(classroom, step.id) + .exists? + end + def daily_notes_classroom_steps return unless classroom_step From 292acf00727607bcce4641fc3c2d98c2f6ef6da8 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 03:50:01 -0300 Subject: [PATCH 108/304] =?UTF-8?q?Passa=20m=C3=A9todo=20por=20par=C3=A2me?= =?UTF-8?q?tro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exam_record_report_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/exam_record_report_controller.rb b/app/controllers/exam_record_report_controller.rb index 5797ef560..d5c73cd2b 100644 --- a/app/controllers/exam_record_report_controller.rb +++ b/app/controllers/exam_record_report_controller.rb @@ -32,7 +32,8 @@ def build_by_school_steps @exam_record_report_form.daily_notes, @exam_record_report_form.students_enrollments, @exam_record_report_form.complementary_exams, - @exam_record_report_form.school_term_recoveries + @exam_record_report_form.school_term_recoveries, + @exam_record_report_form.recovery_lowest_notes? ) end From 390cbfcc99ec726ffce5081ce3d048111c5326c3 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 03:50:23 -0300 Subject: [PATCH 109/304] =?UTF-8?q?Ajusta=20para=20mostrar=20os=20dados=20?= =?UTF-8?q?no=20relat=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/exam_record_report.rb | 35 +++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index a8b85d5b4..da78739a3 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -9,11 +9,11 @@ class ExamRecordReport < BaseReport # This factor represent the quantitty of students with social name needed to reduce 1 student by page SOCIAL_NAME_REDUCTION_FACTOR = 3 - def self.build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries) - new(:landscape).build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries) + def self.build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) + new(:landscape).build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) end - def build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries) + def build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) @entity_configuration = entity_configuration @teacher = teacher @year = year @@ -23,6 +23,7 @@ def build(entity_configuration, teacher, year, school_calendar_step, test_settin @students_enrollments = students_enrollments @complementary_exams = complementary_exams @school_term_recoveries = school_term_recoveries + @recovery_lowest_notes = recovery_lowest_notes @active_search = false header @@ -104,6 +105,7 @@ def header def daily_notes_table averages = {} + recovery_lowest_note = {} school_term_recovery_scores = {} self.any_student_with_dependence = false @@ -115,6 +117,19 @@ def daily_notes_table discipline, @school_calendar_step ) + + recovery_lowest_note[student_enrollment.student_id] = begin + RecoveryDiaryRecordStudent.by_student_id(student_enrollment.student_id) + .joins(:recovery_diary_record) + .merge(RecoveryDiaryRecord.by_discipline_id(discipline.id) + .by_classroom_id(classroom.id) + .joins(:students, :avaliation_recovery_lowest_note) + .merge( + AvaliationRecoveryLowestNote + .by_step_id(classroom, @school_calendar_step.id) + ) + )&.first&.score + end end exams = [] @@ -228,6 +243,12 @@ def daily_notes_table average_header = make_cell(content: "Média", size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, width: 30) first_headers_and_cells = [sequential_number_header, student_name_header].concat(avaliations) + + if @recovery_lowest_notes.exists? + lowest_note_header = make_cell(content: "Rec. geral", size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, width: 30) + first_headers_and_cells << lowest_note_header + end + (10 - avaliations.count).times { first_headers_and_cells << make_cell(content: '', background_color: 'FFFFFF', width: 55) } first_headers_and_cells << average_header @@ -245,7 +266,13 @@ def daily_notes_table student_cells = [sequence_cell, { content: (value[:dependence] ? '* ' : '') + value[:name] }].concat(value[:scores]) data_column_count = value[:scores].count + (value[:recoveries].nil? ? 0 : value[:recoveries].count) - (10 - data_column_count).times { student_cells << nil } + if @recovery_lowest_notes.exists? + student_cells << make_cell(content: "#{recovery_lowest_note[key]}", align: :center) + end + + number_colums = @recovery_lowest_notes.exists? ? 11 : 10 + + (number_colums - data_column_count).times { student_cells << nil } if daily_notes_slice == sliced_exams.last recovery_score = if school_term_recovery_scores[key] From 2cf9c7a133af66c6ef84e8e43509085cebdd2951 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 21 Apr 2022 04:22:36 -0300 Subject: [PATCH 110/304] =?UTF-8?q?Ajusta=20o=20uso=20da=20vari=C3=A1vel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/exam_record_report.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index da78739a3..bf902227d 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -244,7 +244,7 @@ def daily_notes_table first_headers_and_cells = [sequential_number_header, student_name_header].concat(avaliations) - if @recovery_lowest_notes.exists? + if @recovery_lowest_notes lowest_note_header = make_cell(content: "Rec. geral", size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, width: 30) first_headers_and_cells << lowest_note_header end @@ -266,11 +266,11 @@ def daily_notes_table student_cells = [sequence_cell, { content: (value[:dependence] ? '* ' : '') + value[:name] }].concat(value[:scores]) data_column_count = value[:scores].count + (value[:recoveries].nil? ? 0 : value[:recoveries].count) - if @recovery_lowest_notes.exists? + if @recovery_lowest_notes student_cells << make_cell(content: "#{recovery_lowest_note[key]}", align: :center) end - number_colums = @recovery_lowest_notes.exists? ? 11 : 10 + number_colums = @recovery_lowest_notes ? 11 : 10 (number_colums - data_column_count).times { student_cells << nil } From 80986484d5b22a2dce7f784e56ad3fdd58407fb9 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 16:25:23 -0300 Subject: [PATCH 111/304] =?UTF-8?q?Melhora=20busca=20de=20professores=20pa?= =?UTF-8?q?ra=20perfil=20basedo=20nos=20v=C3=ADnculos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/current_profile.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/services/current_profile.rb b/app/services/current_profile.rb index c04e249c9..3f66d7eac 100644 --- a/app/services/current_profile.rb +++ b/app/services/current_profile.rb @@ -98,10 +98,17 @@ def teachers_as_json def teachers cache ['teachers', unity&.id, classroom&.id, school_year, user_role&.role&.teacher?, user.teacher_id] do return Teacher.none if unity.blank? || classroom.blank? - return Teacher.where(id: user.teacher_id) if user_role&.role&.teacher? - teachers = Teacher.by_unity_id(unity).by_classroom(classroom).order_by_name - teachers = teachers.by_year(school_year) if school_year + teachers_collection = TeacherDisciplineClassroom.where(classroom_id: classroom.id).uniq + + if user_role&.role&.teacher? + teachers_ids = teachers_collection.where(teacher_id: user.teacher_id) + + return Teacher.where(id: teachers_ids) + end + + teachers_ids = teachers_collection.pluck(:teacher_id) + teachers = Teacher.where(id: teachers_ids).uniq.order_by_name teachers.to_a end end From 90f3e8b4ce892d6f1f01471eb6275765fde971a4 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 16:42:43 -0300 Subject: [PATCH 112/304] Ajustes CR --- app/services/current_profile.rb | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/services/current_profile.rb b/app/services/current_profile.rb index 3f66d7eac..3a945a7a2 100644 --- a/app/services/current_profile.rb +++ b/app/services/current_profile.rb @@ -98,16 +98,9 @@ def teachers_as_json def teachers cache ['teachers', unity&.id, classroom&.id, school_year, user_role&.role&.teacher?, user.teacher_id] do return Teacher.none if unity.blank? || classroom.blank? + return Teacher.where(id: user.teacher_id) if user_role&.role&.teacher? - teachers_collection = TeacherDisciplineClassroom.where(classroom_id: classroom.id).uniq - - if user_role&.role&.teacher? - teachers_ids = teachers_collection.where(teacher_id: user.teacher_id) - - return Teacher.where(id: teachers_ids) - end - - teachers_ids = teachers_collection.pluck(:teacher_id) + teachers_ids = TeacherDisciplineClassroom.where(classroom_id: classroom.id).uniq.pluck(:teacher_id) teachers = Teacher.where(id: teachers_ids).uniq.order_by_name teachers.to_a end From b93627bd30cc09e99cc0361ea0d440dda6464329 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 16:56:17 -0300 Subject: [PATCH 113/304] Remove default --- .../20220419184536_create_avaliation_recovery_lowest_notes.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb index d986040db..02f1b342c 100644 --- a/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb +++ b/db/migrate/20220419184536_create_avaliation_recovery_lowest_notes.rb @@ -4,7 +4,7 @@ def change t.references :recovery_diary_record, index: { name: 'idx_recovery_diary_record_id_on_recovery_lowest_note' }, null: false, foreign_key: true t.date :recorded_at, null: false - t.integer :step_number, null:false, default: 0 + t.integer :step_number, null: false t.timestamps null: false end end From 2b760094206f7a1506b05fafbae7514a3e15f170 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:07:58 -0300 Subject: [PATCH 114/304] =?UTF-8?q?Simplifica=20passando=20endere=C3=A7o?= =?UTF-8?q?=20da=20fun=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/avaliation_recovery_lowest_notes/form.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index e60f4b59d..1ede46cc7 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -116,13 +116,9 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); } - $step.on('change', function() { - checkPersistedDailyNote(); - }); + $step.on('change', checkPersistedDailyNote); - $recorded_at.on('change', function() { - checkPersistedDailyNote(); - }); + $recorded_at.on('change', checkPersistedDailyNote); $submitButton.on('click', function() { $recorded_at.unbind(); From b558a0750abc8177b9bb3077621ccfd431ae23d4 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:26:19 -0300 Subject: [PATCH 115/304] =?UTF-8?q?remove=20vari=C3=A1vel=20desnecess?= =?UTF-8?q?=C3=A1ria=20e=20ajusta=20nega=C3=A7=C3=A3o=20de=20if?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascripts/fetch_students_in_recovery.js | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/fetch_students_in_recovery.js b/app/assets/javascripts/fetch_students_in_recovery.js index 073a90462..6d2a52918 100644 --- a/app/assets/javascripts/fetch_students_in_recovery.js +++ b/app/assets/javascripts/fetch_students_in_recovery.js @@ -1,21 +1,21 @@ let dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; -let $recorded_at = null; function fetchStudentsInRecovery(classroom, discipline, exam_rule, step_id, recorded_at, success_callback) { - $recorded_at = recorded_at - if (!_.isEmpty(step_id) && !_.isEmpty(recorded_at.match(dateRegex)) && exam_rule.recovery_type !== 0) { - $.ajax({ - url: Routes.in_recovery_students_pt_br_path({ - classroom_id: classroom, - discipline_id: discipline, - step_id: step_id, - date: recorded_at, - format: 'json' - }), - success: success_callback, - error: handleFetchStudentsInRecoveryError - }); + if (_.isEmpty(step_id) || _.isEmpty(recorded_at.match(dateRegex)) || exam_rule.recovery_type === 0) { + return; } + + $.ajax({ + url: Routes.in_recovery_students_pt_br_path({ + classroom_id: classroom, + discipline_id: discipline, + step_id: step_id, + date: recorded_at, + format: 'json' + }), + success: success_callback, + error: handleFetchStudentsInRecoveryError + }); } function hideNoItemMessage() { From d08b598727251e222a7d86e2bd7892679ddbed3c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:30:11 -0300 Subject: [PATCH 116/304] =?UTF-8?q?Ajusta=20nega=C3=A7=C3=B5es=20no=20IF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/avaliation_recovery_lowest_notes/form.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 1ede46cc7..f6139f33f 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -13,7 +13,9 @@ $(function () { function fetchExamRule() { let classroom_id = $classroom.select2('val'); - if (!_.isEmpty(classroom_id)) { + if (_.isEmpty(classroom_id)) { + flashMessages.error('É necessário selecionar uma turma.'); + } else { $.ajax({ url: Routes.exam_rules_pt_br_path({ classroom_id: classroom_id, format: 'json' }), success: handleFetchExamRuleSuccess, @@ -25,10 +27,10 @@ $(function () { function handleFetchExamRuleSuccess(data) { examRule = data.exam_rule; - if (!$.isEmptyObject(examRule) && examRule.recovery_type === 0) { - flashMessages.error('A turma selecionada está configurada para não permitir o lançamento de recuperações de etapas.'); - } else { + if ($.isEmptyObject(examRule) && examRule.recovery_type !== 0) { flashMessages.pop(''); + } else { + flashMessages.error('A turma selecionada está configurada para não permitir o lançamento de recuperações de etapas.'); } } From a44f2435156b59dce46fc5e57a61df02bd5d5ed7 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:46:24 -0300 Subject: [PATCH 117/304] =?UTF-8?q?Refatora=20servi=C3=A7o=20e=20remove=20?= =?UTF-8?q?accessor=20inutil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_notes_in_step_fetcher.rb | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/services/student_notes_in_step_fetcher.rb b/app/services/student_notes_in_step_fetcher.rb index fb45e4c37..eca0a32c7 100644 --- a/app/services/student_notes_in_step_fetcher.rb +++ b/app/services/student_notes_in_step_fetcher.rb @@ -1,11 +1,7 @@ class StudentNotesInStepFetcher include I18n::Alchemy - def initialize(student) - @student = student - end - - def lowest_note_in_step(classroom_id, discipline_id, step_id) + def lowest_note_in_step(student_id, classroom_id, discipline_id, step_id) classroom = Classroom.find(classroom_id) avaliations = Avaliation.by_classroom_id(classroom_id) .by_discipline_id(discipline_id) @@ -15,7 +11,7 @@ def lowest_note_in_step(classroom_id, discipline_id, step_id) lowest_note = nil avaliations.each do |avaliation| - score = DailyNoteStudent.by_student_id(student.id) + score = DailyNoteStudent.by_student_id(student_id) .by_avaliation(avaliation.id) .first .try(:recovered_note) @@ -37,6 +33,4 @@ def lowest_note_in_step(classroom_id, discipline_id, step_id) def numeric_parser @numeric_parser ||= I18n::Alchemy::NumericParser end - - attr_accessor :student, :school_calendar_step_id, :classroom_id, :discipline_id end From 69c2b13ae07fd9adee8b6d9e9599e5346a688cb4 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:46:42 -0300 Subject: [PATCH 118/304] =?UTF-8?q?Instancia=20servi=C3=A7o=20no=20control?= =?UTF-8?q?ler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/avaliation_recovery_lowest_notes_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index d1f7a05b9..3c3277a0f 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -36,6 +36,7 @@ def new @lowest_note_recovery = AvaliationRecoveryLowestNote.new.localized @lowest_note_recovery.build_recovery_diary_record @lowest_note_recovery.recovery_diary_record.unity = current_unity + @students_lowest_note = StudentNotesInStepFetcher.new if current_test_setting.blank? flash[:error] = t('errors.avaliations.require_setting') @@ -69,6 +70,7 @@ def edit @lowest_note_recovery = AvaliationRecoveryLowestNote.find(params[:id]).localized step_number = @lowest_note_recovery.step_number @lowest_note_recovery.step_id = steps_fetcher.step(step_number).try(:id) + @students_lowest_note = StudentNotesInStepFetcher.new if @lowest_note_recovery.step_id.blank? recorded_at = @lowest_note_recovery.recorded_at From 2eeaa5373effad5bb6b830419f64e6440a91148b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 17:46:55 -0300 Subject: [PATCH 119/304] =?UTF-8?q?Ajusta=20chamada=20do=20servi=C3=A7o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_student_fields.html.erb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb index 2645609be..3da92a3cc 100644 --- a/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_student_fields.html.erb @@ -13,12 +13,12 @@ - <%= StudentNotesInStepFetcher.new(f.object.student) - .lowest_note_in_step( - @lowest_note_recovery.recovery_diary_record.classroom, - @lowest_note_recovery.recovery_diary_record.discipline, - @lowest_note_recovery.step.id - ) + <%= @students_lowest_note.lowest_note_in_step( + f.object.student.id, + @lowest_note_recovery.recovery_diary_record.classroom, + @lowest_note_recovery.recovery_diary_record.discipline, + @lowest_note_recovery.step.id + ) %> From 5a661dd1224d3c72505f064d483537f9eff04368 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 18:14:15 -0300 Subject: [PATCH 120/304] =?UTF-8?q?N=C3=A3o=20lan=C3=A7a=20mensagens=20de?= =?UTF-8?q?=20erro=20pois=20o=20lan=C3=A7amento=20n=C3=A3o=20depende=20de?= =?UTF-8?q?=20configura=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/avaliation_recovery_lowest_notes/form.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index f6139f33f..d54673697 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -26,12 +26,6 @@ $(function () { function handleFetchExamRuleSuccess(data) { examRule = data.exam_rule; - - if ($.isEmptyObject(examRule) && examRule.recovery_type !== 0) { - flashMessages.pop(''); - } else { - flashMessages.error('A turma selecionada está configurada para não permitir o lançamento de recuperações de etapas.'); - } } function handleFetchExamRuleError() { From 6e66048a1a94936b803168222b1033ddc2d9cfd9 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 18:27:13 -0300 Subject: [PATCH 121/304] Usa moment para formatar datas --- app/assets/javascripts/fetch_students_in_recovery.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/javascripts/fetch_students_in_recovery.js b/app/assets/javascripts/fetch_students_in_recovery.js index 6d2a52918..900da7971 100644 --- a/app/assets/javascripts/fetch_students_in_recovery.js +++ b/app/assets/javascripts/fetch_students_in_recovery.js @@ -1,7 +1,5 @@ -let dateRegex = '^(?:(?:31(\\/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$'; - function fetchStudentsInRecovery(classroom, discipline, exam_rule, step_id, recorded_at, success_callback) { - if (_.isEmpty(step_id) || _.isEmpty(recorded_at.match(dateRegex)) || exam_rule.recovery_type === 0) { + if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at)._i) || exam_rule.recovery_type === 0) { return; } From 40fc12eabce0524fc338bb0f01a3f0409ada784a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:10:33 -0300 Subject: [PATCH 122/304] =?UTF-8?q?Cria=20m=C3=A9todo=20para=20validar=20s?= =?UTF-8?q?e=20j=C3=A1=20existe=20recupera=C3=A7=C3=A3o=20na=20etapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avaliation_recovery_lowest_notes_controller.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 3c3277a0f..fcc8480b0 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -243,4 +243,12 @@ def student_active_on_date?(student_enrollment, recovery_diary_record) .by_date(recovery_diary_record.recorded_at) .any? end + + def exists_recovery_on_step + return if params[:classroom_id].blank? || params[:step_id].blank? + + classroom = Classroom.find(params[:classroom_id]) + + render json: AvaliationRecoveryLowestNote.by_step_id(classroom, params[:step_id]).exists? + end end From 73562476a8bd05a62e39a72f23977c8a506fe5f1 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:10:46 -0300 Subject: [PATCH 123/304] Cria rota para consultar via ajax --- config/routes.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/routes.rb b/config/routes.rb index 2a2e84cae..d763d38de 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -275,7 +275,11 @@ end resources :final_recovery_diary_records, concerns: :history resources :avaliation_recovery_diary_records, concerns: :history - resources :avaliation_recovery_lowest_notes, concerns: :history + resources :avaliation_recovery_lowest_notes, concerns: :history do + collection do + get :exists_recovery_on_step + end + end resources :conceptual_exams, concerns: :history do collection do get :exempted_disciplines From 5bcd236904412349b11a8bfa18d64f7c25090b0d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:11:29 -0300 Subject: [PATCH 124/304] =?UTF-8?q?Ajusta=20para=20validar=20se=20j=C3=A1?= =?UTF-8?q?=20existe=20recupera=C3=A7=C3=A3o=20antes=20de=20carregar=20dad?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avaliation_recovery_lowest_notes/form.js | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index d54673697..9b6afe175 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -112,7 +112,39 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar as notas lançadas para esta turma nesta etapa.'); } - $step.on('change', checkPersistedDailyNote); + function checkExistsRecoveryLowestNoteOnStep() { + let step_id = $step.select2('val'); + let classroom_id = $classroom.select2('val'); + + if (_.isEmpty(step_id)) { + } else { + $.ajax({ + url: Routes.exists_recovery_on_step_avaliation_recovery_lowest_notes_pt_br_path({ + format: 'json', + classroom_id: classroom_id, + step_id: step_id + }), + success: handleFetchCheckExistsRecoveryLowestNoteOnStepSuccess, + error: handleFetchCheckExistsRecoveryLowestNoteOnStepError + }); + } + } + + function handleFetchCheckExistsRecoveryLowestNoteOnStepSuccess(data) { + if (data === true) { + flashMessages.error('A turma selecionada já possui uma Recuperação de menor nota nesta etapa.'); + } else { + checkPersistedDailyNote(); + } + } + + function handleFetchCheckExistsRecoveryLowestNoteOnStepError() { + flashMessages.error('Ocorreu um erro ao buscar as recuperações de menor nota da etapa'); + } + + $step.on('change', function() { + checkExistsRecoveryLowestNoteOnStep(); + }); $recorded_at.on('change', checkPersistedDailyNote); From 6b72ba95275c58a9c5788ab40eed9a6e2c1ff348 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:14:46 -0300 Subject: [PATCH 125/304] =?UTF-8?q?Ajusta=20m=C3=A9todo=20deprecado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/javascripts/fetch_students_in_recovery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/fetch_students_in_recovery.js b/app/assets/javascripts/fetch_students_in_recovery.js index 900da7971..7305267f3 100644 --- a/app/assets/javascripts/fetch_students_in_recovery.js +++ b/app/assets/javascripts/fetch_students_in_recovery.js @@ -1,5 +1,5 @@ function fetchStudentsInRecovery(classroom, discipline, exam_rule, step_id, recorded_at, success_callback) { - if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at)._i) || exam_rule.recovery_type === 0) { + if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at, 'MM-DD-YYYY')._i) || exam_rule.recovery_type === 0) { return; } From 6a93579b6f8a876d832d166a04da2fc3e6315746 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:24:52 -0300 Subject: [PATCH 126/304] =?UTF-8?q?Ajusta=20uso=20do=20servi=C3=A7o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/serializers/student_in_recovery_serializer.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/serializers/student_in_recovery_serializer.rb b/app/serializers/student_in_recovery_serializer.rb index 9788bf397..46173eec3 100644 --- a/app/serializers/student_in_recovery_serializer.rb +++ b/app/serializers/student_in_recovery_serializer.rb @@ -8,9 +8,8 @@ def average end def lowest_note_in_step - StudentNotesInStepFetcher.new( - object - ).lowest_note_in_step( + StudentNotesInStepFetcher.new.lowest_note_in_step( + object, @serialization_options[:classroom], @serialization_options[:discipline], @serialization_options[:step] From f762a4bd420dc88a16d63d42713d37d7b1001a49 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:25:04 -0300 Subject: [PATCH 127/304] =?UTF-8?q?Ajusta=20identa=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/students_controller.rb | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 48eccf05f..b38f5c3bf 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -52,13 +52,12 @@ def search_api def in_recovery @students = StudentsInRecoveryFetcher.new( - configuration, - params[:classroom_id], - params[:discipline_id], - params[:step_id], - params[:date].to_date.to_s - ) - .fetch + configuration, + params[:classroom_id], + params[:discipline_id], + params[:step_id], + params[:date].to_date.to_s + ).fetch render( json: @students, From 6631745896c27e249abcb8e4528d826db8cdb67a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:38:44 -0300 Subject: [PATCH 128/304] Ajusta chamada --- .../views/avaliation_recovery_lowest_notes/form.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 9b6afe175..a2db5c191 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -48,6 +48,7 @@ $(function () { }; if (!_.isEmpty(step_id)) { + console.log('passei aq'); $.ajax({ url: Routes.search_daily_notes_pt_br_path({ filter: filter, format: 'json' }), success: handleFetchCheckPersistedDailyNoteSuccess, @@ -133,8 +134,6 @@ $(function () { function handleFetchCheckExistsRecoveryLowestNoteOnStepSuccess(data) { if (data === true) { flashMessages.error('A turma selecionada já possui uma Recuperação de menor nota nesta etapa.'); - } else { - checkPersistedDailyNote(); } } @@ -142,9 +141,7 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar as recuperações de menor nota da etapa'); } - $step.on('change', function() { - checkExistsRecoveryLowestNoteOnStep(); - }); + $step.on('change', checkExistsRecoveryLowestNoteOnStep); $recorded_at.on('change', checkPersistedDailyNote); @@ -154,5 +151,4 @@ $(function () { fetchExamRule(); loadDecimalMasks(); - checkPersistedDailyNote(); }); From d2b70e9e7b615601976cce8ec83fcddd1459f94e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 25 Apr 2022 19:39:46 -0300 Subject: [PATCH 129/304] adiciona mensagem de erro caso etapa venha vazia --- .../javascripts/views/avaliation_recovery_lowest_notes/form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index a2db5c191..9f7416a90 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -118,6 +118,7 @@ $(function () { let classroom_id = $classroom.select2('val'); if (_.isEmpty(step_id)) { + flashMessages.error('É necessário selecionar uma etapa.'); } else { $.ajax({ url: Routes.exists_recovery_on_step_avaliation_recovery_lowest_notes_pt_br_path({ From de25b41171f3cd33069c433dd144776a181fa435 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 10:59:12 -0300 Subject: [PATCH 130/304] =?UTF-8?q?Limpa=20mensagem=20de=20erro=20caso=20n?= =?UTF-8?q?=C3=A3o=20exista?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascripts/views/avaliation_recovery_lowest_notes/form.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 9f7416a90..aa996b9b4 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -135,6 +135,8 @@ $(function () { function handleFetchCheckExistsRecoveryLowestNoteOnStepSuccess(data) { if (data === true) { flashMessages.error('A turma selecionada já possui uma Recuperação de menor nota nesta etapa.'); + } else { + flashMessages.pop(''); } } From 681621015b149d9f5cbbdf48b9805441e2ae57eb Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 11:25:45 -0300 Subject: [PATCH 131/304] =?UTF-8?q?Substitui=20nota=20apenas=20se=20n?= =?UTF-8?q?=C3=A3o=20for=20nil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_average_calculator.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index e2fbfdcea..663d2faa3 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -94,7 +94,9 @@ def extract_note_avaliations(avaliations) end end - values[index_lowest_note] = recovery_lowest_note_in_step.score + if recovery_lowest_note_in_step.score != nil + values[index_lowest_note] = recovery_lowest_note_in_step.score + end end values From b103d702694323f7ab4e64a36392c4f03210997d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 11:26:48 -0300 Subject: [PATCH 132/304] Remove console.log atoa --- .../javascripts/views/avaliation_recovery_lowest_notes/form.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index aa996b9b4..532b4025c 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -48,7 +48,6 @@ $(function () { }; if (!_.isEmpty(step_id)) { - console.log('passei aq'); $.ajax({ url: Routes.search_daily_notes_pt_br_path({ filter: filter, format: 'json' }), success: handleFetchCheckPersistedDailyNoteSuccess, From 2d0676d3bfc4695037d835377b966cae2e649511 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 11:52:24 -0300 Subject: [PATCH 133/304] =?UTF-8?q?N=C3=A3o=20tenta=20renderizar=20caso=20?= =?UTF-8?q?n=C3=A3o=20tenha=20@students?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/avaliation_recovery_lowest_notes/_form.html.erb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/views/avaliation_recovery_lowest_notes/_form.html.erb b/app/views/avaliation_recovery_lowest_notes/_form.html.erb index e028870f3..a1c4a8a93 100644 --- a/app/views/avaliation_recovery_lowest_notes/_form.html.erb +++ b/app/views/avaliation_recovery_lowest_notes/_form.html.erb @@ -62,9 +62,10 @@ <%= t('.no_item_found') %> - - <%= recovery_diary_record.fields_for :students, @students do |student| %> - <%= render 'student_fields', f: student %> + <% if @students != nil %> + <%= recovery_diary_record.fields_for :students, @students do |student| %> + <%= render 'student_fields', f: student %> + <% end %> <% end %> From a607dfcbb2ec7bd5a1f827a01508756f22300c02 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 11:52:36 -0300 Subject: [PATCH 134/304] Valida data dentro da etapa --- app/models/avaliation_recovery_lowest_note.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/avaliation_recovery_lowest_note.rb b/app/models/avaliation_recovery_lowest_note.rb index 1232b7e44..892706d19 100644 --- a/app/models/avaliation_recovery_lowest_note.rb +++ b/app/models/avaliation_recovery_lowest_note.rb @@ -30,6 +30,10 @@ class AvaliationRecoveryLowestNote < ActiveRecord::Base validate :unique_by_step_and_classroom + def ignore_date_validates + !(new_record? || recorded_at != recorded_at_was) + end + def set_recorded_at return if recovery_diary_record.blank? From 265f8fe383a17021a8d0980b21bcb1c09ff05164 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 12:04:04 -0300 Subject: [PATCH 135/304] =?UTF-8?q?Cria=20m=C3=A9todo=20para=20carregar=20?= =?UTF-8?q?dados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iation_recovery_lowest_notes_controller.rb | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index fcc8480b0..34cb3847b 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -70,7 +70,6 @@ def edit @lowest_note_recovery = AvaliationRecoveryLowestNote.find(params[:id]).localized step_number = @lowest_note_recovery.step_number @lowest_note_recovery.step_id = steps_fetcher.step(step_number).try(:id) - @students_lowest_note = StudentNotesInStepFetcher.new if @lowest_note_recovery.step_id.blank? recorded_at = @lowest_note_recovery.recorded_at @@ -80,16 +79,7 @@ def edit end authorize @lowest_note_recovery - - reload_students_list - - students_in_recovery = fetch_students_in_recovery - mark_students_not_in_recovery_for_destruction(students_in_recovery) - mark_exempted_disciplines(students_in_recovery) - add_missing_students(students_in_recovery) - - @any_student_exempted_from_discipline = any_student_exempted_from_discipline? - @number_of_decimal_places = current_test_setting.number_of_decimal_places + fetch_data end def update @@ -137,6 +127,20 @@ def resource_params ) end + def fetch_data + @students_lowest_note = StudentNotesInStepFetcher.new + + reload_students_list + + students_in_recovery = fetch_students_in_recovery + mark_students_not_in_recovery_for_destruction(students_in_recovery) + mark_exempted_disciplines(students_in_recovery) + add_missing_students(students_in_recovery) + + @any_student_exempted_from_discipline = any_student_exempted_from_discipline? + @number_of_decimal_places = current_test_setting.number_of_decimal_places + end + def steps_fetcher @steps_fetcher ||= StepsFetcher.new(current_user_classroom) end From 2a1205882804e8bdd4d6f8daafb7ec136c422746 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 12:10:37 -0300 Subject: [PATCH 136/304] Sempre traz todos alunos --- ...iation_recovery_lowest_notes_controller.rb | 44 ++++++++----------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 34cb3847b..6c9bfa258 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -132,10 +132,9 @@ def fetch_data reload_students_list - students_in_recovery = fetch_students_in_recovery - mark_students_not_in_recovery_for_destruction(students_in_recovery) - mark_exempted_disciplines(students_in_recovery) - add_missing_students(students_in_recovery) + students = fetch_students + mark_exempted_disciplines(students) + add_missing_students(students) @any_student_exempted_from_discipline = any_student_exempted_from_discipline? @number_of_decimal_places = current_test_setting.number_of_decimal_places @@ -154,26 +153,6 @@ def decimal_places end helper_method :decimal_places - def fetch_students_in_recovery - StudentsInRecoveryFetcher.new( - api_configuration, - @lowest_note_recovery.recovery_diary_record.classroom_id, - @lowest_note_recovery.recovery_diary_record.discipline_id, - @lowest_note_recovery.step_id, - @lowest_note_recovery.recorded_at - ).fetch - end - - def mark_students_not_in_recovery_for_destruction(students_in_recovery) - @students.each do |student| - is_student_in_recovery = students_in_recovery.any? do |student_in_recovery| - student.student.id == student_in_recovery.id - end - - student.mark_for_destruction unless is_student_in_recovery - end - end - def mark_exempted_disciplines(students_in_recovery) @students.each do |student| exempted_from_discipline = students_in_recovery.find do |student_in_recovery| @@ -205,7 +184,20 @@ def api_configuration IeducarApiConfiguration.current end - def fetch_student_enrollments + def fetch_students + recovery_diary_record = @lowest_note_recovery.recovery_diary_record + return unless recovery_diary_record.recorded_at + + StudentEnrollmentsList.new( + classroom: recovery_diary_record.classroom, + discipline: recovery_diary_record.discipline, + score_type: StudentEnrollmentScoreTypeFilters::NUMERIC, + date: recovery_diary_record.recorded_at, + search_type: :by_date + ).student_enrollments.map(&:student) + end + + def fetch_students_enrollments recovery_diary_record = @lowest_note_recovery.recovery_diary_record return unless recovery_diary_record.recorded_at @@ -219,7 +211,7 @@ def fetch_student_enrollments end def reload_students_list - return unless (student_enrollments = fetch_student_enrollments) + return unless (student_enrollments = fetch_students_enrollments) recovery_diary_record = @lowest_note_recovery.recovery_diary_record From 9b225d6b2511d654af973e3d3c621da7f2fe855b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 12:25:53 -0300 Subject: [PATCH 137/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20retorna=20se?= =?UTF-8?q?=20a=20data=20est=C3=A1=20dentro=20da=20etapa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avaliation_recovery_lowest_notes_controller.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 6c9bfa258..69269130b 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -247,4 +247,13 @@ def exists_recovery_on_step render json: AvaliationRecoveryLowestNote.by_step_id(classroom, params[:step_id]).exists? end + + def recorded_at_in_selected_step + return if params[:step_id].blank? || params[:recorded_at].blank? || params[:classroom_id].blank? + + classroom = Classroom.find(params[:classroom_id]) + steps_fetcher = StepsFetcher.new(classroom) + + render json: steps_fetcher.step_belongs_to_date?(params[:step_id], params[:recorded_at]) + end end From 73db9de3ac7c94dbbf2a58066596f5648348ce6e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 12:26:05 -0300 Subject: [PATCH 138/304] Adiciona rota para consultar via ajax --- config/routes.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.rb b/config/routes.rb index d763d38de..a7ff1f903 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -278,6 +278,7 @@ resources :avaliation_recovery_lowest_notes, concerns: :history do collection do get :exists_recovery_on_step + get :recorded_at_in_selected_step end end resources :conceptual_exams, concerns: :history do From d520713fc939b9ddc371bf84df699e2a622eea5c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 12:26:22 -0300 Subject: [PATCH 139/304] Ajusta js para sempre validar data antes de buscar alunos --- .../avaliation_recovery_lowest_notes/form.js | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 532b4025c..54ce07c84 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -143,9 +143,39 @@ $(function () { flashMessages.error('Ocorreu um erro ao buscar as recuperações de menor nota da etapa'); } + function validDateOnStep() { + let recorded_at = $recorded_at.val(); + let step_id = $step.select2('val'); + let classroom_id = $classroom.select2('val'); + + $.ajax({ + url: Routes.recorded_at_in_selected_step_avaliation_recovery_lowest_notes_pt_br_path({ + format: 'json', + classroom_id: classroom_id, + step_id: step_id, + recorded_at: recorded_at + }), + success: handleFetchRecordedAtOnStepSuccess, + error: handleFetchRecordedAtOnStepError + }); + } + + function handleFetchRecordedAtOnStepSuccess(data) { + if (data === true) { + flashMessages.pop(''); + checkPersistedDailyNote(); + } else { + flashMessages.error('Data deve estar dentro da etapa selecionada'); + } + } + + function handleFetchRecordedAtOnStepError() { + flashMessages.error('Ocorreu um erro ao validar a data'); + } + $step.on('change', checkExistsRecoveryLowestNoteOnStep); - $recorded_at.on('change', checkPersistedDailyNote); + $recorded_at.on('change', validDateOnStep); $submitButton.on('click', function() { $recorded_at.unbind(); From 5a2d9013fef3795aad437f2e75a62ade20b1e27a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 15:16:14 -0300 Subject: [PATCH 140/304] Cria rota para trazer todos alunos baseado na data --- app/serializers/student_lowest_note_serializer.rb | 12 ++++++++++++ config/routes.rb | 1 + 2 files changed, 13 insertions(+) create mode 100644 app/serializers/student_lowest_note_serializer.rb diff --git a/app/serializers/student_lowest_note_serializer.rb b/app/serializers/student_lowest_note_serializer.rb new file mode 100644 index 000000000..5a848195f --- /dev/null +++ b/app/serializers/student_lowest_note_serializer.rb @@ -0,0 +1,12 @@ +class StudentLowestNoteSerializer < StudentSerializer + attributes :exempted_from_discipline, :lowest_note_in_step + + def lowest_note_in_step + StudentNotesInStepFetcher.new.lowest_note_in_step( + object, + @serialization_options[:classroom], + @serialization_options[:discipline], + @serialization_options[:step] + ) + end +end diff --git a/config/routes.rb b/config/routes.rb index a7ff1f903..c20b56edf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -64,6 +64,7 @@ resources :students do collection do + get :recovery_lowest_note get :search_api get :in_recovery get :select2_remote From 3ea9716b428b515fe01739ae79689981153fdab3 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 15:16:36 -0300 Subject: [PATCH 141/304] =?UTF-8?q?Cria=20serializer=20para=20novo=20forma?= =?UTF-8?q?to=20de=20recupera=C3=A7=C3=A3o=20de=20menor=20nota?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/serializers/student_lowest_note_serializer.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/serializers/student_lowest_note_serializer.rb b/app/serializers/student_lowest_note_serializer.rb index 5a848195f..e38ef9c15 100644 --- a/app/serializers/student_lowest_note_serializer.rb +++ b/app/serializers/student_lowest_note_serializer.rb @@ -1,9 +1,13 @@ class StudentLowestNoteSerializer < StudentSerializer - attributes :exempted_from_discipline, :lowest_note_in_step + attributes :exempted_from_discipline, :lowest_note_in_step, :student_notes_in_step_fetcher + + def student_notes_in_step_fetcher + @student_notes_in_step_fetcher ||= StudentNotesInStepFetcher.new + end def lowest_note_in_step - StudentNotesInStepFetcher.new.lowest_note_in_step( - object, + student_notes_in_step_fetcher.lowest_note_in_step( + object.id, @serialization_options[:classroom], @serialization_options[:discipline], @serialization_options[:step] From f92a7edbe5989741dc07a1927f2d22bd39a9d624 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 15:16:49 -0300 Subject: [PATCH 142/304] =?UTF-8?q?Cria=20m=C3=A9todo=20para=20trazer=20al?= =?UTF-8?q?unos=20baseado=20na=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/students_controller.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index b38f5c3bf..d10cacaf3 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -50,6 +50,29 @@ def search_api end end + def recovery_lowest_note + return render json: nil if params[:classroom_id].blank? || params[:date].blank? + + + @students = StudentEnrollmentsList.new( + classroom: params[:classroom_id], + discipline: params[:discipline_id], + search_type: :by_date, + date: params[:date], + score_type: params[:score_type] + ).student_enrollments.map(&:student) + + + render( + json: @students, + each_serializer: StudentLowestNoteSerializer, + discipline: discipline, + classroom: classroom, + step: step, + number_of_decimal_places: test_setting(classroom, step).number_of_decimal_places + ) + end + def in_recovery @students = StudentsInRecoveryFetcher.new( configuration, From dcbaf3938cf8c47a5b5d562a0217f81bc0a45c3f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 15:17:03 -0300 Subject: [PATCH 143/304] Faz consulta na rota correta --- .../avaliation_recovery_lowest_notes/form.js | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 54ce07c84..00ad59417 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -63,10 +63,32 @@ $(function () { flashMessages.pop(''); let step_id = $step.select2('val'); let recorded_at = $recorded_at.val(); - fetchStudentsInRecovery($classroom.select2('val'), $discipline.select2('val'), examRule, step_id, recorded_at, studentInLowestNoteRecovery); + fetchStudents($classroom.select2('val'), $discipline.select2('val'), examRule, step_id, recorded_at); } } + function fetchStudents(classroom, discipline, exam_rule, step_id, recorded_at) { + if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at, 'MM-DD-YYYY')._i) || exam_rule.recovery_type === 0) { + return; + } + + $.ajax({ + url: Routes.recovery_lowest_note_students_pt_br_path({ + classroom_id: classroom, + discipline_id: discipline, + step_id: step_id, + date: recorded_at, + format: 'json' + }), + success: studentInLowestNoteRecovery, + error: handleFetchStudentsError + }); + } + + function handleFetchStudentsError() { + flashMessages.error('Ocorreu um erro ao buscar os alunos.'); + } + function studentInLowestNoteRecovery(data) { let students = data.students; From 2485497a5390a3894188d56bfdc527aff96ea6df Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 15:39:12 -0300 Subject: [PATCH 144/304] Ajusta label do campo de menor nota --- config/locales/views/avaliation_recovery_lowest_notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/views/avaliation_recovery_lowest_notes.yml b/config/locales/views/avaliation_recovery_lowest_notes.yml index 85d456dff..565460d95 100644 --- a/config/locales/views/avaliation_recovery_lowest_notes.yml +++ b/config/locales/views/avaliation_recovery_lowest_notes.yml @@ -10,5 +10,5 @@ pt-BR: form: students: 'Alunos' no_item_found: 'Nenhum aluno' - current_lowest_note: 'Menor nota' + current_lowest_note: 'Menor nota válida' exempted_students_from_discipline_legend: '**** Alunos dispensados da disciplina' From 4129080a3e7b2e918fb918baa5cb5518b26b5e05 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 17:14:19 -0300 Subject: [PATCH 145/304] =?UTF-8?q?Substitui=20nota=20apenas=20se=20for=20?= =?UTF-8?q?menor=20que=20a=20recupera=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_average_calculator.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index 663d2faa3..2db120063 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -94,8 +94,10 @@ def extract_note_avaliations(avaliations) end end - if recovery_lowest_note_in_step.score != nil - values[index_lowest_note] = recovery_lowest_note_in_step.score + if recovery_lowest_note_in_step.score.present? + if recovery_lowest_note_in_step.score > values[index_lowest_note] + values[index_lowest_note] = recovery_lowest_note_in_step.score + end end end From 5bcca82a4726aaf8585932584cb8c3c6170fc593 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 17:14:51 -0300 Subject: [PATCH 146/304] =?UTF-8?q?Passa=20menores=20notas=20como=20par?= =?UTF-8?q?=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exam_record_report_controller.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/exam_record_report_controller.rb b/app/controllers/exam_record_report_controller.rb index d5c73cd2b..562c27f23 100644 --- a/app/controllers/exam_record_report_controller.rb +++ b/app/controllers/exam_record_report_controller.rb @@ -33,7 +33,8 @@ def build_by_school_steps @exam_record_report_form.students_enrollments, @exam_record_report_form.complementary_exams, @exam_record_report_form.school_term_recoveries, - @exam_record_report_form.recovery_lowest_notes? + @exam_record_report_form.recovery_lowest_notes?, + @exam_record_report_form.lowest_notes ) end @@ -47,7 +48,9 @@ def build_by_classroom_steps @exam_record_report_form.daily_notes_classroom_steps, @exam_record_report_form.students_enrollments, @exam_record_report_form.complementary_exams, - @exam_record_report_form.school_term_recoveries + @exam_record_report_form.school_term_recoveries, + @exam_record_report_form.recovery_lowest_notes?, + @exam_record_report_form.lowest_notes ) end From a3d2c4a07d447b7c9ba12c8edf729af846496f01 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 17:15:05 -0300 Subject: [PATCH 147/304] Cria query que traz menores notas na etapa --- app/forms/exam_record_report_form.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/forms/exam_record_report_form.rb b/app/forms/exam_record_report_form.rb index b00dcd4af..3c7b95eb4 100644 --- a/app/forms/exam_record_report_form.rb +++ b/app/forms/exam_record_report_form.rb @@ -34,6 +34,22 @@ def recovery_lowest_notes? .exists? end + def lowest_notes + classroom = Classroom.find(classroom_id) + + RecoveryDiaryRecordStudent.by_student_id(students_enrollments.map(&:student_id)) + .joins(:recovery_diary_record) + .merge( + RecoveryDiaryRecord.by_discipline_id(discipline_id) + .by_classroom_id(classroom_id) + .joins(:students, :avaliation_recovery_lowest_note) + .merge( + AvaliationRecoveryLowestNote + .by_step_id(classroom, step.id) + ) + ) + end + def daily_notes_classroom_steps return unless classroom_step From c20d7925d36a7af21bf768932dcd986dff3fb416 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 17:15:30 -0300 Subject: [PATCH 148/304] Itera nas menores notas para setar as mesmas para os alunos --- app/reports/exam_record_report.rb | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index bf902227d..af1c33c90 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -9,11 +9,11 @@ class ExamRecordReport < BaseReport # This factor represent the quantitty of students with social name needed to reduce 1 student by page SOCIAL_NAME_REDUCTION_FACTOR = 3 - def self.build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) - new(:landscape).build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) + def self.build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes, lowest_notes) + new(:landscape).build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes, lowest_notes) end - def build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes) + def build(entity_configuration, teacher, year, school_calendar_step, test_setting, daily_notes, students_enrollments, complementary_exams, school_term_recoveries, recovery_lowest_notes, lowest_notes) @entity_configuration = entity_configuration @teacher = teacher @year = year @@ -25,6 +25,7 @@ def build(entity_configuration, teacher, year, school_calendar_step, test_settin @school_term_recoveries = school_term_recoveries @recovery_lowest_notes = recovery_lowest_notes @active_search = false + @lowest_notes = lowest_notes header content @@ -118,18 +119,17 @@ def daily_notes_table @school_calendar_step ) - recovery_lowest_note[student_enrollment.student_id] = begin - RecoveryDiaryRecordStudent.by_student_id(student_enrollment.student_id) - .joins(:recovery_diary_record) - .merge(RecoveryDiaryRecord.by_discipline_id(discipline.id) - .by_classroom_id(classroom.id) - .joins(:students, :avaliation_recovery_lowest_note) - .merge( - AvaliationRecoveryLowestNote - .by_step_id(classroom, @school_calendar_step.id) - ) - )&.first&.score + lowest_note = nil + + @lowest_notes.each do |lowest| + if student_enrollment.student_id == lowest.student_id + lowest_note = lowest.score end + end + + if lowest_note.present? + recovery_lowest_note[student_enrollment.student_id] = lowest_note + end end exams = [] From 7f6c2ff0b0a9d10acacbb11a3c0d4bceb99fc791 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 26 Apr 2022 17:49:10 -0300 Subject: [PATCH 149/304] =?UTF-8?q?Pega=20segunda=20casa=20decimal=20para?= =?UTF-8?q?=20m=C3=A9dia=20quebrada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/score_rounder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/score_rounder.rb b/app/services/score_rounder.rb index 21f580199..bfb7cd57a 100644 --- a/app/services/score_rounder.rb +++ b/app/services/score_rounder.rb @@ -78,7 +78,7 @@ def round_to_below(score) def truncate_score(score) parts = score.to_s.split('.') integer_part = parts[0] - decimal_part = parts[1][0] + decimal_part = parts[1] "#{integer_part}.#{decimal_part}".to_f end From 752b4a0cbc75d807fc9db5ce3ea9b33c5c605f45 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 27 Apr 2022 16:53:23 -0300 Subject: [PATCH 150/304] =?UTF-8?q?Passa=20hash=20no=20lugar=20de=20collec?= =?UTF-8?q?tion=20para=20n=C3=A3o=20precisar=20iterar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/exam_record_report_form.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/forms/exam_record_report_form.rb b/app/forms/exam_record_report_form.rb index 3c7b95eb4..3e682b8c3 100644 --- a/app/forms/exam_record_report_form.rb +++ b/app/forms/exam_record_report_form.rb @@ -37,6 +37,8 @@ def recovery_lowest_notes? def lowest_notes classroom = Classroom.find(classroom_id) + lowest_notes = {} + RecoveryDiaryRecordStudent.by_student_id(students_enrollments.map(&:student_id)) .joins(:recovery_diary_record) .merge( @@ -47,7 +49,12 @@ def lowest_notes AvaliationRecoveryLowestNote .by_step_id(classroom, step.id) ) - ) + ).each do |recovery_diary_record| + student_data = {recovery_diary_record.student_id => recovery_diary_record.score} + lowest_notes = lowest_notes.merge(student_data) + end + + lowest_notes end def daily_notes_classroom_steps From 9b2456f2ef85ff2507006f1a8d01ee46a76d8f01 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 27 Apr 2022 16:53:40 -0300 Subject: [PATCH 151/304] Utiliza menor nota pegando do hash --- app/reports/exam_record_report.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index af1c33c90..a17ddcae3 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -119,13 +119,7 @@ def daily_notes_table @school_calendar_step ) - lowest_note = nil - - @lowest_notes.each do |lowest| - if student_enrollment.student_id == lowest.student_id - lowest_note = lowest.score - end - end + lowest_note = @lowest_notes[student_enrollment.student_id].to_s if lowest_note.present? recovery_lowest_note[student_enrollment.student_id] = lowest_note From 2dca463fde870488ec1fa014c5964018ac2c7f30 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Thu, 28 Apr 2022 09:20:30 -0300 Subject: [PATCH 152/304] Remove arel_table de scope e adiciona index ao created_at de system notifications --- app/models/system_notification.rb | 2 +- db/migrate/20220427180521_add_index_system_notifications.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20220427180521_add_index_system_notifications.rb diff --git a/app/models/system_notification.rb b/app/models/system_notification.rb index 5b470e45e..dcc855cad 100644 --- a/app/models/system_notification.rb +++ b/app/models/system_notification.rb @@ -10,7 +10,7 @@ class SystemNotification < ActiveRecord::Base validates :title, :description, presence: true validates :source, presence: true, unless: :is_generic? - scope :ordered, -> { order(arel_table[:created_at].desc) } + scope :ordered, -> { order(created_at: :desc) } scope :not_in, lambda { |ids| where(arel_table[:id].not_in(ids)) } def open_link_in_new_tab? diff --git a/db/migrate/20220427180521_add_index_system_notifications.rb b/db/migrate/20220427180521_add_index_system_notifications.rb new file mode 100644 index 000000000..128a73277 --- /dev/null +++ b/db/migrate/20220427180521_add_index_system_notifications.rb @@ -0,0 +1,5 @@ +class AddIndexToCreatedAtOnSystemNotifications < ActiveRecord::Migration + def change + add_index :system_notifications, :created_at + end +end From f3c8e9333f42df1a794f7b77a475623c2ccf0e54 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 30 Mar 2022 15:16:30 -0300 Subject: [PATCH 153/304] Cria factorie e teste para model de classrooms_grade --- spec/factories/classrooms_grades.rb | 7 +++++++ spec/models/classrooms_grade_spec.rb | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 spec/factories/classrooms_grades.rb create mode 100644 spec/models/classrooms_grade_spec.rb diff --git a/spec/factories/classrooms_grades.rb b/spec/factories/classrooms_grades.rb new file mode 100644 index 000000000..d63787254 --- /dev/null +++ b/spec/factories/classrooms_grades.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :classrooms_grade do + classroom + grade + exam_rule + end +end diff --git a/spec/models/classrooms_grade_spec.rb b/spec/models/classrooms_grade_spec.rb new file mode 100644 index 000000000..355b6790b --- /dev/null +++ b/spec/models/classrooms_grade_spec.rb @@ -0,0 +1,17 @@ +require 'rails_helper' + +RSpec.describe ClassroomsGrade, type: :model do + describe 'attributes' do + it { expect(subject).to respond_to(:classroom_id) } + it { expect(subject).to respond_to(:grade_id) } + it { expect(subject).to respond_to(:exam_rule_id) } + end + + describe 'associations' do + it { expect(subject).to belong_to(:classroom) } + it { expect(subject).to belong_to(:grade) } + it { expect(subject).to belong_to(:exam_rule) } + it { expect(subject).to have_many(:student_enrollment_classrooms) } + it { expect(subject).to have_one(:lessons_board) } + end +end From 851e19ddcb531abbb0dd12e6be67e66109d77c1c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 30 Mar 2022 19:47:52 -0300 Subject: [PATCH 154/304] Ajusta factoria de classroom --- spec/factories/classrooms.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/spec/factories/classrooms.rb b/spec/factories/classrooms.rb index 8e91bc8de..2aa71127f 100644 --- a/spec/factories/classrooms.rb +++ b/spec/factories/classrooms.rb @@ -1,8 +1,6 @@ FactoryGirl.define do factory :classroom do unity - exam_rule - grade description { Faker::Lorem.unique.sentence } year { Date.current.year } @@ -19,19 +17,19 @@ end trait :score_type_numeric_and_concept do - association :exam_rule, factory: [:exam_rule, :score_type_numeric_and_concept] + association classrooms_grades: :exam_rule, factory: [:exam_rule, :score_type_numeric_and_concept] end trait :score_type_numeric do - association :exam_rule, factory: :exam_rule + association classrooms_grades: :exam_rule, factory: :exam_rule end trait :score_type_concept do - association :exam_rule, factory: [:exam_rule, :score_type_concept] + association classrooms_grades: :exam_rule, factory: [:exam_rule, :score_type_concept] end trait :by_discipline do - association :exam_rule, factory: [:exam_rule, :frequency_type_by_discipline] + association classrooms_grades: :exam_rule, factory: [:exam_rule, :frequency_type_by_discipline] end trait :with_teacher_discipline_classroom do From 50daef850428dc53b147d337f87aa6dbd64c807a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Apr 2022 15:09:30 +0000 Subject: [PATCH 155/304] Bump async from 2.6.3 to 2.6.4 Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5bd1b5167..b5e054f82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1325,9 +1325,9 @@ async-limiter@~1.0.0: integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" From 6bbefdfa2ac6e67a7bfb2eb759326ca904e8e623 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Apr 2022 17:13:17 +0000 Subject: [PATCH 156/304] Bump axios from 0.21.1 to 0.21.2 Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.2. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.21.1...v0.21.2) --- updated-dependencies: - dependency-name: axios dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 1b9b3ec05..e87dcb5ae 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "dependencies": { "@rails/webpacker": "4.3.0", - "axios": "^0.21.1", + "axios": "^0.21.2", "es6-promise": "^4.2.8", "lodash": "^4.17.21", "vue": "^2.6.12", diff --git a/yarn.lock b/yarn.lock index b5e054f82..3cefc7f80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1364,12 +1364,12 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@^0.21.2: + version "0.21.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017" + integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.0" babel-loader@^8.0.6: version "8.1.0" @@ -3084,10 +3084,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.10.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== +follow-redirects@^1.0.0, follow-redirects@^1.14.0: + version "1.14.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" + integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== for-in@^1.0.2: version "1.0.2" From 347ccef4d2fbb2033de0b52bef795df897a9b403 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 29 Apr 2022 19:35:21 -0300 Subject: [PATCH 157/304] =?UTF-8?q?Ajusta=20m=C3=A9todo=20que=20n=C3=A3o?= =?UTF-8?q?=20ser=C3=A1=20mais=20utilizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/serializers/student_in_recovery_serializer.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/serializers/student_in_recovery_serializer.rb b/app/serializers/student_in_recovery_serializer.rb index 46173eec3..de0251246 100644 --- a/app/serializers/student_in_recovery_serializer.rb +++ b/app/serializers/student_in_recovery_serializer.rb @@ -7,15 +7,6 @@ def average "%.#{@serialization_options[:number_of_decimal_places]}f" % student_recovery_average end - def lowest_note_in_step - StudentNotesInStepFetcher.new.lowest_note_in_step( - object, - @serialization_options[:classroom], - @serialization_options[:discipline], - @serialization_options[:step] - ) - end - private def student_recovery_average From 7fdb2ae750d45fe13d199361afb5e9c8c53c686d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 29 Apr 2022 19:52:02 -0300 Subject: [PATCH 158/304] =?UTF-8?q?Melhora=20leitura=20do=20m=C3=A9todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/avaliation_recovery_lowest_note.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/avaliation_recovery_lowest_note.rb b/app/models/avaliation_recovery_lowest_note.rb index 892706d19..b13289122 100644 --- a/app/models/avaliation_recovery_lowest_note.rb +++ b/app/models/avaliation_recovery_lowest_note.rb @@ -31,7 +31,7 @@ class AvaliationRecoveryLowestNote < ActiveRecord::Base validate :unique_by_step_and_classroom def ignore_date_validates - !(new_record? || recorded_at != recorded_at_was) + new_record? && recorded_at != recorded_at_was end def set_recorded_at From f2477c50382cf547399f379ae85a12f5e80a8cca Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 2 May 2022 14:34:52 -0300 Subject: [PATCH 159/304] Ajusta nome de migration de acordo com nome da class --- ...0427180521_add_index_to_created_at_on_system_notifications.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename db/migrate/{20220427180521_add_index_system_notifications.rb => 20220427180521_add_index_to_created_at_on_system_notifications.rb} (100%) diff --git a/db/migrate/20220427180521_add_index_system_notifications.rb b/db/migrate/20220427180521_add_index_to_created_at_on_system_notifications.rb similarity index 100% rename from db/migrate/20220427180521_add_index_system_notifications.rb rename to db/migrate/20220427180521_add_index_to_created_at_on_system_notifications.rb From 965a2f1476f2ce18e43fced10bc266d5f6981dce Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 2 May 2022 16:27:12 -0300 Subject: [PATCH 160/304] =?UTF-8?q?Ajusta=20para=20sempre=20pegar=20sequen?= =?UTF-8?q?cial=20do=20i-Educar=20e=20utilizar=20servi=C3=A7o=20que=20calc?= =?UTF-8?q?ula?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../student_enrollment_classroom_synchronizer.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb b/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb index 0ccd9fa5f..aff11893c 100644 --- a/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb +++ b/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb @@ -45,11 +45,7 @@ def update_student_enrollment_classrooms(student_enrollment_classrooms) student_enrollment_classroom.joined_at = student_enrollment_classroom_record.data_entrada student_enrollment_classroom.left_at = student_enrollment_classroom_record.data_saida student_enrollment_classroom.changed_at = student_enrollment_classroom_record.updated_at - - if student_enrollment_classroom_record.deleted_at.nil? - student_enrollment_classroom.sequence = business.generate_sequence(student_enrollment, student_enrollment_classroom, student_enrollment_classroom_record) - end - + student_enrollment_classroom.sequence = student_enrollment_classroom_record.sequencial_fechamento student_enrollment_classroom.index = student_enrollment_classroom_record.sequencial student_enrollment_classroom.show_as_inactive_when_not_in_date = student_enrollment_classroom_record.apresentar_fora_da_data From 7a5f125657fea185aa2d4fd97c92c47bebebf372 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 2 May 2022 16:28:09 -0300 Subject: [PATCH 161/304] =?UTF-8?q?Remove=20servi=C3=A7o=20que=20n=C3=A3o?= =?UTF-8?q?=20ser=C3=A1=20mais=20utilizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...student_enrollment_classroom_businesses.rb | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 app/services/student_enrollment_classroom_businesses.rb diff --git a/app/services/student_enrollment_classroom_businesses.rb b/app/services/student_enrollment_classroom_businesses.rb deleted file mode 100644 index 960cf17bd..000000000 --- a/app/services/student_enrollment_classroom_businesses.rb +++ /dev/null @@ -1,39 +0,0 @@ -class StudentEnrollmentClassroomBusinesses - - attr_accessor :year - - def generate_sequence(student_enrollment, student_enrollment_classroom, student_enrollment_classroom_record) - self.year = student_enrollment_classroom&.classrooms_grade&.year - sequencial_fechamento = student_enrollment_classroom_record.sequencial_fechamento - student_enrollment_last = student_enrollment_last(student_enrollment) - return sequencial_fechamento if student_enrollment_last.nil? - - new_sequence(sequencial_fechamento, student_enrollment_classroom, student_enrollment_last) - end - - private - - def new_sequence(sequencial_fechamento, student_enrollment_classroom, student_enrollment_last) - classroom_ids = student_enrollment_last.student_enrollment_classrooms.map { |student_enrollment_classroom| - student_enrollment_classroom&.classrooms_grade&.classroom_id - } - - if same_enrollment_classroom?(classroom_ids) || student_enrollment_classroom - student_enrollment_classroom.sequence - else - sequencial_fechamento - end - end - - def same_enrollment_classroom?(classroom_ids) - classroom_ids.last(2).count.eql?(2) && classroom_ids.last(2).uniq.count.eql?(1) - end - - def student_enrollment_last(student_enrollment) - enrollments_in_year = StudentEnrollment.active.by_year(year).by_student(student_enrollment.student.try(:id)) - - if enrollments_in_year.size > 1 - enrollments_in_year.last - end - end -end From 192caa23f3513d7d63c0caf5564af75f51febc8a Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 2 May 2022 18:43:41 -0300 Subject: [PATCH 162/304] Adiciona compact para evitar trazer classroom nil e includes para evitar problema de N+1 --- app/services/infrequency_tracking_notifier.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/services/infrequency_tracking_notifier.rb b/app/services/infrequency_tracking_notifier.rb index 5e5fcde13..c2bcb9819 100644 --- a/app/services/infrequency_tracking_notifier.rb +++ b/app/services/infrequency_tracking_notifier.rb @@ -45,10 +45,11 @@ def students_with_absences_query(start_at = nil) UniqueDailyFrequencyStudent.frequency_date_between(start_at, end_at) .where(present: false) + .includes(:classroom) end def classrooms_with_absences - students_with_absences_query.map(&:classroom).uniq + students_with_absences_query.map(&:classroom).compact.uniq end def students_with_absences(classroom_id, start_at) From 12a3ab89320c1a3102e3ed2a6576cc4c0eb2c2b6 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 3 May 2022 14:28:52 -0300 Subject: [PATCH 163/304] =?UTF-8?q?Ajusta=20caso=20perfil=20n=C3=A3o=20ten?= =?UTF-8?q?ha=20dados=20selecionados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/current_profile.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/services/current_profile.rb b/app/services/current_profile.rb index 135e23f58..b966038d3 100644 --- a/app/services/current_profile.rb +++ b/app/services/current_profile.rb @@ -117,7 +117,9 @@ def disciplines_as_json end def last_allocation - Rails.cache.fetch("last_teacher_discipline_classroom-#{classroom.id}-#{teacher.id}", expires_in: 1.day) do + Rails.cache.fetch("last_teacher_discipline_classroom-#{classroom&.id}-#{teacher&.id}", expires_in: 1.day) do + return TeacherDisciplineClassroom.none unless classroom && teacher + TeacherDisciplineClassroom.where(classroom_id: classroom.id, teacher_id: teacher.id) .last .cache_key From 1211345a76db206281ec66aecbf17640e91bbab5 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 3 May 2022 16:59:38 -0300 Subject: [PATCH 164/304] =?UTF-8?q?Ajusta=20para=20caso=20n=C3=A3o=20encon?= =?UTF-8?q?trar=20v=C3=ADnculo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/current_profile.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/services/current_profile.rb b/app/services/current_profile.rb index b966038d3..c376036c7 100644 --- a/app/services/current_profile.rb +++ b/app/services/current_profile.rb @@ -120,9 +120,7 @@ def last_allocation Rails.cache.fetch("last_teacher_discipline_classroom-#{classroom&.id}-#{teacher&.id}", expires_in: 1.day) do return TeacherDisciplineClassroom.none unless classroom && teacher - TeacherDisciplineClassroom.where(classroom_id: classroom.id, teacher_id: teacher.id) - .last - .cache_key + TeacherDisciplineClassroom.where(classroom_id: classroom.id, teacher_id: teacher.id).last&.cache_key end end From 63c44909d4cbbcddf9ccbf31ed199f5b5e132e4e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 4 May 2022 11:03:41 -0300 Subject: [PATCH 165/304] =?UTF-8?q?Filtra=20tamb=C3=A9m=20por=20turma=20na?= =?UTF-8?q?=20query?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avaliation_recovery_lowest_notes_controller.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 69269130b..ee1cee26c 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -245,7 +245,9 @@ def exists_recovery_on_step classroom = Classroom.find(params[:classroom_id]) - render json: AvaliationRecoveryLowestNote.by_step_id(classroom, params[:step_id]).exists? + render json: AvaliationRecoveryLowestNote.by_step_id(classroom, params[:step_id]) + .by_classroom_id(classroom.id) + .exists? end def recorded_at_in_selected_step From 77d4964c8de5b54d6ce07bd89ebc1e7a6d3d8d9f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 4 May 2022 11:12:50 -0300 Subject: [PATCH 166/304] =?UTF-8?q?Adiciona=20permiss=C3=A3o=20para=20n?= =?UTF-8?q?=C3=ADvel=20professor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/features_access_levels.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/services/features_access_levels.rb b/app/services/features_access_levels.rb index 43b7d68c2..99d0ce985 100644 --- a/app/services/features_access_levels.rb +++ b/app/services/features_access_levels.rb @@ -44,7 +44,8 @@ def self.teacher_features :ieducar_api_exam_posting_without_restrictions, :change_school_year, :daily_frequencies_in_batchs, - :learning_objectives_and_skills + :learning_objectives_and_skills, + :avaliation_recovery_lowest_notes ] end From 1c052270d1c7a43f35aef5596bda27188ba76764 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 4 May 2022 14:57:09 -0300 Subject: [PATCH 167/304] =?UTF-8?q?Ajusta=20para=20n=C3=A3o=20retornar=20b?= =?UTF-8?q?aseado=20na=20regra?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascripts/views/avaliation_recovery_lowest_notes/form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 00ad59417..167f238ce 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -68,7 +68,7 @@ $(function () { } function fetchStudents(classroom, discipline, exam_rule, step_id, recorded_at) { - if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at, 'MM-DD-YYYY')._i) || exam_rule.recovery_type === 0) { + if (_.isEmpty(step_id) || _.isEmpty(moment(recorded_at, 'MM-DD-YYYY')._i)) { return; } From e7d2020cadba375b00115e57149d0ff26512c1ef Mon Sep 17 00:00:00 2001 From: Tiago Camargo Date: Wed, 4 May 2022 15:34:52 -0300 Subject: [PATCH 168/304] =?UTF-8?q?Atualiza=C3=A7=C3=A3o=20vers=C3=A3o=20d?= =?UTF-8?q?o=20puma=20para=205.6.4.=20Adiciona=20notificador=20do=20system?= =?UTF-8?q?d=20para=20melhor=20controle=20do=20puma.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 8ce17c342..fc629d33b 100644 --- a/Gemfile +++ b/Gemfile @@ -40,7 +40,7 @@ gem 'pg_query', '1.2.0' gem 'postgres-copy', '1.0.0' gem 'prawn', '2.1.1', git: 'https://github.com/portabilis/prawn.git', branch: 'master', tag: 'v2.1.1' gem 'prawn-table', '0.2.2' -gem 'puma', '5.2.2' +gem 'puma', '5.6.4' gem 'pundit', '0.3.0' gem 'rack-cors', '>= 1.0.4 ', require: 'rack/cors' gem 'rack-protection', '1.5.5' @@ -52,6 +52,7 @@ gem 'responders', '2.1.0' gem 'rest-client', '2.0.2' gem 'route_translator', git: 'https://github.com/enriclluelles/route_translator.git', tag: 'v4.1.0' gem 'rubyzip', '>= 1.3.0', require: 'zip' +gem 'sd_notify', '0.1.1' gem 'sidekiq', '5.0.3' gem 'sidekiq-unique-jobs', '6.0.22' gem 'simple_form', '4.0.0' From da7dd74cacb4abb2ae42c8e9fc7ed3772a73d7c5 Mon Sep 17 00:00:00 2001 From: Tiago Camargo Date: Wed, 4 May 2022 15:35:54 -0300 Subject: [PATCH 169/304] =?UTF-8?q?Atualiza=20vers=C3=A3o=20do=20sidekiq?= =?UTF-8?q?=20para=205.2.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index fc629d33b..7c31b1ae8 100644 --- a/Gemfile +++ b/Gemfile @@ -53,7 +53,7 @@ gem 'rest-client', '2.0.2' gem 'route_translator', git: 'https://github.com/enriclluelles/route_translator.git', tag: 'v4.1.0' gem 'rubyzip', '>= 1.3.0', require: 'zip' gem 'sd_notify', '0.1.1' -gem 'sidekiq', '5.0.3' +gem 'sidekiq', '5.2.5' gem 'sidekiq-unique-jobs', '6.0.22' gem 'simple_form', '4.0.0' gem 'skylight', '4.3.2' From 2ed64c54d1026931ff112f25826a3c6fe5ef893d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 4 May 2022 15:44:13 -0300 Subject: [PATCH 170/304] Ajusta para mostrar 0 caso nota seja vazia --- app/services/student_notes_in_step_fetcher.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/services/student_notes_in_step_fetcher.rb b/app/services/student_notes_in_step_fetcher.rb index eca0a32c7..7ee224e45 100644 --- a/app/services/student_notes_in_step_fetcher.rb +++ b/app/services/student_notes_in_step_fetcher.rb @@ -15,8 +15,7 @@ def lowest_note_in_step(student_id, classroom_id, discipline_id, step_id) .by_avaliation(avaliation.id) .first .try(:recovered_note) - - next if score.nil? + .to_f lowest_note = score if lowest_note.nil? From 3958da65963a0ec74ffc3fdc13216a1bceb19e45 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 5 May 2022 10:40:51 -0300 Subject: [PATCH 171/304] =?UTF-8?q?Ajusta=20servi=C3=A7o=20que=20seta=20se?= =?UTF-8?q?quencial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...student_enrollment_classroom_businesses.rb | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/services/student_enrollment_classroom_businesses.rb diff --git a/app/services/student_enrollment_classroom_businesses.rb b/app/services/student_enrollment_classroom_businesses.rb new file mode 100644 index 000000000..11fd0ce0d --- /dev/null +++ b/app/services/student_enrollment_classroom_businesses.rb @@ -0,0 +1,39 @@ +class StudentEnrollmentClassroomBusinesses + + attr_accessor :year + + def generate_sequence(student_enrollment, student_enrollment_classroom, student_enrollment_classroom_record) + self.year = student_enrollment_classroom&.classrooms_grade&.year + sequencial_fechamento = student_enrollment_classroom_record.sequencial_fechamento + student_enrollment_last = student_enrollment_last(student_enrollment) + return sequencial_fechamento if student_enrollment_last.nil? + + new_sequence(sequencial_fechamento, student_enrollment_classroom, student_enrollment_last) + end + + private + + def new_sequence(sequencial_fechamento, student_enrollment_classroom, student_enrollment_last) + classroom_ids = student_enrollment_last.student_enrollment_classrooms.map { |student_enrollment_classroom| + student_enrollment_classroom&.classrooms_grade&.classroom_id + } + + if same_enrollment_classroom?(classroom_ids) && student_enrollment_classroom + student_enrollment_classroom.sequence + else + sequencial_fechamento + end + end + + def same_enrollment_classroom?(classroom_ids) + classroom_ids.last(2).count.eql?(2) && classroom_ids.last(2).uniq.count.eql?(1) + end + + def student_enrollment_last(student_enrollment) + enrollments_in_year = StudentEnrollment.active.by_year(year).by_student(student_enrollment.student.try(:id)).uniq + + if enrollments_in_year.size > 1 + enrollments_in_year.last + end + end +end From 158571d3bd6ad04f1fa301ba912098cfe7f8a6bd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 5 May 2022 10:41:30 -0300 Subject: [PATCH 172/304] =?UTF-8?q?Ajusta=20para=20usar=20servi=C3=A7o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../student_enrollment_classroom_synchronizer.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb b/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb index aff11893c..0ccd9fa5f 100644 --- a/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb +++ b/app/services/ieducar_synchronizers/student_enrollment_classroom_synchronizer.rb @@ -45,7 +45,11 @@ def update_student_enrollment_classrooms(student_enrollment_classrooms) student_enrollment_classroom.joined_at = student_enrollment_classroom_record.data_entrada student_enrollment_classroom.left_at = student_enrollment_classroom_record.data_saida student_enrollment_classroom.changed_at = student_enrollment_classroom_record.updated_at - student_enrollment_classroom.sequence = student_enrollment_classroom_record.sequencial_fechamento + + if student_enrollment_classroom_record.deleted_at.nil? + student_enrollment_classroom.sequence = business.generate_sequence(student_enrollment, student_enrollment_classroom, student_enrollment_classroom_record) + end + student_enrollment_classroom.index = student_enrollment_classroom_record.sequencial student_enrollment_classroom.show_as_inactive_when_not_in_date = student_enrollment_classroom_record.apresentar_fora_da_data From e42a5a20a20ceb9662ba24df511e873f6f0e38d2 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 5 May 2022 16:27:14 -0300 Subject: [PATCH 173/304] =?UTF-8?q?Valida=20tamb=C3=A9m=20por=20disciplina?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/avaliation_recovery_lowest_notes_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index ee1cee26c..1063d3cb5 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -241,12 +241,13 @@ def student_active_on_date?(student_enrollment, recovery_diary_record) end def exists_recovery_on_step - return if params[:classroom_id].blank? || params[:step_id].blank? + return if params[:classroom_id].blank? || params[:step_id].blank? || params[:discipline_id].blank? classroom = Classroom.find(params[:classroom_id]) render json: AvaliationRecoveryLowestNote.by_step_id(classroom, params[:step_id]) .by_classroom_id(classroom.id) + .by_discipline_id(params[:discipline_id]) .exists? end From 91036b7999460f762fc29c29bf058240c10c35fd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 5 May 2022 16:27:29 -0300 Subject: [PATCH 174/304] =?UTF-8?q?Passa=20disciplina=20por=20par=C3=A2met?= =?UTF-8?q?ro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/avaliation_recovery_lowest_notes/form.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js index 167f238ce..fdf419296 100644 --- a/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js +++ b/app/assets/javascripts/views/avaliation_recovery_lowest_notes/form.js @@ -137,6 +137,7 @@ $(function () { function checkExistsRecoveryLowestNoteOnStep() { let step_id = $step.select2('val'); let classroom_id = $classroom.select2('val'); + let discipline_id = $discipline.select2('val'); if (_.isEmpty(step_id)) { flashMessages.error('É necessário selecionar uma etapa.'); @@ -145,7 +146,8 @@ $(function () { url: Routes.exists_recovery_on_step_avaliation_recovery_lowest_notes_pt_br_path({ format: 'json', classroom_id: classroom_id, - step_id: step_id + step_id: step_id, + discipline_id: discipline_id }), success: handleFetchCheckExistsRecoveryLowestNoteOnStepSuccess, error: handleFetchCheckExistsRecoveryLowestNoteOnStepError From 3dcd7241501859432e2dc4640c6ac9993a2591f9 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 6 May 2022 12:10:27 -0300 Subject: [PATCH 175/304] =?UTF-8?q?Ajusta=20para=20n=C3=A3o=20considerar?= =?UTF-8?q?=20notas=20de=20avalia=C3=A7=C3=B5es=20dispensadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/student_notes_in_step_fetcher.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/services/student_notes_in_step_fetcher.rb b/app/services/student_notes_in_step_fetcher.rb index 7ee224e45..70eebc0ee 100644 --- a/app/services/student_notes_in_step_fetcher.rb +++ b/app/services/student_notes_in_step_fetcher.rb @@ -11,11 +11,14 @@ def lowest_note_in_step(student_id, classroom_id, discipline_id, step_id) lowest_note = nil avaliations.each do |avaliation| - score = DailyNoteStudent.by_student_id(student_id) - .by_avaliation(avaliation.id) - .first - .try(:recovered_note) - .to_f + daily_note_student = DailyNoteStudent.by_student_id(student_id) + .by_avaliation(avaliation.id) + .first + + next if daily_note_student.nil? + next if daily_note_student.exempted? + + score = daily_note_student.recovered_note.to_f lowest_note = score if lowest_note.nil? From d60b3cf6b01faa84a4df30ec73428062567f20ff Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 9 May 2022 15:18:57 -0300 Subject: [PATCH 176/304] Ajusta numero de colunas --- app/reports/exam_record_report.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index a17ddcae3..e84618394 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -264,7 +264,7 @@ def daily_notes_table student_cells << make_cell(content: "#{recovery_lowest_note[key]}", align: :center) end - number_colums = @recovery_lowest_notes ? 11 : 10 + number_colums = 10 (number_colums - data_column_count).times { student_cells << nil } From fc791c3616b17ee2701d040b2e3996ac8cafff35 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 10 May 2022 14:51:11 -0300 Subject: [PATCH 177/304] =?UTF-8?q?Altera=20condi=C3=A7=C3=A3o=20para=20pe?= =?UTF-8?q?gar=20como=20padr=C3=A3o=20nota=20m=C3=A1xima=20de=20Avalia?= =?UTF-8?q?=C3=A7=C3=A3o=20Num=C3=A9rica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/recovery_diary_record_student.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index b238d55ed..4ac8fe398 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -36,7 +36,7 @@ def maximum_score elsif recovery_diary_record.avaliation_recovery_diary_record.present? maximum_score_for_avaliation_recovery else - maximum_score_for_final_recovery + maximum_score_for_avaliation_recovery end end From ce7c2239e2473968180ae49ff0562c5128f8b5d4 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 15:08:03 -0300 Subject: [PATCH 178/304] =?UTF-8?q?Ajusta=20l=C3=B3gica=20para=20que=20sej?= =?UTF-8?q?a=20filtrado=20apenas=20se=20n=C3=A3o=20for=20filtro=20por=20to?= =?UTF-8?q?das=20disciplinas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/observation_record_report_query.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 83e0176d5..1735d9eb3 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -24,12 +24,11 @@ def observation_diary_records .where(date: start_at..end_at) .order(:date) - if @discipline_id.eql?('all') + unless @discipline_id.eql?('all') @discipline_id = Discipline.by_classroom_id(classroom_id).pluck(:id) + relation = relation.by_discipline(discipline_id) end - relation = relation.by_discipline(discipline_id) if discipline_id.present? - relation end From 080af37ac275fd7f9611c37eaef8313456b9e667 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 15:18:11 -0300 Subject: [PATCH 179/304] =?UTF-8?q?Retorna=20caso=20n=C3=A3o=20tenha=20eta?= =?UTF-8?q?pa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/exam_record_report_form.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/forms/exam_record_report_form.rb b/app/forms/exam_record_report_form.rb index 3e682b8c3..4c9901fcf 100644 --- a/app/forms/exam_record_report_form.rb +++ b/app/forms/exam_record_report_form.rb @@ -26,6 +26,8 @@ def daily_notes end def recovery_lowest_notes? + return unless step + classroom = Classroom.find(classroom_id) @recovery_lowest_notes = AvaliationRecoveryLowestNote.by_unity_id(unity_id) .by_classroom_id(classroom_id) From 2dde4846213b81f44c86456049f24032d2a4f8f8 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 15:19:15 -0300 Subject: [PATCH 180/304] =?UTF-8?q?Ajusta=20tamb=C3=A9m=20no=20m=C3=A9todo?= =?UTF-8?q?=20que=20carrega=20notas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/exam_record_report_form.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/forms/exam_record_report_form.rb b/app/forms/exam_record_report_form.rb index 4c9901fcf..775750d11 100644 --- a/app/forms/exam_record_report_form.rb +++ b/app/forms/exam_record_report_form.rb @@ -37,6 +37,8 @@ def recovery_lowest_notes? end def lowest_notes + return unless step + classroom = Classroom.find(classroom_id) lowest_notes = {} From 5eb490b7b6cb70335ad6a369937fa47585b3c28e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 16:22:35 -0300 Subject: [PATCH 181/304] =?UTF-8?q?Remove=20atributo=20n=C3=A3o=20utilizad?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/serializers/student_in_recovery_serializer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/serializers/student_in_recovery_serializer.rb b/app/serializers/student_in_recovery_serializer.rb index de0251246..1bc310a75 100644 --- a/app/serializers/student_in_recovery_serializer.rb +++ b/app/serializers/student_in_recovery_serializer.rb @@ -1,5 +1,5 @@ class StudentInRecoverySerializer < StudentSerializer - attributes :average, :exempted_from_discipline, :lowest_note_in_step + attributes :average, :exempted_from_discipline def average return if student_recovery_average.blank? From eb38d4462b4c288d9ccf71f12cb511d8cf640e7d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:03:58 -0300 Subject: [PATCH 182/304] =?UTF-8?q?N=C3=A3o=20faz=20filtro=20por=20etapa?= =?UTF-8?q?=20em=20caso=20de=20planos=20de=20outro=20professor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/contents_record_fetcher.rb | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/app/services/contents_record_fetcher.rb b/app/services/contents_record_fetcher.rb index f369f5841..318a4c4b7 100644 --- a/app/services/contents_record_fetcher.rb +++ b/app/services/contents_record_fetcher.rb @@ -31,12 +31,7 @@ def other_teacher_lesson_plans end def other_teacher_teaching_plans - step_teaching_plans = teaching_plans.by_school_term_type_step_id(school_term_type_steps_ids) - - other_theachers_plans = step_teaching_plans.by_other_teacher_id(@teacher.id) - return other_theachers_plans if other_theachers_plans.present? - - step_teaching_plans.by_secretary + teaching_plans.by_other_teacher_id(@teacher.id) end def steps_fetcher From 8067ef1f7209ed49e938b053eba51a3a19ea2502 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:17:39 -0300 Subject: [PATCH 183/304] =?UTF-8?q?Retorna=20os=20planos=20de=20secret?= =?UTF-8?q?=C3=A1rios=20caso=20n=C3=A3o=20tenha=20planos=20de=20professore?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/contents_record_fetcher.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/services/contents_record_fetcher.rb b/app/services/contents_record_fetcher.rb index 318a4c4b7..e13a2f69d 100644 --- a/app/services/contents_record_fetcher.rb +++ b/app/services/contents_record_fetcher.rb @@ -31,7 +31,11 @@ def other_teacher_lesson_plans end def other_teacher_teaching_plans - teaching_plans.by_other_teacher_id(@teacher.id) + other_teachers_plans = teaching_plans.by_other_teacher_id(@teacher.id) + + return other_teachers_plans if other_teachers_plans.present? + + teaching_plans.by_secretary end def steps_fetcher From 6f3d9c3b7a77a67535c11115ca77a1b2454d215b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:22:24 -0300 Subject: [PATCH 184/304] Evita erros caso lowest_notes venha vazio --- app/reports/exam_record_report.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index e84618394..e82c409c4 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -119,10 +119,12 @@ def daily_notes_table @school_calendar_step ) - lowest_note = @lowest_notes[student_enrollment.student_id].to_s + if @lowest_notes + lowest_note = @lowest_notes[student_enrollment.student_id].to_s - if lowest_note.present? - recovery_lowest_note[student_enrollment.student_id] = lowest_note + if lowest_note.present? + recovery_lowest_note[student_enrollment.student_id] = lowest_note + end end end From 6010ff2c39b398066c6ff0c8c7374916ceea45ba Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:58:18 -0300 Subject: [PATCH 185/304] Cria migration para inserir novo campo na tela --- ..._on_attendance_record_report_to_general_configurations.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 db/migrate/20220511005223_add_show_percentage_on_attendance_record_report_to_general_configurations.rb diff --git a/db/migrate/20220511005223_add_show_percentage_on_attendance_record_report_to_general_configurations.rb b/db/migrate/20220511005223_add_show_percentage_on_attendance_record_report_to_general_configurations.rb new file mode 100644 index 000000000..66dde218b --- /dev/null +++ b/db/migrate/20220511005223_add_show_percentage_on_attendance_record_report_to_general_configurations.rb @@ -0,0 +1,5 @@ +class AddShowPercentageOnAttendanceRecordReportToGeneralConfigurations < ActiveRecord::Migration + def change + add_column :general_configurations, :show_percentage_on_attendance_record_report, :boolean, default: false + end +end From 1814f1fa449bfebf83d965431a7f3209c5b009f5 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:58:28 -0300 Subject: [PATCH 186/304] =?UTF-8?q?Permite=20par=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/general_configurations_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/general_configurations_controller.rb b/app/controllers/general_configurations_controller.rb index 1c6e1e103..b201241aa 100644 --- a/app/controllers/general_configurations_controller.rb +++ b/app/controllers/general_configurations_controller.rb @@ -53,7 +53,8 @@ def permitted_attributes :types_of_teaching, :days_to_expire_password, :days_to_disable_access, - :show_inactive_enrollments + :show_inactive_enrollments, + :show_percentage_on_attendance_record_report ) parameters[:types_of_teaching] = parameters[:types_of_teaching].split(',') From f8abc75a302cb78d64fa8153c2ce6f32c347d5fa Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:58:37 -0300 Subject: [PATCH 187/304] Insere campo na tela --- app/views/general_configurations/edit.html.erb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/views/general_configurations/edit.html.erb b/app/views/general_configurations/edit.html.erb index 4b3ede7ec..d5c25c28f 100644 --- a/app/views/general_configurations/edit.html.erb +++ b/app/views/general_configurations/edit.html.erb @@ -65,6 +65,11 @@ <%= f.input :show_inactive_enrollments, label: false, inline_label: true %>
+
+
+ <%= f.input :show_percentage_on_attendance_record_report, label: false, inline_label: true %> +
+
<%= f.input :create_users_for_students_when_synchronize, label: false, inline_label: true %> From 9f3e6e9e66457e610ad1946bdd6312efa48d9600 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 21:58:48 -0300 Subject: [PATCH 188/304] =?UTF-8?q?Cria=20tradu=C3=A7=C3=A3o=20para=20novo?= =?UTF-8?q?=20campo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/locales/models/general_configuration.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/models/general_configuration.yml b/config/locales/models/general_configuration.yml index bc0d35f72..01f037617 100644 --- a/config/locales/models/general_configuration.yml +++ b/config/locales/models/general_configuration.yml @@ -30,6 +30,7 @@ pt-BR: days_to_expire_password_label_hint: "A contagem será efetuada em dias corridos. Se o valor preenchido for zero (0) ou nenhum, não ocorrerá automatização" days_to_disable_access: "Quantidade de dias permitidos sem acessar o sistema para inativação automática de usuário" show_inactive_enrollments: "Apresentar enturmações inativas de alunos(as) nas telas de lançamento e relatórios (avaliação e frequência)" + show_percentage_on_attendance_record_report: "Exibir frequência em porcentagem no Registro de frequência" backup: completed: "Exportação de dados realizada com sucesso! Clique %{link} para fazer download!" error: "Exportação de dados não pode ser realizada. Favor tentar novamente." From cd7543e6cf5ed60c5de5d0f0269f600efc16bb5e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 10 May 2022 22:12:20 -0300 Subject: [PATCH 189/304] =?UTF-8?q?Mostra=20coluna=20no=20relat=C3=B3rio?= =?UTF-8?q?=20caso=20esteja=20marcado=20o=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/attendance_record_report.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/reports/attendance_record_report.rb b/app/reports/attendance_record_report.rb index 9def1644b..7878162ee 100644 --- a/app/reports/attendance_record_report.rb +++ b/app/reports/attendance_record_report.rb @@ -65,6 +65,9 @@ def build( self.legend = 'Legenda: N - Não enturmado, D - Dispensado da disciplina' + @general_configuration = GeneralConfiguration.first + @show_percentage_on_attendance = @general_configuration.show_percentage_on_attendance_record_report + header content footer @@ -220,11 +223,21 @@ def daily_frequencies_table day_header = make_cell(content: 'Dia', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center) month_header = make_cell(content: 'Mês', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center) absences_header = make_cell(content: 'Faltas', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, valign: :center, rowspan: 3) + + if @show_percentage_on_attendance + percentage_absences_header = make_cell(content: 'Freq.', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, valign: :center, rowspan: 3) + end + first_headers_and_class_numbers_cells = [sequential_number_header, student_name_header, class_number_header].concat(class_numbers) (40 - class_numbers.count).times { first_headers_and_class_numbers_cells << make_cell(content: '', background_color: 'FFFFFF') } first_headers_and_class_numbers_cells << absences_header + + if @show_percentage_on_attendance + first_headers_and_class_numbers_cells << percentage_absences_header + end + days_header_and_cells = [day_header].concat(days) (40 - days.count).times { days_header_and_cells << make_cell(content: '', background_color: 'FFFFFF') } From ab2f548425249c3e6efe087f268a52161b1e7687 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 11 May 2022 09:46:05 -0300 Subject: [PATCH 190/304] Retorna json nil --- app/controllers/avaliation_recovery_lowest_notes_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 1063d3cb5..2d4a63c3f 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -252,7 +252,7 @@ def exists_recovery_on_step end def recorded_at_in_selected_step - return if params[:step_id].blank? || params[:recorded_at].blank? || params[:classroom_id].blank? + return json: nil if params[:step_id].blank? || params[:recorded_at].blank? || params[:classroom_id].blank? classroom = Classroom.find(params[:classroom_id]) steps_fetcher = StepsFetcher.new(classroom) From 33e6edea82f5be792a6f78db21d9b15e02b8b80f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 11 May 2022 14:57:14 -0300 Subject: [PATCH 191/304] Adiciona render faltante --- app/controllers/avaliation_recovery_lowest_notes_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index 2d4a63c3f..c15467706 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -252,7 +252,7 @@ def exists_recovery_on_step end def recorded_at_in_selected_step - return json: nil if params[:step_id].blank? || params[:recorded_at].blank? || params[:classroom_id].blank? + return render json: nil if params[:step_id].blank? || params[:recorded_at].blank? || params[:classroom_id].blank? classroom = Classroom.find(params[:classroom_id]) steps_fetcher = StepsFetcher.new(classroom) From 8b7e98c31c7baebc2f03f361e77bcf971aa3ec97 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 13 May 2022 10:35:20 -0300 Subject: [PATCH 192/304] Seta menor nota caso seja menor que a antiga menor nota --- app/services/student_average_calculator.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/student_average_calculator.rb b/app/services/student_average_calculator.rb index 2db120063..14b28ed8e 100644 --- a/app/services/student_average_calculator.rb +++ b/app/services/student_average_calculator.rb @@ -91,6 +91,7 @@ def extract_note_avaliations(avaliations) if value < lowest_note index_lowest_note = index + lowest_note = value end end From 6a40e9cc050dbd07b53fe181044b5a64a1cb42bd Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 13 May 2022 11:42:58 -0300 Subject: [PATCH 193/304] =?UTF-8?q?Ajusta=20listagem=20de=20acompanhamento?= =?UTF-8?q?=20de=20infrequ=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/infrequency_trackings_controller.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/controllers/infrequency_trackings_controller.rb b/app/controllers/infrequency_trackings_controller.rb index 8f164b2a2..4fd84464c 100644 --- a/app/controllers/infrequency_trackings_controller.rb +++ b/app/controllers/infrequency_trackings_controller.rb @@ -23,8 +23,7 @@ def index def unities @unities ||= begin unities = Unity.all if current_user.has_administrator_access_level? - unities ||= Unity.by_user_id(current_user.id) - unities = unities.by_infrequency_tracking_permission + unities ||= Unity.by_user_id(current_user.id).by_infrequency_tracking_permission unities.by_year(current_school_year) end end From 8046cae45b3466a012541d6d18ccba4354daabba Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 13 May 2022 15:15:15 -0300 Subject: [PATCH 194/304] =?UTF-8?q?Ajusta=20m=C3=A9todo=20que=20busca=20no?= =?UTF-8?q?ta=20m=C3=A1xima=20para=20lan=C3=A7ar=20recupera=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20avalia=C3=A7=C3=A3o=20num=C3=A9rica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/recovery_diary_record_student.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index 4ac8fe398..14844654f 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -70,10 +70,11 @@ def maximum_score_for_final_recovery end def maximum_score_for_avaliation_recovery - MaximumScoreFetcher.new(avaliation).maximum_score - end + test_setting ||= TestSettingFetcher.current( + recovery_diary_record.classroom, + recovery_diary_record.avaliation_recovery_diary_record + ).maximum_score - def avaliation - recovery_diary_record.avaliation_recovery_diary_record.avaliation + test_setting end end From 8c3ca418a6a1c8d78e59f255e3d03d11f3d0cbcf Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 13 May 2022 16:01:03 -0300 Subject: [PATCH 195/304] =?UTF-8?q?Remove=20parametro=20desnecess=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/recovery_diary_record_student.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index 14844654f..4c9e721f3 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -71,8 +71,7 @@ def maximum_score_for_final_recovery def maximum_score_for_avaliation_recovery test_setting ||= TestSettingFetcher.current( - recovery_diary_record.classroom, - recovery_diary_record.avaliation_recovery_diary_record + recovery_diary_record.classroom ).maximum_score test_setting From c713b91861aeb7f114a15c74b35f4d699525a9f7 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 13 May 2022 16:27:38 -0300 Subject: [PATCH 196/304] =?UTF-8?q?Sempre=20faz=20strip=20de=20nome=20do?= =?UTF-8?q?=20usu=C3=A1rio=20ao=20atualizar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2f15cd142..37391fada 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -31,6 +31,8 @@ def update params[:user].delete :password if password.blank? + params[:user][:first_name] = params[:user][:first_name].strip + if weak_password?(password) flash.now[:error] = t('errors.general.weak_password') render :edit From 4a044fcfc84bbf08475055e02aa88af28dcef571 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 13 May 2022 16:32:39 -0300 Subject: [PATCH 197/304] =?UTF-8?q?Remove=20memoize=20desnecess=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/recovery_diary_record_student.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/models/recovery_diary_record_student.rb b/app/models/recovery_diary_record_student.rb index 4c9e721f3..f7c8dea42 100644 --- a/app/models/recovery_diary_record_student.rb +++ b/app/models/recovery_diary_record_student.rb @@ -70,10 +70,8 @@ def maximum_score_for_final_recovery end def maximum_score_for_avaliation_recovery - test_setting ||= TestSettingFetcher.current( + TestSettingFetcher.current( recovery_diary_record.classroom ).maximum_score - - test_setting end end From d8db4d0985c18d86ffd2c0aee1b45c9a95601e88 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 16 May 2022 14:44:15 -0300 Subject: [PATCH 198/304] =?UTF-8?q?Cria=20migration=20para=20ajustar=20dad?= =?UTF-8?q?os=20j=C3=A1=20cadastrados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrate/20220516154421_remove_spaces_from_name.rb | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 db/migrate/20220516154421_remove_spaces_from_name.rb diff --git a/db/migrate/20220516154421_remove_spaces_from_name.rb b/db/migrate/20220516154421_remove_spaces_from_name.rb new file mode 100644 index 000000000..368271135 --- /dev/null +++ b/db/migrate/20220516154421_remove_spaces_from_name.rb @@ -0,0 +1,7 @@ +class RemoveSpacesFromName < ActiveRecord::Migration + def change + execute <<-SQL + UPDATE users SET first_name = BTRIM(first_name), last_name = BTRIM(last_name); + SQL + end +end From 7ef94c18df05c467fd3bec32d14d41e744c084b5 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 16 May 2022 21:40:50 -0300 Subject: [PATCH 199/304] =?UTF-8?q?Adiciona=20m=C3=A9todo=20para=20fazer?= =?UTF-8?q?=20strip=20da=20string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/models/user.rb b/app/models/user.rb index c9abd1258..013433338 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -20,6 +20,7 @@ class User < ActiveRecord::Base has_enumeration_for :status, with: UserStatus, create_helpers: true after_save :update_fullname_tokens + before_save :remove_spaces_from_name before_destroy :clear_allocation before_validation :verify_receive_news_fields @@ -493,4 +494,9 @@ def email_reserved_for_student errors.add(:email, :invalid_email) end end + + def remove_spaces_from_name + write_attribute(:first_name, first_name.strip) if first_name.present? + write_attribute(:last_name, last_name.strip) if last_name.present? + end end From beb9ce9b2fa1eee6e873ab4967aa917fd1d9b058 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 16 May 2022 21:41:37 -0300 Subject: [PATCH 200/304] =?UTF-8?q?Remove=20l=C3=B3gica=20do=20controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 37391fada..2f15cd142 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -31,8 +31,6 @@ def update params[:user].delete :password if password.blank? - params[:user][:first_name] = params[:user][:first_name].strip - if weak_password?(password) flash.now[:error] = t('errors.general.weak_password') render :edit From f7b194495cd253d6377a48b962674a5bdee2213c Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 17 May 2022 09:41:42 -0300 Subject: [PATCH 201/304] Next se array de datas vir vazio --- app/services/infrequency_tracking_notifier.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/infrequency_tracking_notifier.rb b/app/services/infrequency_tracking_notifier.rb index c2bcb9819..bfde5df1a 100644 --- a/app/services/infrequency_tracking_notifier.rb +++ b/app/services/infrequency_tracking_notifier.rb @@ -12,6 +12,8 @@ def notify! students_with_absences(classroom.id, start_at).each do |student_id| InfrequencyTrackingTypes.list.each do |type| + next if school_dates.empty? + start_at = school_dates.first last_notification_date = last_notification_date(classroom.id, student_id, type) || start_at start_at = last_notification_date < start_at ? start_at : last_notification_date From ba31d730bd8aba26eedd993153a6b63d4ea08ba0 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 18 May 2022 18:45:37 -0300 Subject: [PATCH 202/304] =?UTF-8?q?Passa=20novo=20par=C3=A2metro=20para=20?= =?UTF-8?q?o=20report=20no=20controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/attendance_record_report_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/attendance_record_report_controller.rb b/app/controllers/attendance_record_report_controller.rb index c6857863a..b37bb99cc 100644 --- a/app/controllers/attendance_record_report_controller.rb +++ b/app/controllers/attendance_record_report_controller.rb @@ -30,7 +30,8 @@ def report @attendance_record_report_form.school_calendar_events, current_school_calendar, @attendance_record_report_form.second_teacher_signature, - @attendance_record_report_form.display_knowledge_area_as_discipline + @attendance_record_report_form.display_knowledge_area_as_discipline, + @attendance_record_report_form.students_frequencies_percentage ) send_pdf(t('routes.attendance_record'), attendance_record_report.render) else From e6937385d973d222774e1bb9b3ce1113e738c0af Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 18 May 2022 18:47:05 -0300 Subject: [PATCH 203/304] =?UTF-8?q?Recebe=20dados=20por=20par=C3=A2metro?= =?UTF-8?q?=20e=20mostra=20no=20relat=C3=B3rio=20baseado=20na=20configura?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/attendance_record_report.rb | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/reports/attendance_record_report.rb b/app/reports/attendance_record_report.rb index 7878162ee..b5353071a 100644 --- a/app/reports/attendance_record_report.rb +++ b/app/reports/attendance_record_report.rb @@ -16,7 +16,8 @@ def self.build( events, school_calendar, second_teacher_signature, - display_knowledge_area_as_discipline + display_knowledge_area_as_discipline, + students_frequencies_percentage ) new(:landscape) .build(entity_configuration, @@ -29,7 +30,8 @@ def self.build( events, school_calendar, second_teacher_signature, - display_knowledge_area_as_discipline) + display_knowledge_area_as_discipline, + students_frequencies_percentage) end def build( @@ -43,7 +45,8 @@ def build( events, school_calendar, second_teacher_signature, - display_knowledge_area_as_discipline + display_knowledge_area_as_discipline, + students_frequencies_percentage ) @entity_configuration = entity_configuration @teacher = teacher @@ -62,6 +65,7 @@ def build( @show_legend_remote = false @exists_legend_hybrid = false @exists_legend_remote = false + @students_frequency_percentage = students_frequencies_percentage self.legend = 'Legenda: N - Não enturmado, D - Dispensado da disciplina' @@ -212,6 +216,9 @@ def daily_frequencies_table students[student_id] = {} if students[student_id].nil? students[student_id][:absences] ||= 0 students[student_id][:social_name] = student.social_name + if @show_percentage_on_attendance + students[student_id][:absences_percentage] = @students_frequency_percentage[student_id] + end (students[student_id][:attendances] ||= []) << make_cell(content: "#{school_calendar_event[:legend]}", align: :center) end end @@ -223,10 +230,7 @@ def daily_frequencies_table day_header = make_cell(content: 'Dia', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center) month_header = make_cell(content: 'Mês', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center) absences_header = make_cell(content: 'Faltas', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, valign: :center, rowspan: 3) - - if @show_percentage_on_attendance - percentage_absences_header = make_cell(content: 'Freq.', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, valign: :center, rowspan: 3) - end + percentage_absences_header = make_cell(content: 'Freq.', size: 8, font_style: :bold, background_color: 'FFFFFF', align: :center, valign: :center, rowspan: 3) first_headers_and_class_numbers_cells = [sequential_number_header, student_name_header, class_number_header].concat(class_numbers) @@ -263,6 +267,11 @@ def daily_frequencies_table (40 - value[:attendances].count).times { student_cells << nil } student_cells << make_cell(content: value[:absences].to_s, align: :center) + + if @show_percentage_on_attendance + student_cells << make_cell(content: value[:absences_percentage] || '100%', align: :center) + end + students_cells << student_cells sequence += 1 end From 65419f08cd144603bb0772499ddc8d6baa6b8a8d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 18 May 2022 18:54:04 -0300 Subject: [PATCH 204/304] Pega dados de faltas e calcula porcentagem --- app/forms/attendance_record_report_form.rb | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index d6ef5b3ad..04ce913af 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -94,6 +94,18 @@ def students_enrollments ).student_enrollments end + def students_frequencies_percentage + percentage_by_student = {} + frequency_days = daily_frequencies.size + + absences_students.each do |student_id, absences_student| + percentage = calculate_percentage(frequency_days, absences_student) + percentage_by_student = percentage_by_student.merge({ student_id => percentage }) + end + + percentage_by_student + end + private def remove_duplicated_enrollments(students_enrollments) @@ -130,4 +142,28 @@ def classroom def teacher Teacher.find(@current_teacher_id) end + + def absences_students + absences_by_student = {} + + daily_frequencies.each do |daily_frequency| + daily_frequency.students.each do |daily_frequency_student| + unless daily_frequency_student.present + if absences_by_student[daily_frequency_student.student_id] + absences_by_student[daily_frequency_student.student_id] += 1 + else + absences_by_student = absences_by_student.merge({ daily_frequency_student.student_id => 1 }) + end + end + end + end + + absences_by_student + end + + def calculate_percentage(frequency_days, absences_student) + total_percentage = 100 + multiplication = absences_student * total_percentage + (total_percentage - multiplication / frequency_days).to_s + '%' + end end From 14fb29d5952da5054f84e068a32263bae36aaa56 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 18 May 2022 18:54:13 -0300 Subject: [PATCH 205/304] =?UTF-8?q?Adiciona=20espa=C3=A7o=20antes=20do=20i?= =?UTF-8?q?f?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/attendance_record_report.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/reports/attendance_record_report.rb b/app/reports/attendance_record_report.rb index b5353071a..ed0284fa8 100644 --- a/app/reports/attendance_record_report.rb +++ b/app/reports/attendance_record_report.rb @@ -216,9 +216,11 @@ def daily_frequencies_table students[student_id] = {} if students[student_id].nil? students[student_id][:absences] ||= 0 students[student_id][:social_name] = student.social_name + if @show_percentage_on_attendance students[student_id][:absences_percentage] = @students_frequency_percentage[student_id] end + (students[student_id][:attendances] ||= []) << make_cell(content: "#{school_calendar_event[:legend]}", align: :center) end end From 82d54530ce51d54a0c5bb3ef1a0b5acf98215985 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 20 May 2022 21:30:10 -0300 Subject: [PATCH 206/304] =?UTF-8?q?Remove=20uniquidade=20por=20per=C3=ADod?= =?UTF-8?q?o=20desnecess=C3=A1ria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/lessons_board.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/lessons_board.rb b/app/models/lessons_board.rb index ef0618939..39157f5c7 100644 --- a/app/models/lessons_board.rb +++ b/app/models/lessons_board.rb @@ -6,7 +6,7 @@ class LessonsBoard < ActiveRecord::Base audited validates :period, presence: true - validates :classrooms_grade_id, presence: true, uniqueness: { scope: :period } + validates :classrooms_grade_id, presence: true belongs_to :classrooms_grade has_many :lessons_board_lessons From 75d7e042ae0d8d76baf70d2d1d1dccc5a6899425 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 11:17:56 -0300 Subject: [PATCH 207/304] Faz squish do nome caso tenha params de filtro --- app/controllers/users_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2f15cd142..8c48790dd 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -3,6 +3,8 @@ class UsersController < ApplicationController has_scope :per, default: 10 def index + params[:search][:by_name] = params[:search][:by_name].squish if params[:search].present? + @users = apply_scopes(User.filter(filtering_params params[:search]).ordered) @search_by_name = params.dig(:search, :by_name) From a40768b3181ba676f4d1d6822f1f3443049578cf Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 12:20:44 -0300 Subject: [PATCH 208/304] =?UTF-8?q?Ajusta=20quantidade=20de=20colunas=20ba?= =?UTF-8?q?seada=20no=20par=C3=A2metro=20ativo=20ou=20n=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/attendance_record_report.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/reports/attendance_record_report.rb b/app/reports/attendance_record_report.rb index ed0284fa8..cb813925a 100644 --- a/app/reports/attendance_record_report.rb +++ b/app/reports/attendance_record_report.rb @@ -289,8 +289,9 @@ def daily_frequencies_table ] if slice_index == sliced_students_cells.count - 1 && index == sliced_frequencies_and_events.count - 1 + columns = @show_percentage_on_attendance ? 45 : 44 students_cells_slice << - [{ content: "Aulas dadas: #{daily_frequencies.count}", colspan: 44, align: :center }] + [{ content: "Aulas dadas: #{daily_frequencies.count}", colspan: columns, align: :center }] end data.concat(students_cells_slice) From e0a181d9dfecbdbdd335f7e66885e2ab733c4f6e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 12:26:59 -0300 Subject: [PATCH 209/304] =?UTF-8?q?Adiciona=20porcentagens=20de=20frequ?= =?UTF-8?q?=C3=AAncia=20tamb=C3=A9m=20no=20if?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/attendance_record_report.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/reports/attendance_record_report.rb b/app/reports/attendance_record_report.rb index cb813925a..485a7f6c7 100644 --- a/app/reports/attendance_record_report.rb +++ b/app/reports/attendance_record_report.rb @@ -177,6 +177,10 @@ def daily_frequencies_table self.any_student_with_dependence = self.any_student_with_dependence || students[student_id][:dependence] students[student_id][:absences] ||= 0 + if @show_percentage_on_attendance + students[student_id][:absences_percentage] = @students_frequency_percentage[student_id] + end + if !student_frequency.present students[student_id][:absences] = students[student_id][:absences] + 1 end From 59df28576da5bb14899f6a55f61cfc455ec8b496 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 12:56:30 -0300 Subject: [PATCH 210/304] =?UTF-8?q?Adiciona=20mensagem=20de=20erro=20caso?= =?UTF-8?q?=20a=20configura=C3=A7=C3=A3o=20de=20avalia=C3=A7=C3=A3o=20seja?= =?UTF-8?q?=20diferente=20de=20aritm=C3=A9tica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...avaliation_recovery_lowest_notes_controller.rb | 15 +++++++++++++++ .../models/avaliation_recovery_lowest_note.yml | 1 + 2 files changed, 16 insertions(+) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index c15467706..fd4877576 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -5,6 +5,7 @@ class AvaliationRecoveryLowestNotesController < ApplicationController before_action :require_current_classroom before_action :require_current_teacher before_action :require_allow_to_modify_prev_years, only: [:create, :update, :destroy] + before_action :arithmetic_test_setting def index step_id = (params[:filter] || []).delete(:by_step_id) @@ -259,4 +260,18 @@ def recorded_at_in_selected_step render json: steps_fetcher.step_belongs_to_date?(params[:step_id], params[:recorded_at]) end + + def arithmetic_test_setting + if current_test_setting.blank? + flash[:error] = t('errors.avaliations.require_setting') + + redirect_to(root_path) + end + + return if current_test_setting.arithmetic_calculation_type? + + flash[:alert] = t('activerecord.errors.models.avaliation_recovery_lowest_note.test_setting_without_arithmetic_calculation_type') + + redirect_to root_path + end end diff --git a/config/locales/models/avaliation_recovery_lowest_note.yml b/config/locales/models/avaliation_recovery_lowest_note.yml index abf2f7a8e..34a0cb753 100644 --- a/config/locales/models/avaliation_recovery_lowest_note.yml +++ b/config/locales/models/avaliation_recovery_lowest_note.yml @@ -13,6 +13,7 @@ pt-BR: errors: models: avaliation_recovery_lowest_note: + test_setting_without_arithmetic_calculation_type: 'Não é possível utilizar o recurso com uma Configuração de avaliação com o Cálculo de média diferente de Aritmética' attributes: step_id: unique_by_step_and_classroom: 'já existe um lançamento de recuperação da menor nota para a etapa informada' From 20525588991b4a4413491277bd8c1c18c022f00c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 14:28:34 -0300 Subject: [PATCH 211/304] Ajusta mensagem de erro --- config/locales/models/avaliation_recovery_lowest_note.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/models/avaliation_recovery_lowest_note.yml b/config/locales/models/avaliation_recovery_lowest_note.yml index 34a0cb753..55f2f06e3 100644 --- a/config/locales/models/avaliation_recovery_lowest_note.yml +++ b/config/locales/models/avaliation_recovery_lowest_note.yml @@ -13,7 +13,7 @@ pt-BR: errors: models: avaliation_recovery_lowest_note: - test_setting_without_arithmetic_calculation_type: 'Não é possível utilizar o recurso com uma Configuração de avaliação com o Cálculo de média diferente de Aritmética' + test_setting_without_arithmetic_calculation_type: "A turma selecionada não está configurada com o tipo de cálculo de média compatível com o recurso. Para utilizar o mesmo, o tipo de cálculo deverá ser 'aritmético'." attributes: step_id: unique_by_step_and_classroom: 'já existe um lançamento de recuperação da menor nota para a etapa informada' From 7173cd076ba7933e6b59e9e202159fb77de44bae Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 14:36:33 -0300 Subject: [PATCH 212/304] Faz squish ao salvar nome --- app/models/user.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 013433338..2e8058158 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -85,7 +85,7 @@ class User < ActiveRecord::Base scope :by_current_school_year, ->(year) { where(current_school_year: year) } #search scopes - scope :by_name, lambda { |name| where("fullname ILIKE ?", "%#{I18n.transliterate(name)}%") } + scope :by_name, lambda { |name| where("fullname ILIKE ?", "%#{I18n.transliterate(name.squish)}%") } scope :email, lambda { |email| where("email ILIKE unaccent(?)", "%#{email}%")} scope :login, lambda { |login| where("login ILIKE unaccent(?)", "%#{login}%")} scope :by_cpf, lambda { |cpf| @@ -496,7 +496,7 @@ def email_reserved_for_student end def remove_spaces_from_name - write_attribute(:first_name, first_name.strip) if first_name.present? - write_attribute(:last_name, last_name.strip) if last_name.present? + write_attribute(:first_name, first_name.squish) if first_name.present? + write_attribute(:last_name, last_name.squish) if last_name.present? end end From a3d0a386a740dbdab94447d75b117433e59a6c80 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 23 May 2022 15:35:05 -0300 Subject: [PATCH 213/304] =?UTF-8?q?Remove=20elementos=20tamb=C3=A9m=20do?= =?UTF-8?q?=20meio=20da=20string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrate/20220516154421_remove_spaces_from_name.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/db/migrate/20220516154421_remove_spaces_from_name.rb b/db/migrate/20220516154421_remove_spaces_from_name.rb index 368271135..59c57e6a0 100644 --- a/db/migrate/20220516154421_remove_spaces_from_name.rb +++ b/db/migrate/20220516154421_remove_spaces_from_name.rb @@ -1,7 +1,8 @@ class RemoveSpacesFromName < ActiveRecord::Migration def change execute <<-SQL - UPDATE users SET first_name = BTRIM(first_name), last_name = BTRIM(last_name); + UPDATE users SET first_name = trim(regexp_replace(first_name, '\s+', ' ', 'g')), + last_name = trim(regexp_replace(last_name, '\s+', ' ', 'g')) SQL end end From 8c68055e28d71eedca8e1c75acc9163eb06440f6 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 24 May 2022 11:12:14 -0300 Subject: [PATCH 214/304] Style code --- app/controllers/avaliation_recovery_lowest_notes_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/avaliation_recovery_lowest_notes_controller.rb b/app/controllers/avaliation_recovery_lowest_notes_controller.rb index fd4877576..6927e5714 100644 --- a/app/controllers/avaliation_recovery_lowest_notes_controller.rb +++ b/app/controllers/avaliation_recovery_lowest_notes_controller.rb @@ -265,7 +265,7 @@ def arithmetic_test_setting if current_test_setting.blank? flash[:error] = t('errors.avaliations.require_setting') - redirect_to(root_path) + redirect_to root_path end return if current_test_setting.arithmetic_calculation_type? From e376fe8974dc8cbcf4d4334207481a49581ab48c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 24 May 2022 11:17:08 -0300 Subject: [PATCH 215/304] =?UTF-8?q?Adiciona=20parenteses=20para=20indicar?= =?UTF-8?q?=20qual=20ser=C3=A1=20calculado=20primeiro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 04ce913af..e0dc984c9 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -164,6 +164,6 @@ def absences_students def calculate_percentage(frequency_days, absences_student) total_percentage = 100 multiplication = absences_student * total_percentage - (total_percentage - multiplication / frequency_days).to_s + '%' + (total_percentage - (multiplication / frequency_days)).to_s + '%' end end From d833d43711ae23956207460dfd2818c7139b0b77 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 24 May 2022 16:37:31 -0300 Subject: [PATCH 216/304] =?UTF-8?q?Adiciona=20valida=C3=A7=C3=A3o=20de=20v?= =?UTF-8?q?=C3=ADnculo=20de=20professor=20com=20a=20turma=20ao=20criar=20f?= =?UTF-8?q?requ=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/unique_daily_frequency_students_creator.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/services/unique_daily_frequency_students_creator.rb b/app/services/unique_daily_frequency_students_creator.rb index 3831cebb6..c62f6b772 100644 --- a/app/services/unique_daily_frequency_students_creator.rb +++ b/app/services/unique_daily_frequency_students_creator.rb @@ -51,9 +51,15 @@ def perform_worker_time ].max end + def teacher_lesson_on_classroom?(teacher_id, classroom_id) + TeacherDisciplineClassroom.where(teacher_id: teacher_id, classroom_id: classroom_id).exists? + end + def create_or_update_unique_daily_frequency_students(daily_frequency_students, teacher_id) daily_frequency_students.each do |student_id, frequency_data| begin + next unless teacher_lesson_on_classroom?(teacher_id, frequency_data[:classroom_id]) + UniqueDailyFrequencyStudent.find_or_initialize_by( student_id: student_id, classroom_id: frequency_data[:classroom_id], From bc86086dc1512c29a7168aa4399a595099f1c423 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 24 May 2022 20:32:01 -0300 Subject: [PATCH 217/304] =?UTF-8?q?Considera=20apenas=20dias=20que=20o=20a?= =?UTF-8?q?luno=20teve=20frequ=C3=AAncia=20para=20calcular=20porcentagem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 23 +++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index e0dc984c9..3abf3cb7f 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -96,10 +96,9 @@ def students_enrollments def students_frequencies_percentage percentage_by_student = {} - frequency_days = daily_frequencies.size absences_students.each do |student_id, absences_student| - percentage = calculate_percentage(frequency_days, absences_student) + percentage = calculate_percentage(absences_student[:count_days], absences_student[:absences]) percentage_by_student = percentage_by_student.merge({ student_id => percentage }) end @@ -145,16 +144,30 @@ def teacher def absences_students absences_by_student = {} + count_days = {} daily_frequencies.each do |daily_frequency| daily_frequency.students.each do |daily_frequency_student| + student_id = daily_frequency_student.student_id + + if count_days[student_id] + count_days[student_id] += 1 + else + count_days = count_days.merge( { student_id => 1 } ) + end + unless daily_frequency_student.present - if absences_by_student[daily_frequency_student.student_id] - absences_by_student[daily_frequency_student.student_id] += 1 + if absences_by_student[student_id] + absences_by_student[student_id][:absences] += 1 else - absences_by_student = absences_by_student.merge({ daily_frequency_student.student_id => 1 }) + absences_by_student = absences_by_student.merge({ student_id => { :absences => 1, :count_days => 0 } }) end end + + + if absences_by_student.present? && absences_by_student[student_id] + absences_by_student[student_id][:count_days] = count_days[student_id] + end end end From cab7e3b73cc7121a6ae6ecf5aa762734178b9b4b Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 25 May 2022 15:50:03 -0300 Subject: [PATCH 218/304] Remove flatten e itera o objeto --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index c0a1fd304..e3a82b797 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -27,7 +27,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) rescue ActiveRecord::RecordInvalid unity_name = Unity.find_by(id: school_calendar.unity_id)&.name - school_calendar.steps.flatten.map do |step| + school_calendar.steps.each do |step| if school_calendar_event_batch.start_date.between?(step.start_at, step.end_at) && school_calendar_event_batch.end_date.between?(step.start_at, step.end_at) From cdd2088090c68ed1835833ea2ecc1cb5cce70f4c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 25 May 2022 18:55:06 -0300 Subject: [PATCH 219/304] Ajustes CR --- app/forms/attendance_record_report_form.rb | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 3abf3cb7f..be608b317 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -150,21 +150,14 @@ def absences_students daily_frequency.students.each do |daily_frequency_student| student_id = daily_frequency_student.student_id - if count_days[student_id] - count_days[student_id] += 1 - else - count_days = count_days.merge( { student_id => 1 } ) - end + count_days[student_id] ||= 0 + count_days[student_id] += 1 unless daily_frequency_student.present - if absences_by_student[student_id] - absences_by_student[student_id][:absences] += 1 - else - absences_by_student = absences_by_student.merge({ student_id => { :absences => 1, :count_days => 0 } }) - end + absences_by_student[student_id] ||= { :absences => 1, :count_days => 0 } + absences_by_student[student_id][:absences] += 1 end - if absences_by_student.present? && absences_by_student[student_id] absences_by_student[student_id][:count_days] = count_days[student_id] end From f39f2038523136633fcbfb9845992d6cf62aa443 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 25 May 2022 20:13:10 -0300 Subject: [PATCH 220/304] =?UTF-8?q?Seta=20faltas=20como=200=20caso=20n?= =?UTF-8?q?=C3=A3o=20exista?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index be608b317..fc554a975 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -154,7 +154,7 @@ def absences_students count_days[student_id] += 1 unless daily_frequency_student.present - absences_by_student[student_id] ||= { :absences => 1, :count_days => 0 } + absences_by_student[student_id] ||= { :absences => 0, :count_days => 0 } absences_by_student[student_id][:absences] += 1 end From 6c2b7c7b3dba64a657d964fb5ca93779cb9e3f4c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 25 May 2022 20:19:14 -0300 Subject: [PATCH 221/304] =?UTF-8?q?Valida=20se=20dia=20=C3=A9=20valido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 44 +++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index fc554a975..64df61338 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -151,7 +151,7 @@ def absences_students student_id = daily_frequency_student.student_id count_days[student_id] ||= 0 - count_days[student_id] += 1 + count_days[student_id] += 1 if count_day?(daily_frequency, student_id) unless daily_frequency_student.present absences_by_student[student_id] ||= { :absences => 0, :count_days => 0 } @@ -172,4 +172,46 @@ def calculate_percentage(frequency_days, absences_student) multiplication = absences_student * total_percentage (total_percentage - (multiplication / frequency_days)).to_s + '%' end + + def count_day?(daily_frequency, student_id) + student_enrollment = StudentEnrollment.by_classroom(daily_frequency.classroom_id) + .by_student(student_id) + .by_year(daily_frequency.classroom.year) + .first + frequency_date = daily_frequency.frequency_date + + return false if in_active_search?(student_enrollment, frequency_date) || + inactive_on_date?(daily_frequency, student_enrollment) || + exempted_from_discipline?(daily_frequency, student_enrollment) + + true + end + + def active_search + @active_search ||= ActiveSearch.new + end + + def in_active_search?(student_enrollment, frequency_date) + active_search.in_active_search?(student_enrollment.id, frequency_date) + end + + def inactive_on_date?(daily_frequency, student_enrollment) + StudentEnrollment.where(id: student_enrollment) + .by_classroom(daily_frequency.classroom) + .by_date(daily_frequency.frequency_date) + .empty? + end + + def exempted_from_discipline?(daily_frequency, student_enrollment) + return false if daily_frequency.discipline_id.blank? + + frequency_date = daily_frequency.frequency_date + discipline_id = daily_frequency.discipline.id + step_number = daily_frequency.school_calendar.step(frequency_date).try(:to_number) + + student_enrollment.exempted_disciplines + .by_discipline(discipline_id) + .by_step_number(step_number) + .any? + end end From b2260159d6231d81575ca1c889227b66df33e944 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 12:09:11 -0300 Subject: [PATCH 222/304] =?UTF-8?q?N=C3=A3o=20contabiliza=20falta=20caso?= =?UTF-8?q?=20n=C3=A3o=20seja=20um=20dia=20v=C3=A1lido?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 64df61338..4e1de5e76 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -151,9 +151,10 @@ def absences_students student_id = daily_frequency_student.student_id count_days[student_id] ||= 0 - count_days[student_id] += 1 if count_day?(daily_frequency, student_id) + count_day = count_day?(daily_frequency, student_id) + count_days[student_id] += 1 if count_day - unless daily_frequency_student.present + unless daily_frequency_student.present && count_day absences_by_student[student_id] ||= { :absences => 0, :count_days => 0 } absences_by_student[student_id][:absences] += 1 end From f67a60d2ed31aeb972fd8683775ff2a2bb6f9d76 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 12:10:51 -0300 Subject: [PATCH 223/304] =?UTF-8?q?Ajusta=20l=C3=B3gica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 4e1de5e76..8bee45148 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -154,7 +154,7 @@ def absences_students count_day = count_day?(daily_frequency, student_id) count_days[student_id] += 1 if count_day - unless daily_frequency_student.present && count_day + if !daily_frequency_student.present && count_day absences_by_student[student_id] ||= { :absences => 0, :count_days => 0 } absences_by_student[student_id][:absences] += 1 end From c83b2581d0654a62e00590bf8ea3514134c90e95 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 12:12:03 -0300 Subject: [PATCH 224/304] Melhora visibilidade --- app/forms/attendance_record_report_form.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 8bee45148..ab743a591 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -153,8 +153,9 @@ def absences_students count_days[student_id] ||= 0 count_day = count_day?(daily_frequency, student_id) count_days[student_id] += 1 if count_day + absence = !daily_frequency_student.present - if !daily_frequency_student.present && count_day + if absence && count_day absences_by_student[student_id] ||= { :absences => 0, :count_days => 0 } absences_by_student[student_id][:absences] += 1 end From c15a0e3493f606a373f0d9362096dc4951b884e1 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 19:46:36 -0300 Subject: [PATCH 225/304] =?UTF-8?q?Utiliza=20memoize=20para=20evitar=20alo?= =?UTF-8?q?ca=C3=A7=C3=A3o=20de=20mem=C3=B3ria=20e=20cria=20m=C3=A9todo=20?= =?UTF-8?q?que=20monta=20hash=20com=20datas=20de=20alunos=20inativos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 75 +++++++++++++++------- 1 file changed, 51 insertions(+), 24 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index ab743a591..52794397a 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -33,25 +33,25 @@ class AttendanceRecordReportForm def daily_frequencies if global_absence? - DailyFrequency.by_classroom_id(classroom_id) - .by_period(period) - .by_frequency_date_between(start_at, end_at) - .general_frequency - .includes(students: :student) - .order_by_frequency_date - .order_by_class_number - .order_by_student_name + @daily_frequencies ||= DailyFrequency.by_classroom_id(classroom_id) + .by_period(period) + .by_frequency_date_between(start_at, end_at) + .general_frequency + .includes(students: :student) + .order_by_frequency_date + .order_by_class_number + .order_by_student_name else - DailyFrequency.by_classroom_id(classroom_id) - .by_period(period) - .by_discipline_id(discipline_id) - .by_class_number(class_numbers.split(',')) - .by_frequency_date_between(start_at, end_at) - .includes(students: :student) - .order_by_frequency_date - .order_by_class_number - .order_by_student_name + @daily_frequencies ||= DailyFrequency.by_classroom_id(classroom_id) + .by_period(period) + .by_discipline_id(discipline_id) + .by_class_number(class_numbers.split(',')) + .by_frequency_date_between(start_at, end_at) + .includes(students: :student) + .order_by_frequency_date + .order_by_class_number + .order_by_student_name end end @@ -83,7 +83,7 @@ def school_calendar_events def students_enrollments adjusted_period = period != Periods::FULL ? period : nil - StudentEnrollmentsList.new( + @students ||= StudentEnrollmentsList.new( classroom: classroom_id, discipline: discipline_id, start_at: start_at, @@ -183,7 +183,7 @@ def count_day?(daily_frequency, student_id) frequency_date = daily_frequency.frequency_date return false if in_active_search?(student_enrollment, frequency_date) || - inactive_on_date?(daily_frequency, student_enrollment) || + inactive_on_date?(daily_frequency, student_id) || exempted_from_discipline?(daily_frequency, student_enrollment) true @@ -197,11 +197,38 @@ def in_active_search?(student_enrollment, frequency_date) active_search.in_active_search?(student_enrollment.id, frequency_date) end - def inactive_on_date?(daily_frequency, student_enrollment) - StudentEnrollment.where(id: student_enrollment) - .by_classroom(daily_frequency.classroom) - .by_date(daily_frequency.frequency_date) - .empty? + def inactive_on_date?(daily_frequency, student_id) + return false unless inactives[student_id] + + unique_dates_for_student = inactives[student_id].uniq + + unique_dates_for_student.include?(daily_frequency.frequency_date) + end + + def inactives + @inactives ||= inactives_on_dates + end + + def inactives_on_dates + inactives_on_dates = {} + + daily_frequencies.each do |daily_frequency| + enrollments_ids = students_enrollments.map(&:id) + enrollments_on_date = StudentEnrollment.where(id: enrollments_ids) + .by_date(daily_frequency.frequency_date) + enrollments_on_date_ids = enrollments_on_date.pluck(:id) + not_enrrolled_on_the_date = enrollments_ids - enrollments_on_date_ids + + next if not_enrrolled_on_the_date.empty? + + not_enrrolled_on_the_date.each do |not_enrolled| + enrollment = students_enrollments.select { |student_enrollment| student_enrollment.id == not_enrolled }.first + inactives_on_dates[enrollment.student_id] ||= [daily_frequency.frequency_date] + inactives_on_dates[enrollment.student_id] << daily_frequency.frequency_date + end + end + + inactives_on_dates end def exempted_from_discipline?(daily_frequency, student_enrollment) From 4804a32fbdf8b6b37bb24e115143c6697d45b50a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 21:25:26 -0300 Subject: [PATCH 226/304] =?UTF-8?q?Monta=20estrutura=20para=20guardar=20to?= =?UTF-8?q?das=20Buscas=20ativas=20do=20per=C3=ADodo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 32 ++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 52794397a..2d5e020c2 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -182,19 +182,41 @@ def count_day?(daily_frequency, student_id) .first frequency_date = daily_frequency.frequency_date - return false if in_active_search?(student_enrollment, frequency_date) || + return false if in_active_search?(student_id, frequency_date) || inactive_on_date?(daily_frequency, student_id) || exempted_from_discipline?(daily_frequency, student_enrollment) true end - def active_search - @active_search ||= ActiveSearch.new + def in_active_search?(student_id, frequency_date) + return false unless active_searches[student_id] + + unique_dates_for_student = active_searches[student_id].uniq + + unique_dates_for_student.include?(frequency_date) end - def in_active_search?(student_enrollment, frequency_date) - active_search.in_active_search?(student_enrollment.id, frequency_date) + def active_searches + @active_searches ||= in_active_searches + end + + def in_active_searches + students_enrollments_ids = students_enrollments.map(&:id) + dates = daily_frequencies.pluck(:frequency_date).uniq + + active_searches = {} + + ActiveSearch.new.in_active_search_in_range(students_enrollments_ids, dates).each do |active_search| + next if active_search[:student_ids].blank? + + active_search[:student_ids].each do |student_id| + active_searches[student_id] ||= [active_search[:date]] + active_searches[student_id] << active_search[:date] + end + end + + active_searches end def inactive_on_date?(daily_frequency, student_id) From 8bda91c671ae9d9e040a21046d83e3f918dc97bd Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 26 May 2022 23:10:33 -0300 Subject: [PATCH 227/304] Cria estrutura para pre-carregar dispensas --- app/forms/attendance_record_report_form.rb | 46 +++++++++++++++++----- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 2d5e020c2..05ff23e7c 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -184,7 +184,7 @@ def count_day?(daily_frequency, student_id) return false if in_active_search?(student_id, frequency_date) || inactive_on_date?(daily_frequency, student_id) || - exempted_from_discipline?(daily_frequency, student_enrollment) + exempted_from_discipline?(daily_frequency, student_id) true end @@ -253,16 +253,42 @@ def inactives_on_dates inactives_on_dates end - def exempted_from_discipline?(daily_frequency, student_enrollment) - return false if daily_frequency.discipline_id.blank? + def exempted_from_discipline?(daily_frequency, student_id) + step = daily_frequency.school_calendar.step(daily_frequency.frequency_date).try(:to_number) - frequency_date = daily_frequency.frequency_date - discipline_id = daily_frequency.discipline.id - step_number = daily_frequency.school_calendar.step(frequency_date).try(:to_number) + return false if exempts[student_id].nil? + + exempts[student_id].include?(step) + end + + def exempts + @exempts ||= exempts_data + end + + def exempts_data + return false if daily_frequencies.first.discipline_id.blank? + + discipline_id = daily_frequencies.first.discipline_id + enrollments_ids = students_enrollments.map(&:id) + exempteds_from_discipline = {} + + steps = daily_frequencies.map { |daily_frequency| + daily_frequency.school_calendar.step(daily_frequency.frequency_date).try(:to_number) + } + + unique_steps = steps.uniq + + unique_steps.each do |step_number| + StudentEnrollmentExemptedDiscipline.by_discipline(discipline_id) + .by_step_number(step_number) + .by_student_enrollment(enrollments_ids) + .includes(student_enrollment: [:student]) + .each do |student_exempted| + exempteds_from_discipline[student_exempted.student_enrollment.student_id] ||= [step_number] + exempteds_from_discipline[student_exempted.student_enrollment.student_id] << step_number + end + end - student_enrollment.exempted_disciplines - .by_discipline(discipline_id) - .by_step_number(step_number) - .any? + exempteds_from_discipline end end From 05ee1d6d38333a8ec432244cf7b9d69341152219 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 27 May 2022 10:26:30 -0300 Subject: [PATCH 228/304] Seta array vazio ao iniciar o hash --- app/forms/attendance_record_report_form.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 05ff23e7c..72897ec05 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -211,7 +211,7 @@ def in_active_searches next if active_search[:student_ids].blank? active_search[:student_ids].each do |student_id| - active_searches[student_id] ||= [active_search[:date]] + active_searches[student_id] ||= [] active_searches[student_id] << active_search[:date] end end @@ -245,7 +245,7 @@ def inactives_on_dates not_enrrolled_on_the_date.each do |not_enrolled| enrollment = students_enrollments.select { |student_enrollment| student_enrollment.id == not_enrolled }.first - inactives_on_dates[enrollment.student_id] ||= [daily_frequency.frequency_date] + inactives_on_dates[enrollment.student_id] ||= [] inactives_on_dates[enrollment.student_id] << daily_frequency.frequency_date end end @@ -284,7 +284,7 @@ def exempts_data .by_student_enrollment(enrollments_ids) .includes(student_enrollment: [:student]) .each do |student_exempted| - exempteds_from_discipline[student_exempted.student_enrollment.student_id] ||= [step_number] + exempteds_from_discipline[student_exempted.student_enrollment.student_id] ||= [] exempteds_from_discipline[student_exempted.student_enrollment.student_id] << step_number end end From 81a168b51f527b67616d978954915984045e1f22 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 27 May 2022 10:32:25 -0300 Subject: [PATCH 229/304] =?UTF-8?q?Remove=20vari=C3=A1vel=20que=20n=C3=A3o?= =?UTF-8?q?=20ser=C3=A1=20mais=20utilizada=20e=20passa=20data=20por=20par?= =?UTF-8?q?=C3=A2metro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 72897ec05..4a34f8a1b 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -176,14 +176,10 @@ def calculate_percentage(frequency_days, absences_student) end def count_day?(daily_frequency, student_id) - student_enrollment = StudentEnrollment.by_classroom(daily_frequency.classroom_id) - .by_student(student_id) - .by_year(daily_frequency.classroom.year) - .first frequency_date = daily_frequency.frequency_date return false if in_active_search?(student_id, frequency_date) || - inactive_on_date?(daily_frequency, student_id) || + inactive_on_date?(frequency_date, student_id) || exempted_from_discipline?(daily_frequency, student_id) true @@ -219,12 +215,12 @@ def in_active_searches active_searches end - def inactive_on_date?(daily_frequency, student_id) + def inactive_on_date?(frequency_date, student_id) return false unless inactives[student_id] unique_dates_for_student = inactives[student_id].uniq - unique_dates_for_student.include?(daily_frequency.frequency_date) + unique_dates_for_student.include?(frequency_date) end def inactives From 6eae56831076c15c3b8cd783a4641abb4661ff0e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 27 May 2022 19:08:56 -0300 Subject: [PATCH 230/304] =?UTF-8?q?Caso=20a=20disciplina=20n=C3=A3o=20seja?= =?UTF-8?q?=20todas,=20filtra=20apenas=20pela=20selecionada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/observation_record_report_query.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/queries/observation_record_report_query.rb b/app/queries/observation_record_report_query.rb index 1735d9eb3..d8f1fad6a 100644 --- a/app/queries/observation_record_report_query.rb +++ b/app/queries/observation_record_report_query.rb @@ -25,8 +25,7 @@ def observation_diary_records .order(:date) unless @discipline_id.eql?('all') - @discipline_id = Discipline.by_classroom_id(classroom_id).pluck(:id) - relation = relation.by_discipline(discipline_id) + relation = relation.by_discipline(@discipline_id) end relation From 11735a275397e3e74ae33b92dee16d2a3f2aa777 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 27 May 2022 20:57:40 -0300 Subject: [PATCH 231/304] Descarta caso student esteja apagado --- .../student_enrollment_synchronizer.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb index 7886c981a..8e0539d47 100644 --- a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb +++ b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb @@ -22,7 +22,12 @@ def update_student_enrollments(student_enrollments) student_enrollments.each do |student_enrollment_record| student_id = student(student_enrollment_record.aluno_id).try(:id) - next if student_id.blank? + if student_id.blank? + StudentEnrollment.with_discarded.find_by(api_code: student_enrollment_record.matricula_id)&.discard + + next + end + StudentEnrollment.with_discarded.find_or_initialize_by( api_code: student_enrollment_record.matricula_id From 0f3358b96cd01a684faab9a0af206a950cde4b80 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 30 May 2022 09:40:40 -0300 Subject: [PATCH 232/304] =?UTF-8?q?Ajusta=20retorno=20quando=20o=20municip?= =?UTF-8?q?io=20usar=20frequ=C3=AAncia=20geral?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 2 +- .../ieducar_synchronizers/student_enrollment_synchronizer.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 4a34f8a1b..bc2e9e694 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -252,7 +252,7 @@ def inactives_on_dates def exempted_from_discipline?(daily_frequency, student_id) step = daily_frequency.school_calendar.step(daily_frequency.frequency_date).try(:to_number) - return false if exempts[student_id].nil? + return false if exempts.eql?(false) || exempts[student_id].nil? exempts[student_id].include?(step) end diff --git a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb index 7886c981a..744e56e8c 100644 --- a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb +++ b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb @@ -19,7 +19,7 @@ def api_class def update_student_enrollments(student_enrollments) return if student_enrollments.blank? - student_enrollments.each do |student_enrollment_record| + student_enrollments.each do |student_enrollment_recorattendanced| student_id = student(student_enrollment_record.aluno_id).try(:id) next if student_id.blank? From 3b03a213341e6ec6d1c2a9e8c708e9e3a30f8078 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 30 May 2022 09:42:29 -0300 Subject: [PATCH 233/304] =?UTF-8?q?Retorna=20c=C3=B3digo=20que=20foi=20mex?= =?UTF-8?q?ido=20incorretamente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ieducar_synchronizers/student_enrollment_synchronizer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb index 744e56e8c..7886c981a 100644 --- a/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb +++ b/app/services/ieducar_synchronizers/student_enrollment_synchronizer.rb @@ -19,7 +19,7 @@ def api_class def update_student_enrollments(student_enrollments) return if student_enrollments.blank? - student_enrollments.each do |student_enrollment_recorattendanced| + student_enrollments.each do |student_enrollment_record| student_id = student(student_enrollment_record.aluno_id).try(:id) next if student_id.blank? From 76ab855ec143c651086d47a892b9697b75945a8a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 30 May 2022 09:46:59 -0300 Subject: [PATCH 234/304] Retorna antes de pegar etapa --- app/forms/attendance_record_report_form.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index bc2e9e694..6bbc51fda 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -250,9 +250,11 @@ def inactives_on_dates end def exempted_from_discipline?(daily_frequency, student_id) + return false if exempts.eql?(false) + step = daily_frequency.school_calendar.step(daily_frequency.frequency_date).try(:to_number) - return false if exempts.eql?(false) || exempts[student_id].nil? + return false if exempts[student_id].nil? exempts[student_id].include?(step) end From 25c68d808d0b4a794c6ef1cc13b4def15c3c999a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 30 May 2022 10:06:41 -0300 Subject: [PATCH 235/304] =?UTF-8?q?Valida=20de=20hash=20=C3=A9=20empty?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/forms/attendance_record_report_form.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/forms/attendance_record_report_form.rb b/app/forms/attendance_record_report_form.rb index 6bbc51fda..cae61ca95 100644 --- a/app/forms/attendance_record_report_form.rb +++ b/app/forms/attendance_record_report_form.rb @@ -250,7 +250,7 @@ def inactives_on_dates end def exempted_from_discipline?(daily_frequency, student_id) - return false if exempts.eql?(false) + return false if exempts.empty? step = daily_frequency.school_calendar.step(daily_frequency.frequency_date).try(:to_number) @@ -264,7 +264,7 @@ def exempts end def exempts_data - return false if daily_frequencies.first.discipline_id.blank? + return {} if daily_frequencies.first.discipline_id.blank? discipline_id = daily_frequencies.first.discipline_id enrollments_ids = students_enrollments.map(&:id) From feaef9e3013df2c32475e488923fe75a679b8373 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 1 Jun 2022 16:54:00 -0300 Subject: [PATCH 236/304] Pega current entity caso entity_id venha nil --- app/services/student_dependencies_discarder.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/services/student_dependencies_discarder.rb b/app/services/student_dependencies_discarder.rb index 3fbd22b82..a1893a2a3 100644 --- a/app/services/student_dependencies_discarder.rb +++ b/app/services/student_dependencies_discarder.rb @@ -1,5 +1,7 @@ class StudentDependenciesDiscarder def self.discard(entity_id, student_id) + entity_id = Entity.current&.id if entity_id.nil? + AvaliationExemptionsDiscardWorker.perform_async(entity_id, student_id) ObservationDiaryRecordsDiscardWorker.perform_async(entity_id, student_id) ConceptualExamsDiscardWorker.perform_async(entity_id, student_id) @@ -8,6 +10,8 @@ def self.discard(entity_id, student_id) end def self.undiscard(entity_id, student_id) + entity_id = Entity.current&.id if entity_id.nil? + AvaliationExemptionsUndiscardWorker.perform_async(entity_id, student_id) ObservationDiaryRecordsUndiscardWorker.perform_async(entity_id, student_id) ConceptualExamsUndiscardWorker.perform_async(entity_id, student_id) From ea7d221c4184e4a76c0bf4efdbc59d24efe9906a Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 1 Jun 2022 19:12:44 -0300 Subject: [PATCH 237/304] =?UTF-8?q?Ajusta=20para=20n=C3=A3o=20fazer=20filt?= =?UTF-8?q?ro=20por=20per=C3=ADodo=20caso=20seja=20nil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/daily_frequencies_in_batchs_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/daily_frequencies_in_batchs_controller.rb b/app/controllers/daily_frequencies_in_batchs_controller.rb index 270ef1f6a..f938e5249 100644 --- a/app/controllers/daily_frequencies_in_batchs_controller.rb +++ b/app/controllers/daily_frequencies_in_batchs_controller.rb @@ -212,7 +212,6 @@ def allocation_dates(dates) .by_classroom(@classroom.id) .by_teacher(current_teacher_id) .by_weekday(date.strftime("%A").downcase) - .by_period(@period) .order('lessons_board_lessons.lesson_number') else allocations = LessonsBoardLessonWeekday.includes(:lessons_board_lesson) @@ -220,10 +219,11 @@ def allocation_dates(dates) .by_teacher(current_teacher_id) .by_discipline(@discipline.id) .by_weekday(date.strftime("%A").downcase) - .by_period(@period) .order('lessons_board_lessons.lesson_number') end + allocations.by_period(@period) if @period.present? + valid_day = SchoolDayChecker.new(current_school_calendar, date, nil, nil, nil).school_day? next if allocations.empty? || !valid_day From 08b73eb91e494aca9eb37d0d3ac1a461bb52236e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 2 Jun 2022 09:56:07 -0300 Subject: [PATCH 238/304] Adiciona safe navigation --- app/forms/avaliation_multiple_creator_form.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/forms/avaliation_multiple_creator_form.rb b/app/forms/avaliation_multiple_creator_form.rb index c206678dc..4a98de94b 100644 --- a/app/forms/avaliation_multiple_creator_form.rb +++ b/app/forms/avaliation_multiple_creator_form.rb @@ -84,7 +84,7 @@ def avaliations_attributes=(avaliations) observations: self.observations, school_calendar_id: self.school_calendar_id, teacher_id: teacher_id, - grade_ids: avaliation_attributes.last['grade_ids'].split(',') + grade_ids: avaliation_attributes.last['grade_ids']&.split(',') ) @avaliations << avaliation From bbd7993a31cc0ca4990bca2817651151dbf5f9c2 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Thu, 2 Jun 2022 17:38:04 -0300 Subject: [PATCH 239/304] Atualiza README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 50e2bd47b..742c0d624 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,12 @@ gem install bundler -v '1.17.3' bundle install ``` +- Instale as dependencias do projeto + +```bash +yarn install +``` + - Crie e configure o arquivo `config/secrets.yml` conforme o exemplo: ```yaml From 35d12d7f35cf6ed76129a8a2459bc2b439cc6c7c Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 6 Jun 2022 17:38:17 -0300 Subject: [PATCH 240/304] =?UTF-8?q?Adiciona=20formata=C3=A7=C3=A3o=20de=20?= =?UTF-8?q?data=20para=20modelo=20brasileiro=20ao=20apresentar=20msg=20de?= =?UTF-8?q?=20erro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../event_creator_worker.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index e3a82b797..19cb2ae85 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -34,14 +34,14 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) notify( school_calendar_event_batch, "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date}.", + #{unity_name} pois a mesma já possui um evento na data #{school_calendar_event_batch.start_date.strftime('%d/%m/%Y')}.", user_id ) else notify( school_calendar_event_batch, "A criação do evento #{school_calendar_event_batch.description} não foi efetuada para a escola\ - #{unity_name} pois a data #{school_calendar_event_batch.start_date} não está dentro do período letivo.", + #{unity_name} pois a data #{school_calendar_event_batch.start_date.strftime('%d/%m/%Y')} não está dentro do período letivo.", user_id ) end From dff2005c1c3f4403c57794038b9aaa2d14baed7d Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 6 Jun 2022 19:52:38 -0300 Subject: [PATCH 241/304] =?UTF-8?q?N=C3=A3o=20passa=20m=C3=A9dia=20por=20m?= =?UTF-8?q?=C3=A9todo=20que=20remove=20casa=20decimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/reports/exam_record_report.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/reports/exam_record_report.rb b/app/reports/exam_record_report.rb index e82c409c4..d61c68f2c 100644 --- a/app/reports/exam_record_report.rb +++ b/app/reports/exam_record_report.rb @@ -280,7 +280,7 @@ def daily_notes_table averages[key] = ScoreRounder.new(classroom, RoundedAvaliations::SCHOOL_TERM_RECOVERY) .round(recovery_average) - average = localize_score(averages[key]) + average = averages[key] student_cells << make_cell(content: "#{average}", font_style: :bold, align: :center) else student_cells << make_cell(content: '-', font_style: :bold, align: :center) From 5b41dd9fd52d94ddf789b8d20fe042e664db8d72 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 6 Jun 2022 21:11:19 -0300 Subject: [PATCH 242/304] =?UTF-8?q?Ajusta=20casas=20decimais=20baseado=20n?= =?UTF-8?q?a=20configura=C3=A7=C3=A3o=20de=20avalia=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/score_rounder.rb | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/app/services/score_rounder.rb b/app/services/score_rounder.rb index bfb7cd57a..47bdca33a 100644 --- a/app/services/score_rounder.rb +++ b/app/services/score_rounder.rb @@ -58,9 +58,7 @@ def custom_rounding_table_id def decimal_part(value) parts = value.to_s.split('.') - decimal_part = parts.count > 1 ? parts[1][0].to_s : 0 - - decimal_part + decimal_parts(parts[1]) end def round_to_exact_decimal(score, exact_decimal_place) @@ -75,11 +73,32 @@ def round_to_below(score) score.floor end + def number_of_decimal_places + TestSettingFetcher.current(@classroom).number_of_decimal_places + end + def truncate_score(score) parts = score.to_s.split('.') integer_part = parts[0] - decimal_part = parts[1] + decimal_part = decimal_parts(parts[1]) + + "#{integer_part}.#{decimal_part}" + end + + def decimal_parts(part) + decimal_places = number_of_decimal_places - 1 + + decimal_part = part[0..decimal_places] + + if number_of_decimal_places > decimal_part.size + missing = number_of_decimal_places - decimal_part.size + decimal_part = decimal_part + count_zeros(missing) + end + + decimal_part + end - "#{integer_part}.#{decimal_part}".to_f + def count_zeros(missing) + "0" * missing end end From f3a103f15dc338a836e0779d2421256106a2a49f Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Tue, 7 Jun 2022 09:46:21 -0300 Subject: [PATCH 243/304] =?UTF-8?q?Retorna=20caso=20n=C3=A3o=20exista=20as?= =?UTF-8?q?=20etapas=20no=20calend=C3=A1rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/workers/school_days_counter_worker.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/workers/school_days_counter_worker.rb b/app/workers/school_days_counter_worker.rb index 8712e2611..fdae5e8b4 100644 --- a/app/workers/school_days_counter_worker.rb +++ b/app/workers/school_days_counter_worker.rb @@ -6,6 +6,9 @@ class SchoolDaysCounterWorker def perform(entity_id, school_calendar_id) Entity.find(entity_id).using_connection do school_calendar = SchoolCalendar.find(school_calendar_id) + + return if school_calendar.steps.empty? + start_date = school_calendar.steps.min_by(&:step_number).start_at end_date = school_calendar.steps.max_by(&:step_number).end_at From 3236750eddeec75487cd72b2b2f5431602ed1a2c Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Tue, 7 Jun 2022 18:55:47 -0300 Subject: [PATCH 244/304] Ajusta query que busca permissao dos usuarios --- app/models/user_role.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/user_role.rb b/app/models/user_role.rb index 28af1340e..1416e90b1 100644 --- a/app/models/user_role.rb +++ b/app/models/user_role.rb @@ -24,8 +24,8 @@ class UserRole < ActiveRecord::Base scope :user_name, lambda { |user_name| joins(:user) - .where("users.fullname_tokens @@ to_tsquery('portuguese', ?)", split_search(user_name)) - .order("ts_rank_cd(users.fullname_tokens, to_tsquery('portuguese', '#{split_search(user_name)}')) desc") + .where("users.fullname ILIKE ?", "%#{I18n.transliterate(user_name.squish)}%") + .order('users.fullname') } scope :unity_name, ->(unity_name) { joins(:unity).merge(Unity.search_name(unity_name)) } From 5458504dd6ec96e660c520567899e47ce098c73c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 8 Jun 2022 11:12:31 -0300 Subject: [PATCH 245/304] =?UTF-8?q?Ajusta=20para=20caso=20de=20m=C3=A9dia?= =?UTF-8?q?=20vazia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/score_rounder.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/score_rounder.rb b/app/services/score_rounder.rb index 47bdca33a..4bd03afd2 100644 --- a/app/services/score_rounder.rb +++ b/app/services/score_rounder.rb @@ -86,6 +86,8 @@ def truncate_score(score) end def decimal_parts(part) + return if part.nil? + decimal_places = number_of_decimal_places - 1 decimal_part = part[0..decimal_places] From 55d14012959e41e9433abd57266043e22eebdc51 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 8 Jun 2022 11:23:48 -0300 Subject: [PATCH 246/304] =?UTF-8?q?Reverte=20m=C3=A9todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/score_rounder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/score_rounder.rb b/app/services/score_rounder.rb index 47bdca33a..ea2220af2 100644 --- a/app/services/score_rounder.rb +++ b/app/services/score_rounder.rb @@ -58,7 +58,7 @@ def custom_rounding_table_id def decimal_part(value) parts = value.to_s.split('.') - decimal_parts(parts[1]) + parts.count > 1 ? parts[1][0].to_s : 0 end def round_to_exact_decimal(score, exact_decimal_place) From 941cc3d9cebfe22e98e821ae77d3743c0480bc50 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 8 Jun 2022 11:28:19 -0300 Subject: [PATCH 247/304] Seta como float novamente --- app/services/score_rounder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/score_rounder.rb b/app/services/score_rounder.rb index ea2220af2..ec1823d1d 100644 --- a/app/services/score_rounder.rb +++ b/app/services/score_rounder.rb @@ -82,7 +82,7 @@ def truncate_score(score) integer_part = parts[0] decimal_part = decimal_parts(parts[1]) - "#{integer_part}.#{decimal_part}" + "#{integer_part}.#{decimal_part}".to_f end def decimal_parts(part) From 173dda0f7c47b74f141c5e24360e1d9b88453c0b Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Wed, 8 Jun 2022 19:56:53 -0300 Subject: [PATCH 248/304] Muda chamada do worker --- lib/tasks/ieducar_api.rake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/tasks/ieducar_api.rake b/lib/tasks/ieducar_api.rake index 5775f7d9f..55ccff5f5 100644 --- a/lib/tasks/ieducar_api.rake +++ b/lib/tasks/ieducar_api.rake @@ -9,7 +9,11 @@ namespace :ieducar_api do full_synchronization = ActiveRecord::Type::Boolean.new.type_cast_from_user(args.full_synchronization) current_years = ActiveRecord::Type::Boolean.new.type_cast_from_user(args.current_years) - IeducarSynchronizerWorker.perform_async(nil, nil, full_synchronization, current_years) + Entity.enable_to_sync.each do |entity| + entity.using_connection do + IeducarSynchronizerWorker.perform_async(entity.id, nil, full_synchronization, current_years) + end + end end desc 'Cancela envio de notas travados há 1 dia ou mais' From 22318634a2ec6f3dae433f6a825eaea5f7848246 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Thu, 9 Jun 2022 16:24:12 -0300 Subject: [PATCH 249/304] =?UTF-8?q?Implementa=20campo=20de=20exporta=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20dias=20letivos=20das=20escolas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_exportations_controller.rb | 2 ++ app/enumerations/backup_types.rb | 2 +- app/views/data_exportations/index.html.erb | 25 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/controllers/data_exportations_controller.rb b/app/controllers/data_exportations_controller.rb index 488bdff42..5b2008795 100644 --- a/app/controllers/data_exportations_controller.rb +++ b/app/controllers/data_exportations_controller.rb @@ -2,6 +2,8 @@ class DataExportationsController < ApplicationController def index @last_full_system_backup = DataExportation.last_by_type(BackupTypes::FULL_SYSTEM_BACKUP) @last_school_calendar_backup = DataExportation.last_by_type(BackupTypes::SCHOOL_CALENDAR_BACKUP) + @last_unique_school_days_backup = DataExportation.last_by_type(BackupTypes::UNIQUE_SCHOOL_DAYS_BACKUP) + authorize DataExportation end diff --git a/app/enumerations/backup_types.rb b/app/enumerations/backup_types.rb index 339ea4623..55cfb613b 100644 --- a/app/enumerations/backup_types.rb +++ b/app/enumerations/backup_types.rb @@ -1,3 +1,3 @@ class BackupTypes < EnumerateIt::Base - associate_values :full_system_backup, :school_calendar_backup + associate_values :full_system_backup, :school_calendar_backup, :unique_school_days_backup end diff --git a/app/views/data_exportations/index.html.erb b/app/views/data_exportations/index.html.erb index f6f34800a..52e4c41a4 100644 --- a/app/views/data_exportations/index.html.erb +++ b/app/views/data_exportations/index.html.erb @@ -63,6 +63,31 @@ <% end %> + + Acompanhamento pedagógico + + Exporta dias letivos do acompanhamento pedagógico + + + <% if @last_unique_school_days_backup.completed? %> + <%= link_to @last_unique_school_days_backup.created_at, + @last_unique_school_days_backup.backup_file_url %> + <% elsif @last_unique_school_days_backup.error? %> + Erro: <%= @last_unique_school_days_backup.error_message %> + <% end %> + + + <% if @last_unique_school_days_backup.started? %> + <%= link_to '#', class: 'btn bg-color-red txt-color-white' do %> + + Exportando... + <% end %> + <% else %> + <%= f.submit 'Exportar', name: "backup_type[unique_school_days_backup]", + class: 'btn bg-color-red txt-color-white' %> + <% end %> + + <% end %> From 2b0ddb6ded51b4d430926eb48942a0d324b2a437 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Thu, 9 Jun 2022 16:25:25 -0300 Subject: [PATCH 250/304] Cria CSV com os dados de nome da escola e dia letivo --- app/services/backup_file.rb | 40 ++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index f91f01252..8654b13d2 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -55,14 +55,19 @@ class BackupFile 'BackupFile::TransferNotes', 'BackupFile::Unities', 'BackupFile::UnityEquipments', + 'BackupFile::UniqueSchoolDays', 'BackupFile::UserRoles', 'BackupFile::Users' ] def self.process_by_type!(type) - return new.process_full_backup! if type == BackupTypes::FULL_SYSTEM_BACKUP - - new.process_school_calendar_backup! + if type == BackupTypes::FULL_SYSTEM_BACKUP + new.process_full_backup! + elsif type == BackupTypes::SCHOOL_CALENDAR_BACKUP + new.process_school_calendar_backup! + else + new.process_unique_school_days_backup! + end end def process_full_backup! @@ -137,6 +142,26 @@ def process_school_calendar_backup! tempfile end + def process_unique_school_days_backup! + csv = CSV.generate_line( + %w[ + Escola + Dias + ] + ) + + unique_daily_frequency_items.each do |school_day| + csv << CSV.generate_line([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) + end + + Zip::OutputStream.open(tempfile.path) do |zip| + zip.put_next_entry 'unity_school_day.csv' + zip.print csv + end + + tempfile + end + protected def tempfile @@ -155,4 +180,13 @@ def school_calendar_items connection = ActiveRecord::Base.connection connection.select_rows(SchoolCalendarQuery.school_calendars_with_data_count) end + + def unique_daily_frequency_items + year = DateTime.now.year + unities_ids = Unity.all.pluck(:id) + + UnitySchoolDay.includes(:unity) + .where(unity_id: unities_ids) + .where('extract(year from school_day) = ?', year) + end end From 9b81bd05f32c21e0c04bff25560bd0e4d24e4653 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Thu, 9 Jun 2022 16:58:12 -0300 Subject: [PATCH 251/304] Ajusta frase exibida no campo conforme solicitado na issue --- app/views/data_exportations/index.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/data_exportations/index.html.erb b/app/views/data_exportations/index.html.erb index 52e4c41a4..b7f3ff6e2 100644 --- a/app/views/data_exportations/index.html.erb +++ b/app/views/data_exportations/index.html.erb @@ -66,7 +66,7 @@ Acompanhamento pedagógico - Exporta dias letivos do acompanhamento pedagógico + Exporta todos os dias que estão sendo contabilizados no acompanhamento pedagógico <% if @last_unique_school_days_backup.completed? %> From c88ced0b96ee43d6c0c262746acf1407b5ccac9d Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 11:21:32 -0300 Subject: [PATCH 252/304] Adiciona order para ordenar dados que populam o CSV --- app/services/backup_file.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index 8654b13d2..f3968c9a9 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -150,7 +150,11 @@ def process_unique_school_days_backup! ] ) + unique_daily_frequency_items.each do |school_day| + if school_day.unity.id != school_day.unity.id + csv << CSV.generate_row([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) + end csv << CSV.generate_line([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) end @@ -188,5 +192,6 @@ def unique_daily_frequency_items UnitySchoolDay.includes(:unity) .where(unity_id: unities_ids) .where('extract(year from school_day) = ?', year) + .order_by('unity_id asc') end end From cbd3d6b0c2c8af6510e3225cb4918f4f688875d4 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 10 Jun 2022 11:24:49 -0300 Subject: [PATCH 253/304] Faz compact no array antes de fazer o map --- app/services/student_enrollments_list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index 04d2389ec..11fcc26ed 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -159,7 +159,7 @@ def opinion_type_by_year? end def order_by_sequence_and_name(students_enrollments) - ids = students_enrollments.map(&:id) + ids = students_enrollments.compact.map(&:id) enrollments = StudentEnrollment.where(id: ids) .by_classroom(@classroom) From 394cf8a3624961e12f71507b3fc719ec4d14173d Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 11:30:37 -0300 Subject: [PATCH 254/304] =?UTF-8?q?Corrige=20ordena=C3=A7=C3=A3o=20para=20?= =?UTF-8?q?escola=20e=20dia=20letivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index f3968c9a9..abf95d696 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -192,6 +192,6 @@ def unique_daily_frequency_items UnitySchoolDay.includes(:unity) .where(unity_id: unities_ids) .where('extract(year from school_day) = ?', year) - .order_by('unity_id asc') + .order(unity_id: :asc, school_day: :asc) end end From 5e5f27e5530ed2de5d0b120d53b2a5b5ec06b15e Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 11:38:27 -0300 Subject: [PATCH 255/304] =?UTF-8?q?Remove=20valida=C3=A7=C3=A3o=20criada?= =?UTF-8?q?=20pra=20teste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index abf95d696..a5366ea4e 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -152,10 +152,7 @@ def process_unique_school_days_backup! unique_daily_frequency_items.each do |school_day| - if school_day.unity.id != school_day.unity.id csv << CSV.generate_row([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) - end - csv << CSV.generate_line([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) end Zip::OutputStream.open(tempfile.path) do |zip| From 28d153ccc491c8afd900964112ea49daee3814ec Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 15:32:26 -0300 Subject: [PATCH 256/304] =?UTF-8?q?Ajusta=20formata=C3=A7=C3=A3o=20de=20da?= =?UTF-8?q?ta=20ao=20editar=20eventos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/school_calendar_event_batches/_fields.html.erb | 4 ++-- app/views/school_calendar_events/_school_fields.html.erb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/school_calendar_event_batches/_fields.html.erb b/app/views/school_calendar_event_batches/_fields.html.erb index 63e432a0a..208f0212a 100644 --- a/app/views/school_calendar_event_batches/_fields.html.erb +++ b/app/views/school_calendar_event_batches/_fields.html.erb @@ -3,10 +3,10 @@ <%= f.input :year, as: :select2, elements: school_calendar_years %>
- <%= f.input :start_date, as: :date %> + <%= f.input :start_date.strftime("%d/%m/%Y") %>
- <%= f.input :end_date, as: :date%> + <%= f.input :end_date.strftime("%d/%m/%Y") %>
<%= f.input :description %> diff --git a/app/views/school_calendar_events/_school_fields.html.erb b/app/views/school_calendar_events/_school_fields.html.erb index 904d5e941..d55187ad9 100644 --- a/app/views/school_calendar_events/_school_fields.html.erb +++ b/app/views/school_calendar_events/_school_fields.html.erb @@ -1,10 +1,10 @@
- <%= f.input :start_date, as: :date %> + <%= f.input :start_date.strftime("%d/%m/%Y") %>
- <%= f.input :end_date, as: :date%> + <%= f.input :end_date.strftime("%d/%m/%Y")%>
<%= f.input :description %> From 99b7a14bfefd644e1dbaf75a2be8de2c2dce208c Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 15:32:38 -0300 Subject: [PATCH 257/304] Passa periodo como parametro ao criar evento em lote --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index 19cb2ae85..cd0a12c0b 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -18,6 +18,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) event.start_date = school_calendar_event_batch.start_date event.end_date = school_calendar_event_batch.end_date event.event_type = school_calendar_event_batch.event_type + event.periods = school_calendar_event_batch.periods event.legend = school_calendar_event_batch.legend event.show_in_frequency_record = school_calendar_event_batch.show_in_frequency_record event.save! if event.changed? From c4e2ec49c8a3b7b4da1972e1c9426190e68a533d Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Fri, 10 Jun 2022 15:56:58 -0300 Subject: [PATCH 258/304] Cria metodo para buscar status baseado na disciplina do perfil --- app/models/conceptual_exam.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 72aabd008..e8464665f 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -112,6 +112,20 @@ def status ConceptualExamStatus::COMPLETE end + def status_by_discipline(discipline_id) + conceptual_exam_value = ConceptualExamValue.find_by( + conceptual_exam_id: id, + exempted_discipline: false, + discipline_id: discipline_id + ) + + if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? + return ConceptualExamStatus::INCOMPLETE + end + + ConceptualExamStatus::COMPLETE + end + def valid_for_destruction? @valid_for_destruction if defined?(@valid_for_destruction) @valid_for_destruction = begin From 851202234983beea51a9679cf8d3607778da8275 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Fri, 10 Jun 2022 15:57:18 -0300 Subject: [PATCH 259/304] Utiliza metodo na view --- app/views/conceptual_exams/_resources.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index b73d8e692..f50f8e121 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ <%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= conceptual_exam.status_humanize %> + + <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> From 3822283120663b4249f161fb7738d63524768acc Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Fri, 10 Jun 2022 16:14:15 -0300 Subject: [PATCH 260/304] =?UTF-8?q?Corrige=20m=C3=A9todo=20do=20CSV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index a5366ea4e..a4a73be53 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -152,7 +152,7 @@ def process_unique_school_days_backup! unique_daily_frequency_items.each do |school_day| - csv << CSV.generate_row([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) + csv << CSV.generate_line([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) end Zip::OutputStream.open(tempfile.path) do |zip| From 202d5a6636774925eff35bd8e9d67acb517d9848 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Fri, 10 Jun 2022 16:30:08 -0300 Subject: [PATCH 261/304] Valida tipo de frequencia para trazer status por mais de uma disciplina caso utilize lancamento geral --- app/models/conceptual_exam.rb | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index e8464665f..247bd4da0 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -112,18 +112,35 @@ def status ConceptualExamStatus::COMPLETE end - def status_by_discipline(discipline_id) - conceptual_exam_value = ConceptualExamValue.find_by( - conceptual_exam_id: id, - exempted_discipline: false, - discipline_id: discipline_id - ) + def frequency_type + teacher = Teacher.find(teacher_id) + frequency_type_definer = FrequencyTypeDefiner.new(classroom, teacher, year: classroom.year) + + frequency_type_definer.define! - if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? - return ConceptualExamStatus::INCOMPLETE + if frequency_type_definer.frequency_type == FrequencyTypes::BY_DISCIPLINE + FrequencyTypes::BY_DISCIPLINE + else + FrequencyTypes::GENERAL end + end - ConceptualExamStatus::COMPLETE + def status_by_discipline(discipline_id) + if frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) + conceptual_exam_value = ConceptualExamValue.find_by( + conceptual_exam_id: id, + exempted_discipline: false, + discipline_id: discipline_id + ) + + if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? + return ConceptualExamStatus::INCOMPLETE + end + + ConceptualExamStatus::COMPLETE + else + status + end end def valid_for_destruction? From 211aa10b82fc57332612d751422c37f2c21e7b61 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 10 Jun 2022 18:53:33 -0300 Subject: [PATCH 262/304] =?UTF-8?q?Prepara=20controller=20para=20filtrar?= =?UTF-8?q?=20apenas=20enturma=C3=A7=C3=B5es=20que=20esteja,=20transferida?= =?UTF-8?q?s=20ou=20reclassificadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/students_controller.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index d10cacaf3..2e979c888 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -8,6 +8,7 @@ def index start_date = params[:start_date] end_date = params[:end_date] step_id = params[:step_id] || params[:school_calendar_classroom_step_id] || params[:school_calendar_step_id] + transferred = params[:transferred] || false if step_id.present? step = steps_fetcher.steps.find(step_id) @@ -28,6 +29,13 @@ def index score_type: params[:score_type] ).student_enrollments + if transferred + student_enrollments = student_enrollments.select do |student_enrollment| + student_enrollment.status.eql?(StudentEnrollmentStatus::TRANSFERRED) || + student_enrollment.status.eql?(StudentEnrollmentStatus::RECLASSIFIED) + end + end + students = student_enrollments.map(&:student) render json: students From 5605240d45952cbfc0d29706b634c6d1946f2161 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 10 Jun 2022 18:54:00 -0300 Subject: [PATCH 263/304] =?UTF-8?q?Passa=20par=C3=A2metro=20para=20o=20bac?= =?UTF-8?q?kend=20buscar=20apenas=20enturma=C3=A7=C3=B5es=20transferidas?= =?UTF-8?q?=20ou=20reclassificadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/assets/javascripts/views/transfer_notes/form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/views/transfer_notes/form.js b/app/assets/javascripts/views/transfer_notes/form.js index 3e4ddf141..f74bf7e9f 100644 --- a/app/assets/javascripts/views/transfer_notes/form.js +++ b/app/assets/javascripts/views/transfer_notes/form.js @@ -25,7 +25,8 @@ $(function () { date: recorded_at, score_type: 'numeric', discipline_id: $discipline.select2('val'), - step_id: step_id + step_id: step_id, + transferred: true }, success: handleFetchStudentsSuccess, error: handleFetchStudentsError From 6cb791525e5168e4bbe285632805f4b0811de2d0 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 10 Jun 2022 19:06:50 -0300 Subject: [PATCH 264/304] =?UTF-8?q?Cria=20m=C3=A9todo=20que=20recebe=20ent?= =?UTF-8?q?urma=C3=A7=C3=B5es=20e=20devolve=20apenas=20alunos=20elegiveis?= =?UTF-8?q?=20para=20receber=20notas=20de=20transfer=C3=AAncia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/students_controller.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 2e979c888..8b1a8dea9 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -30,10 +30,7 @@ def index ).student_enrollments if transferred - student_enrollments = student_enrollments.select do |student_enrollment| - student_enrollment.status.eql?(StudentEnrollmentStatus::TRANSFERRED) || - student_enrollment.status.eql?(StudentEnrollmentStatus::RECLASSIFIED) - end + student_enrollments = transfer_notes_students(student_enrollments) end students = student_enrollments.map(&:student) @@ -138,4 +135,11 @@ def classroom def discipline @discipline ||= Discipline.find(params[:discipline_id]) end + + def transfer_notes_students(student_enrollments) + student_enrollments.select do |student_enrollment| + student_enrollment.status.eql?(StudentEnrollmentStatus::TRANSFERRED) || + student_enrollment.status.eql?(StudentEnrollmentStatus::RECLASSIFIED) + end + end end From 97a2e093c803f2b4106e19667dd89aeb398d1d8c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 10 Jun 2022 19:08:18 -0300 Subject: [PATCH 265/304] Usa if inline --- app/controllers/students_controller.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 8b1a8dea9..81f1994b8 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -29,9 +29,7 @@ def index score_type: params[:score_type] ).student_enrollments - if transferred - student_enrollments = transfer_notes_students(student_enrollments) - end + student_enrollments = transfer_notes_students(student_enrollments) if transferred students = student_enrollments.map(&:student) From aad5a5942f0a7341f14330c5470327ccc91b6349 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 13 Jun 2022 10:38:10 -0300 Subject: [PATCH 266/304] =?UTF-8?q?Revert=20formata=C3=A7=C3=A3o=20de=20da?= =?UTF-8?q?ta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/school_calendar_events/_school_fields.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/school_calendar_events/_school_fields.html.erb b/app/views/school_calendar_events/_school_fields.html.erb index d55187ad9..904d5e941 100644 --- a/app/views/school_calendar_events/_school_fields.html.erb +++ b/app/views/school_calendar_events/_school_fields.html.erb @@ -1,10 +1,10 @@
- <%= f.input :start_date.strftime("%d/%m/%Y") %> + <%= f.input :start_date, as: :date %>
- <%= f.input :end_date.strftime("%d/%m/%Y")%> + <%= f.input :end_date, as: :date%>
<%= f.input :description %> From 19bc670a6a07d574f5196a4b597f28007f89fbc3 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 13 Jun 2022 12:13:29 -0300 Subject: [PATCH 267/304] Padroniza comparacoes da condicional --- app/models/conceptual_exam.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 247bd4da0..83d11b56c 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -118,7 +118,7 @@ def frequency_type frequency_type_definer.define! - if frequency_type_definer.frequency_type == FrequencyTypes::BY_DISCIPLINE + if frequency_type_definer.frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) FrequencyTypes::BY_DISCIPLINE else FrequencyTypes::GENERAL From 8946ceee0d12543d5e73795e5bac0c0006514bdf Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 13 Jun 2022 14:27:06 -0300 Subject: [PATCH 268/304] =?UTF-8?q?Cria=20helper=20para=20ajustar=20format?= =?UTF-8?q?a=C3=A7=C3=A3o=20de=20datas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/school_calendar_event_batch_helper.rb | 5 +++++ app/views/school_calendar_event_batches/_fields.html.erb | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 app/helpers/school_calendar_event_batch_helper.rb diff --git a/app/helpers/school_calendar_event_batch_helper.rb b/app/helpers/school_calendar_event_batch_helper.rb new file mode 100644 index 000000000..91d01f194 --- /dev/null +++ b/app/helpers/school_calendar_event_batch_helper.rb @@ -0,0 +1,5 @@ +module SchoolCalendarEventBatchHelper + def formatted_date(object, date) + object.new_record? ? nil : l(date) + end +end diff --git a/app/views/school_calendar_event_batches/_fields.html.erb b/app/views/school_calendar_event_batches/_fields.html.erb index 208f0212a..73ae9deef 100644 --- a/app/views/school_calendar_event_batches/_fields.html.erb +++ b/app/views/school_calendar_event_batches/_fields.html.erb @@ -3,10 +3,10 @@ <%= f.input :year, as: :select2, elements: school_calendar_years %>
- <%= f.input :start_date.strftime("%d/%m/%Y") %> + <%= f.input :start_date, as: :date, input_html: { value: formatted_date(f.object, f.object.start_date) } %>
- <%= f.input :end_date.strftime("%d/%m/%Y") %> + <%= f.input :end_date, as: :date, input_html: { value: formatted_date(f.object, f.object.end_date) } %>
<%= f.input :description %> From 427611e59835e66eccb026bdfa6e47f4b3e932c5 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Mon, 13 Jun 2022 14:45:16 -0300 Subject: [PATCH 269/304] Ajusta para reescrever array de period de acordo com evento em lote --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index cd0a12c0b..ed0f0d773 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -18,7 +18,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) event.start_date = school_calendar_event_batch.start_date event.end_date = school_calendar_event_batch.end_date event.event_type = school_calendar_event_batch.event_type - event.periods = school_calendar_event_batch.periods + event.periods = event.periods - event.periods + school_calendar_event_batch.periods event.legend = school_calendar_event_batch.legend event.show_in_frequency_record = school_calendar_event_batch.show_in_frequency_record event.save! if event.changed? From 24543f0c4fb09e9aebe96b55f1c004a5c2f5bbb2 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Mon, 13 Jun 2022 15:50:00 -0300 Subject: [PATCH 270/304] Adiciona indice de daily_frequency_id em DailyFrequencyStudent --- .../20220613181019_add_index_on_daily_frequency_student.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 db/migrate/20220613181019_add_index_on_daily_frequency_student.rb diff --git a/db/migrate/20220613181019_add_index_on_daily_frequency_student.rb b/db/migrate/20220613181019_add_index_on_daily_frequency_student.rb new file mode 100644 index 000000000..2fa21308f --- /dev/null +++ b/db/migrate/20220613181019_add_index_on_daily_frequency_student.rb @@ -0,0 +1,5 @@ +class AddIndexOnDailyFrequencyStudent < ActiveRecord::Migration + def change + add_index :daily_frequency_students, :daily_frequency_id + end +end From f9b2f4c1ae9672351f6b67007f47419bb6dc0f24 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Tue, 14 Jun 2022 09:51:53 -0300 Subject: [PATCH 271/304] Cria botao para filtrar as datas inseridas pelo usuario --- .../pedagogical_trackings/index.html.erb | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/app/views/pedagogical_trackings/index.html.erb b/app/views/pedagogical_trackings/index.html.erb index 8c5297893..56229ac87 100644 --- a/app/views/pedagogical_trackings/index.html.erb +++ b/app/views/pedagogical_trackings/index.html.erb @@ -4,27 +4,30 @@
<%= image_tag "beta.png", class: 'hidden', id: 'image-beta' %> <%= simple_form_for :search, { url: pedagogical_trackings_path, method: :get, html: { class: 'filter_tracking_search_form' } } do |f| %> -
- <%= f.input :unity_id, as: :select2, elements: employee_unities || all_unities, label: false, placeholder: t('.filter_unities') %> -
-
- <%= f.input :start_date, as: :date, label: false, placeholder: t('.from') %> -
-
- <%= f.input :end_date, as: :date, label: false, placeholder: t('.to')%> -
-
- - <%= @updated_at ? "#{t('.last_update') }: #{ @updated_at } às #{ @updated_at_hour }h" : t('.empty') %> -
+
+ <%= f.input :unity_id, as: :select2, elements: employee_unities || all_unities, label: false, placeholder: t('.filter_unities') %> +
+
+ <%= f.input :start_date, as: :date, label: false, placeholder: t('.from') %> +
+
+ <%= f.input :end_date, as: :date, label: false, placeholder: t('.to')%> +
+
+ <%= f.submit(t('.filter_days'), class: 'btn btn-info') %> +
+
+ + <%= @updated_at ? "#{t('.last_update') }: #{ @updated_at } às #{ @updated_at_hour }h" : t('.empty') %> +
<% end %>
-
- <%= link_to(t('.recalculate_school_days'), recalculate_pedagogical_trackings_path, - id: 'recalculate', - class: 'btn bg-color-blue txt-color-white pull-right', - style: 'margin-top: 10px; margin-left: 10px;') %> -
+
+ <%= link_to(t('.recalculate_school_days'), recalculate_pedagogical_trackings_path, + id: 'recalculate', + class: 'btn bg-color-blue txt-color-white pull-right', + style: 'margin-top: 10px; margin-left: 10px;') %> +
<%= hidden_field_tag 'done_frequencies_percentage', @school_frequency_done_percentage %> <%= hidden_field_tag 'done_content_records_percentage', @school_content_record_done_percentage %> From c8f937da84c230109bb327d817079b42c62eb11a Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Tue, 14 Jun 2022 09:55:02 -0300 Subject: [PATCH 272/304] Cria traducao para novo botao --- config/locales/controllers/pedagogical_tracking.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/controllers/pedagogical_tracking.yml b/config/locales/controllers/pedagogical_tracking.yml index 9543548ee..09fa8899e 100644 --- a/config/locales/controllers/pedagogical_tracking.yml +++ b/config/locales/controllers/pedagogical_tracking.yml @@ -11,5 +11,6 @@ pt-BR: empty: 'Não existem lançamentos ainda nas escolas' last_update: 'Última atualização' recalculate_school_days: 'Recalcular dias letivos' + filter_days: 'Filtrar' minimum_year: error: 'Funcionalidade apenas disponível para o ano 2020 ou superior.' From a1290ae4ee47f8af6697f667b6fcfe0aedf24717 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 14 Jun 2022 12:05:44 -0300 Subject: [PATCH 273/304] =?UTF-8?q?Ajusta=20para=20cria=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20evento=20n=C3=A3o=20dar=20erro=20ao=20fazer=20nil=20-=20nil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index ed0f0d773..8fe06d280 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -18,7 +18,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) event.start_date = school_calendar_event_batch.start_date event.end_date = school_calendar_event_batch.end_date event.event_type = school_calendar_event_batch.event_type - event.periods = event.periods - event.periods + school_calendar_event_batch.periods + event.periods = event.periods.to_a - event.periods.to_a + school_calendar_event_batch.periods event.legend = school_calendar_event_batch.legend event.show_in_frequency_record = school_calendar_event_batch.show_in_frequency_record event.save! if event.changed? From 241ead3ce5ba8e9cc1b759f3ad5c65a37e01376a Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Tue, 14 Jun 2022 13:41:58 -0300 Subject: [PATCH 274/304] =?UTF-8?q?Remove=20l=C3=B3gica=20desnecess=C3=A1r?= =?UTF-8?q?ia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../school_calendar_event_batch_manager/event_creator_worker.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb index 8fe06d280..cd0a12c0b 100644 --- a/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb +++ b/app/workers/school_calendar_event_batch_manager/event_creator_worker.rb @@ -18,7 +18,7 @@ def perform(entity_id, school_calendar_event_batch_id, user_id) event.start_date = school_calendar_event_batch.start_date event.end_date = school_calendar_event_batch.end_date event.event_type = school_calendar_event_batch.event_type - event.periods = event.periods.to_a - event.periods.to_a + school_calendar_event_batch.periods + event.periods = school_calendar_event_batch.periods event.legend = school_calendar_event_batch.legend event.show_in_frequency_record = school_calendar_event_batch.show_in_frequency_record event.save! if event.changed? From 20e71a72a5af2046fc09c6e87f09c859cf7899e8 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 15 Jun 2022 10:01:54 -0300 Subject: [PATCH 275/304] =?UTF-8?q?Remove=20classe=20CSS=20n=C3=A3o=20exis?= =?UTF-8?q?tente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/pedagogical_trackings/index.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/pedagogical_trackings/index.html.erb b/app/views/pedagogical_trackings/index.html.erb index 56229ac87..24be2e6a0 100644 --- a/app/views/pedagogical_trackings/index.html.erb +++ b/app/views/pedagogical_trackings/index.html.erb @@ -7,10 +7,10 @@
<%= f.input :unity_id, as: :select2, elements: employee_unities || all_unities, label: false, placeholder: t('.filter_unities') %>
-
+
<%= f.input :start_date, as: :date, label: false, placeholder: t('.from') %>
-
+
<%= f.input :end_date, as: :date, label: false, placeholder: t('.to')%>
From c59a14648db21cbd9d1c5aa4a2e70baa08c40763 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 15 Jun 2022 18:08:52 -0300 Subject: [PATCH 276/304] Passa teacher_id por parametro para fazer validacao --- app/models/conceptual_exam.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 83d11b56c..99b1b0039 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -94,7 +94,7 @@ def self.by_status(classroom_id, teacher_id, status) end end - def status + def status(teacher_id) discipline_ids = TeacherDisciplineClassroom.where(classroom_id: classroom_id, teacher_id: teacher_id) .pluck(:discipline_id) values = ConceptualExamValue.where( @@ -125,7 +125,7 @@ def frequency_type end end - def status_by_discipline(discipline_id) + def status_by_discipline(discipline_id, teacher_id) if frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) conceptual_exam_value = ConceptualExamValue.find_by( conceptual_exam_id: id, @@ -139,7 +139,7 @@ def status_by_discipline(discipline_id) ConceptualExamStatus::COMPLETE else - status + status(teacher_id) end end From c587168e8b484f52bebe79e6542c066e23400591 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 15 Jun 2022 18:08:59 -0300 Subject: [PATCH 277/304] Passa teacher_id por parametro para fazer validacao --- app/views/conceptual_exams/_resources.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index f50f8e121..9c68b87df 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ <%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> + + <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id, current_teacher_id)) %> From c611f53ff0a47df13246e9ef1878683caece0846 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 17 Jun 2022 10:42:38 -0300 Subject: [PATCH 278/304] =?UTF-8?q?Ajusta=20l=C3=B3gica=20que=20busca=20al?= =?UTF-8?q?unos=20tranferidos=20ou=20remanejados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/students_controller.rb | 11 +---------- app/services/student_enrollments_list.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 81f1994b8..114cfdaf8 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -27,9 +27,7 @@ def index start_at: start_date, end_at: end_date, score_type: params[:score_type] - ).student_enrollments - - student_enrollments = transfer_notes_students(student_enrollments) if transferred + ).students_transfer_notes students = student_enrollments.map(&:student) @@ -133,11 +131,4 @@ def classroom def discipline @discipline ||= Discipline.find(params[:discipline_id]) end - - def transfer_notes_students(student_enrollments) - student_enrollments.select do |student_enrollment| - student_enrollment.status.eql?(StudentEnrollmentStatus::TRANSFERRED) || - student_enrollment.status.eql?(StudentEnrollmentStatus::RECLASSIFIED) - end - end end diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index 11fcc26ed..389f8dce5 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -37,6 +37,10 @@ def student_enrollments fetch_student_enrollments end + def students_transfer_notes + fetch_transfer_notes_students + end + private attr_accessor :classroom, :discipline, :year, :date, :start_at, :end_at, :search_type, :show_inactive, @@ -181,4 +185,16 @@ def order_by_sequence_and_name(students_enrollments) .to_a .uniq end + + def fetch_transfer_notes_students + student_ids = fetch_student_enrollments.map(&:student_id) + + StudentEnrollment + .by_date(@date) + .where( + student_id: student_ids, + status: (StudentEnrollmentStatus::TRANSFERRED || StudentEnrollmentStatus::RECLASSIFIED) + ) + .uniq + end end From f0a505c901bd1581fadd611507718999b670e55e Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 17 Jun 2022 10:56:06 -0300 Subject: [PATCH 279/304] Ajusta chamada --- app/controllers/students_controller.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 114cfdaf8..08b3b2da4 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -18,7 +18,7 @@ def index include_date_range = start_date.present? && end_date.present? - student_enrollments = StudentEnrollmentsList.new( + student_enrollment_list = StudentEnrollmentsList.new( classroom: params[:classroom_id], discipline: params[:discipline_id], date: date, @@ -27,7 +27,13 @@ def index start_at: start_date, end_at: end_date, score_type: params[:score_type] - ).students_transfer_notes + ) + + if transferred + student_enrollments = student_enrollment_list.students_transfer_notes + else + student_enrollments = student_enrollment_list.student_enrollments + end students = student_enrollments.map(&:student) From f99ef0e5311d0c6eb183a94cb078832b5d0d4f98 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 17 Jun 2022 11:43:56 -0300 Subject: [PATCH 280/304] Ajusta para utilizar range de datas da etapa --- app/services/student_enrollments_list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index 389f8dce5..e8eaddec0 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -190,7 +190,7 @@ def fetch_transfer_notes_students student_ids = fetch_student_enrollments.map(&:student_id) StudentEnrollment - .by_date(@date) + .by_date_range(start_at, end_at) .where( student_id: student_ids, status: (StudentEnrollmentStatus::TRANSFERRED || StudentEnrollmentStatus::RECLASSIFIED) From 805ef4ae16664a140412970533d499ea4637eb28 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 20 Jun 2022 11:00:45 -0300 Subject: [PATCH 281/304] Remove parametro --- app/models/conceptual_exam.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 99b1b0039..83d11b56c 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -94,7 +94,7 @@ def self.by_status(classroom_id, teacher_id, status) end end - def status(teacher_id) + def status discipline_ids = TeacherDisciplineClassroom.where(classroom_id: classroom_id, teacher_id: teacher_id) .pluck(:discipline_id) values = ConceptualExamValue.where( @@ -125,7 +125,7 @@ def frequency_type end end - def status_by_discipline(discipline_id, teacher_id) + def status_by_discipline(discipline_id) if frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) conceptual_exam_value = ConceptualExamValue.find_by( conceptual_exam_id: id, @@ -139,7 +139,7 @@ def status_by_discipline(discipline_id, teacher_id) ConceptualExamStatus::COMPLETE else - status(teacher_id) + status end end From 1f894b4e0d28636f0501a48f4db507ac6cee56a5 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 20 Jun 2022 11:00:55 -0300 Subject: [PATCH 282/304] Remove parametro --- app/views/conceptual_exams/_resources.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index 9c68b87df..54eb6f51a 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ <%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id, current_teacher_id)) %> + + <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> From f1b6eb69fcc4ca978e56a08c20f8596cb262775e Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 22 Jun 2022 09:31:51 -0300 Subject: [PATCH 283/304] =?UTF-8?q?Cria=20instancia=20e=20trata=20as=20dis?= =?UTF-8?q?ciplinas=20que=20n=C3=A3o=20est=C3=A3o=20dispensadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/conceptual_exam_helper.rb | 38 ++++++++++++++++----------- app/models/conceptual_exam.rb | 10 ++++--- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/app/helpers/conceptual_exam_helper.rb b/app/helpers/conceptual_exam_helper.rb index c24c7c8d8..684c2ff84 100644 --- a/app/helpers/conceptual_exam_helper.rb +++ b/app/helpers/conceptual_exam_helper.rb @@ -15,21 +15,27 @@ def any_student_exempted_from_discipline? end def ordered_conceptual_exam_values - @conceptual_exam.conceptual_exam_values - .sort_by { |conceptual_exam_value| - [ - conceptual_exam_value.discipline.sequence.to_i, - conceptual_exam_value.discipline.description - ] - } - .group_by { |conceptual_exam_value| - conceptual_exam_value.discipline.knowledge_area - } - .sort_by { |knowledge_area, conceptual_exam_values| - [ - knowledge_area.sequence.to_i, - knowledge_area.description - ] - } + exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids( + @conceptual_exam.classroom.id, + @conceptual_exam.step_number + ) + + conceptual_exam_values = @conceptual_exam.conceptual_exam_values.where.not(discipline_id: exempted_discipline_ids) + + conceptual_exam_values.sort_by { |conceptual_exam_value| + [ + conceptual_exam_value.discipline.sequence.to_i, + conceptual_exam_value.discipline.description + ] + } + .group_by { |conceptual_exam_value| + conceptual_exam_value.discipline.knowledge_area + } + .sort_by { |knowledge_area, conceptual_exam_values| + [ + knowledge_area.sequence.to_i, + knowledge_area.description + ] + } end end diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 83d11b56c..e13a51aa8 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -95,13 +95,15 @@ def self.by_status(classroom_id, teacher_id, status) end def status - discipline_ids = TeacherDisciplineClassroom.where(classroom_id: classroom_id, teacher_id: teacher_id) - .pluck(:discipline_id) + exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids( + classroom.id, + step_number + ) + values = ConceptualExamValue.where( conceptual_exam_id: id, exempted_discipline: false, - discipline_id: discipline_ids - ) + ).where.not(discipline_id: exempted_discipline_ids) return ConceptualExamStatus::INCOMPLETE if values.blank? From 67ffe8bfb68a4457238982e3cf5e799cc093747e Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 22 Jun 2022 11:11:16 -0300 Subject: [PATCH 284/304] =?UTF-8?q?Ajusta=20l=C3=B3gica=20de=20exporta?= =?UTF-8?q?=C3=A7=C3=A3o=20dos=20dias=20letivos=20para=20separar=20arquivo?= =?UTF-8?q?s=20por=20escola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index a4a73be53..1bbdbd560 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -55,7 +55,6 @@ class BackupFile 'BackupFile::TransferNotes', 'BackupFile::Unities', 'BackupFile::UnityEquipments', - 'BackupFile::UniqueSchoolDays', 'BackupFile::UserRoles', 'BackupFile::Users' ] @@ -143,21 +142,23 @@ def process_school_calendar_backup! end def process_unique_school_days_backup! - csv = CSV.generate_line( - %w[ - Escola - Dias - ] - ) + unities_ids = unique_daily_frequency_items.pluck(:unity_id).uniq + + Zip::OutputStream.open(tempfile.path) do |zip| + unities_ids.each do |unity| + unity_data = {} + csv = [] + unique_daily_frequency_items.where(unity_id: unity).each do |school_day| + unity_name = school_day.unity.name + csv << CSV.generate_line([ unity_name, school_day.school_day.strftime('%d/%m/%Y') ]) - unique_daily_frequency_items.each do |school_day| - csv << CSV.generate_line([ school_day.unity.name, school_day.school_day.strftime('%d/%m/%Y') ]) - end + unity_data[unity] = { data: csv, unity_name: unity_name} + end - Zip::OutputStream.open(tempfile.path) do |zip| - zip.put_next_entry 'unity_school_day.csv' - zip.print csv + zip.put_next_entry unity_data[unity][:unity_name] + zip.print unity_data[unity][:data] + end end tempfile @@ -166,7 +167,7 @@ def process_unique_school_days_backup! protected def tempfile - @tempfile ||= Tempfile.new([filename, ".zip"]) + @tempfile ||= Tempfile.new([filename, '.zip']) end def filename From ba1b7613c04279367854738139540c01bd9077e8 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 22 Jun 2022 11:31:33 -0300 Subject: [PATCH 285/304] =?UTF-8?q?Adiciona=20extens=C3=A3o=20'.csv'=20aos?= =?UTF-8?q?=20arquivos=20de=20escola?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index 1bbdbd560..bc12345e2 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -153,11 +153,11 @@ def process_unique_school_days_backup! unity_name = school_day.unity.name csv << CSV.generate_line([ unity_name, school_day.school_day.strftime('%d/%m/%Y') ]) - unity_data[unity] = { data: csv, unity_name: unity_name} + unity_data[unity] = { unity_name: unity_name} end - zip.put_next_entry unity_data[unity][:unity_name] - zip.print unity_data[unity][:data] + zip.put_next_entry unity_data[unity][:unity_name]+'.csv' + zip.print csv end end From dd9479df091b16c558e7b0109835ba9802fa6a02 Mon Sep 17 00:00:00 2001 From: brunoocarvalhoo Date: Wed, 22 Jun 2022 12:18:40 -0300 Subject: [PATCH 286/304] =?UTF-8?q?Ajusta=20para=20atribuir=20csv=20no=20h?= =?UTF-8?q?ash=20e=20altera=20nome=20de=20itera=C3=A7=C3=A3o=20para=20melh?= =?UTF-8?q?or=20leitura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/backup_file.rb | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/services/backup_file.rb b/app/services/backup_file.rb index bc12345e2..64974dd01 100644 --- a/app/services/backup_file.rb +++ b/app/services/backup_file.rb @@ -143,21 +143,23 @@ def process_school_calendar_backup! def process_unique_school_days_backup! unities_ids = unique_daily_frequency_items.pluck(:unity_id).uniq + unity_data = {} - Zip::OutputStream.open(tempfile.path) do |zip| - unities_ids.each do |unity| - unity_data = {} - csv = [] + unities_ids.each do |unity_id| + csv = [] - unique_daily_frequency_items.where(unity_id: unity).each do |school_day| - unity_name = school_day.unity.name - csv << CSV.generate_line([ unity_name, school_day.school_day.strftime('%d/%m/%Y') ]) + unique_daily_frequency_items.where(unity_id: unity_id).each do |school_day| + unity_name = school_day.unity.name + csv << CSV.generate_line([unity_name, school_day.school_day.strftime('%d/%m/%Y')]) - unity_data[unity] = { unity_name: unity_name} - end + unity_data[unity_id] = { data: csv, unity_name: unity_name } + end + end - zip.put_next_entry unity_data[unity][:unity_name]+'.csv' - zip.print csv + Zip::OutputStream.open(tempfile.path) do |zip| + unities_ids.each do |unity_id| + zip.put_next_entry unity_data[unity_id][:unity_name] + '.csv' + zip.print unity_data[unity_id][:data] end end From 3d5ad1fdd38ec344ceea63823378e576aecfa025 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 23 Jun 2022 15:55:44 -0300 Subject: [PATCH 287/304] =?UTF-8?q?Ajusta=20identa=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/daily_frequencies_in_batchs_controller.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/daily_frequencies_in_batchs_controller.rb b/app/controllers/daily_frequencies_in_batchs_controller.rb index f938e5249..dc15385a6 100644 --- a/app/controllers/daily_frequencies_in_batchs_controller.rb +++ b/app/controllers/daily_frequencies_in_batchs_controller.rb @@ -45,6 +45,7 @@ def create_or_update_multiple daily_frequency_data[:discipline_id], daily_frequency_data[:period]) + daily_frequency_students_params[:students_attributes].each_value do |student_attributes| away = 0 daily_frequency_student = daily_frequency.build_or_find_by_student(student_attributes[:student_id]) @@ -54,8 +55,9 @@ def create_or_update_multiple daily_frequency_student.save! end + daily_frequency.save! - end + end end flash[:success] = t('.daily_frequency_success') From 7e996372a2b9b76c95039b2052341128674cd643 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 23 Jun 2022 17:58:19 -0300 Subject: [PATCH 288/304] =?UTF-8?q?Ajusta=20para=20enviar=20e-mail=20de=20?= =?UTF-8?q?confirma=C3=A7=C3=A3o=20de=20frequ=C3=AAncia=20na=20tela=20de?= =?UTF-8?q?=20freq=20em=20lote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daily_frequencies_in_batchs_controller.rb | 29 +++++++++++++++++-- app/forms/frequency_in_batch_form.rb | 3 +- .../create_or_update_multiple.html.erb | 5 +++- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/app/controllers/daily_frequencies_in_batchs_controller.rb b/app/controllers/daily_frequencies_in_batchs_controller.rb index dc15385a6..1afab1a36 100644 --- a/app/controllers/daily_frequencies_in_batchs_controller.rb +++ b/app/controllers/daily_frequencies_in_batchs_controller.rb @@ -32,6 +32,9 @@ def create_or_update_multiple daily_frequency_data = daily_frequency_attributes daily_frequency_data[:frequency_date] = daily_frequency_students_params[:date] daily_frequency_data[:class_number] = daily_frequency_students_params[:class_number] + receive_email_confirmation = ActiveRecord::Type::Boolean.new.type_cast_from_user( + daily_frequency_data[:frequency_in_batch_form][:receive_email_confirmation] + ) if daily_frequency_attributes[:frequency_type] == FrequencyTypes::GENERAL daily_frequency_data[:class_number] = nil @@ -56,7 +59,17 @@ def create_or_update_multiple daily_frequency_student.save! end - daily_frequency.save! + if daily_frequency.save! + if receive_email_confirmation + ReceiptMailer.delay.notify_daily_frequency_success( + current_user, + "#{request.base_url}#{create_or_update_multiple_daily_frequencies_in_batchs_path}", + daily_frequency.frequency_date.to_date.strftime('%d/%m/%Y'), + daily_frequency.classroom.description, + daily_frequency.unity.name + ) + end + end end end flash[:success] = t('.daily_frequency_success') @@ -113,8 +126,9 @@ def view_data @period = teacher_period != Periods::FULL.to_i ? teacher_period : nil @general_configuration = GeneralConfiguration.current @frequency_type = current_frequency_type(@classroom) - params['dates'] = allocation_dates(@dates) + @frequency_form = FrequencyInBatchForm.new + @students = [] @@ -279,7 +293,16 @@ def build_hash(date, lesson_numbers) end def daily_frequency_in_batchs_params - params.permit(:unity_id, :classroom_id, :discipline_id, :frequency_type, :period) + params.permit( + :unity_id, + :classroom_id, + :discipline_id, + :frequency_type, + :period, + frequency_in_batch_form: [ + :receive_email_confirmation + ] + ) end def daily_frequencies_in_batch_params diff --git a/app/forms/frequency_in_batch_form.rb b/app/forms/frequency_in_batch_form.rb index b02b3380d..735da6db9 100644 --- a/app/forms/frequency_in_batch_form.rb +++ b/app/forms/frequency_in_batch_form.rb @@ -1,7 +1,7 @@ class FrequencyInBatchForm < ActiveRecord::Base has_no_table - attr_accessor :unity_id, :classroom_id, :period, :discipline_id, :start_date, :end_date + attr_accessor :unity_id, :classroom_id, :period, :discipline_id, :start_date, :end_date, :receive_email_confirmation validates_date :start_date, :end_date @@ -21,5 +21,4 @@ def frequency_date_must_be_less_than_or_equal_to_today errors.add(:end_date, :must_be_less_than_or_equal_to_today) end end - end diff --git a/app/views/daily_frequencies_in_batchs/create_or_update_multiple.html.erb b/app/views/daily_frequencies_in_batchs/create_or_update_multiple.html.erb index 92292837c..3f29593c1 100644 --- a/app/views/daily_frequencies_in_batchs/create_or_update_multiple.html.erb +++ b/app/views/daily_frequencies_in_batchs/create_or_update_multiple.html.erb @@ -32,7 +32,7 @@
- <%= simple_form_for :frequency_in_batch_form, url: create_or_update_multiple_daily_frequencies_in_batchs_path, method: :put, + <%= simple_form_for @frequency_form, url: create_or_update_multiple_daily_frequencies_in_batchs_path, method: :put, html: { class: 'smart-form daily_frequency' } do |f| %> @@ -136,6 +136,9 @@
<%= f.submit t('.save'), class: 'btn new-save-style', data: { disable_with: 'Salvando...' } %>
+
+ <%= f.input :receive_email_confirmation, as: :boolean, label: false, inline_label: t('activerecord.attributes.daily_frequency.receive_email_confirmation') %> +
<% end %> From 4cc0958bffeba0d6bff375af0ba52bab011914bf Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 23 Jun 2022 17:59:04 -0300 Subject: [PATCH 289/304] =?UTF-8?q?Ajusta=20tamb=C3=A9m=20para=20criar=20U?= =?UTF-8?q?niqueDailyFrequency?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/daily_frequencies_in_batchs_controller.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/controllers/daily_frequencies_in_batchs_controller.rb b/app/controllers/daily_frequencies_in_batchs_controller.rb index 1afab1a36..e7c1c13c0 100644 --- a/app/controllers/daily_frequencies_in_batchs_controller.rb +++ b/app/controllers/daily_frequencies_in_batchs_controller.rb @@ -60,6 +60,13 @@ def create_or_update_multiple end if daily_frequency.save! + UniqueDailyFrequencyStudentsCreator.call_worker( + current_entity.id, + daily_frequency.classroom_id, + daily_frequency.frequency_date, + current_teacher_id + ) + if receive_email_confirmation ReceiptMailer.delay.notify_daily_frequency_success( current_user, From ed31efcffa692c11781329e7c595824038811a7a Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Fri, 24 Jun 2022 14:41:23 -0300 Subject: [PATCH 290/304] Reverte codigo para teste --- app/helpers/conceptual_exam_helper.rb | 38 +++++++++++---------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/app/helpers/conceptual_exam_helper.rb b/app/helpers/conceptual_exam_helper.rb index 684c2ff84..c24c7c8d8 100644 --- a/app/helpers/conceptual_exam_helper.rb +++ b/app/helpers/conceptual_exam_helper.rb @@ -15,27 +15,21 @@ def any_student_exempted_from_discipline? end def ordered_conceptual_exam_values - exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids( - @conceptual_exam.classroom.id, - @conceptual_exam.step_number - ) - - conceptual_exam_values = @conceptual_exam.conceptual_exam_values.where.not(discipline_id: exempted_discipline_ids) - - conceptual_exam_values.sort_by { |conceptual_exam_value| - [ - conceptual_exam_value.discipline.sequence.to_i, - conceptual_exam_value.discipline.description - ] - } - .group_by { |conceptual_exam_value| - conceptual_exam_value.discipline.knowledge_area - } - .sort_by { |knowledge_area, conceptual_exam_values| - [ - knowledge_area.sequence.to_i, - knowledge_area.description - ] - } + @conceptual_exam.conceptual_exam_values + .sort_by { |conceptual_exam_value| + [ + conceptual_exam_value.discipline.sequence.to_i, + conceptual_exam_value.discipline.description + ] + } + .group_by { |conceptual_exam_value| + conceptual_exam_value.discipline.knowledge_area + } + .sort_by { |knowledge_area, conceptual_exam_values| + [ + knowledge_area.sequence.to_i, + knowledge_area.description + ] + } end end From df0b64d0d2640a6e6698d12a3dd778bbac3f6fcd Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 29 Jun 2022 12:24:02 -0300 Subject: [PATCH 291/304] Insere disciplina_id na query para validar o status --- app/models/conceptual_exam.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index e13a51aa8..340b0be48 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -95,6 +95,9 @@ def self.by_status(classroom_id, teacher_id, status) end def status + discipline_ids = TeacherDisciplineClassroom.where(classroom_id: classroom_id, teacher_id: teacher_id) + .pluck(:discipline_id) + exempted_discipline_ids = ExemptedDisciplinesInStep.discipline_ids( classroom.id, step_number @@ -103,6 +106,7 @@ def status values = ConceptualExamValue.where( conceptual_exam_id: id, exempted_discipline: false, + discipline_id: discipline_ids ).where.not(discipline_id: exempted_discipline_ids) return ConceptualExamStatus::INCOMPLETE if values.blank? From 42cc8576f1e28073dc2afb42316f79a2ab38904a Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 29 Jun 2022 22:51:04 -0300 Subject: [PATCH 292/304] Altera metodo utilizado para validar status --- app/views/conceptual_exams/_resources.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index 54eb6f51a..691d61754 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ From 1d0b35efbb462a0261b5a418cc8d75bbf48afd57 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 4 Jul 2022 16:06:48 -0300 Subject: [PATCH 300/304] Fecha aspas duplas da classe nested-fields --- .../school_term_recovery_diary_records/_student_fields.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/school_term_recovery_diary_records/_student_fields.html.erb b/app/views/school_term_recovery_diary_records/_student_fields.html.erb index 17408da1c..7cefb943a 100644 --- a/app/views/school_term_recovery_diary_records/_student_fields.html.erb +++ b/app/views/school_term_recovery_diary_records/_student_fields.html.erb @@ -1,4 +1,4 @@ -
<%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> + + <%= ConceptualExamStatus.t(conceptual_exam.status) %> From d3db3824dcc69d9059a2c33d1de94fa5f04dc295 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Wed, 29 Jun 2022 22:51:48 -0300 Subject: [PATCH 293/304] Remove metodos nao utilizados para validar status --- app/models/conceptual_exam.rb | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 340b0be48..96123ad35 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -118,37 +118,6 @@ def status ConceptualExamStatus::COMPLETE end - def frequency_type - teacher = Teacher.find(teacher_id) - frequency_type_definer = FrequencyTypeDefiner.new(classroom, teacher, year: classroom.year) - - frequency_type_definer.define! - - if frequency_type_definer.frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) - FrequencyTypes::BY_DISCIPLINE - else - FrequencyTypes::GENERAL - end - end - - def status_by_discipline(discipline_id) - if frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) - conceptual_exam_value = ConceptualExamValue.find_by( - conceptual_exam_id: id, - exempted_discipline: false, - discipline_id: discipline_id - ) - - if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? - return ConceptualExamStatus::INCOMPLETE - end - - ConceptualExamStatus::COMPLETE - else - status - end - end - def valid_for_destruction? @valid_for_destruction if defined?(@valid_for_destruction) @valid_for_destruction = begin From 03535b64495fd81f6e8369c65d53a7430875b977 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Thu, 30 Jun 2022 11:15:14 -0300 Subject: [PATCH 294/304] Cria funcao para verificar frequencia e agrupadores --- app/models/conceptual_exam.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index 96123ad35..faaca8265 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -118,6 +118,39 @@ def status ConceptualExamStatus::COMPLETE end + def frequency_type + teacher = Teacher.find(teacher_id) + frequency_type_definer = FrequencyTypeDefiner.new(classroom, teacher, year: classroom.year) + + frequency_type_definer.define! + + if frequency_type_definer.frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) + FrequencyTypes::BY_DISCIPLINE + else + FrequencyTypes::GENERAL + end + end + + def status_by_discipline(discipline_id) + group_descriptors = Discipline.find(discipline_id)&.knowledge_area&.group_descriptors + + if frequency_type.eql?(FrequencyTypes::GENERAL) || group_descriptors + status + else + conceptual_exam_value = ConceptualExamValue.find_by( + conceptual_exam_id: id, + exempted_discipline: false, + discipline_id: discipline_id + ) + + if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? + return ConceptualExamStatus::INCOMPLETE + end + + ConceptualExamStatus::COMPLETE + end + end + def valid_for_destruction? @valid_for_destruction if defined?(@valid_for_destruction) @valid_for_destruction = begin From 6836a010da906a7d93b9a00fa61f72dfa409611d Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Thu, 30 Jun 2022 11:16:17 -0300 Subject: [PATCH 295/304] Altera metodo utilizado para validar status --- app/views/conceptual_exams/_resources.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index 691d61754..f50f8e121 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ <%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= ConceptualExamStatus.t(conceptual_exam.status) %> + + <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> From 3664e8aabdac94297f66a38c38c3abb3c3485e1c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 1 Jul 2022 16:34:33 -0300 Subject: [PATCH 296/304] Ajusta para mandar array de datas --- .../daily_frequencies_in_batchs_controller.rb | 29 +++++++++++-------- ..._daily_frequency_in_batch_success.html.erb | 11 +++++++ 2 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb diff --git a/app/controllers/daily_frequencies_in_batchs_controller.rb b/app/controllers/daily_frequencies_in_batchs_controller.rb index e7c1c13c0..62b733693 100644 --- a/app/controllers/daily_frequencies_in_batchs_controller.rb +++ b/app/controllers/daily_frequencies_in_batchs_controller.rb @@ -27,14 +27,16 @@ def create def create_or_update_multiple daily_frequency_attributes = daily_frequency_in_batchs_params daily_frequencies_attributes = daily_frequencies_in_batch_params + receive_email_confirmation = ActiveRecord::Type::Boolean.new.type_cast_from_user( + daily_frequency_attributes[:frequency_in_batch_form][:receive_email_confirmation] + ) + dates = [] + ActiveRecord::Base.transaction do daily_frequencies_attributes[:daily_frequencies].each_value do |daily_frequency_students_params| daily_frequency_data = daily_frequency_attributes daily_frequency_data[:frequency_date] = daily_frequency_students_params[:date] daily_frequency_data[:class_number] = daily_frequency_students_params[:class_number] - receive_email_confirmation = ActiveRecord::Type::Boolean.new.type_cast_from_user( - daily_frequency_data[:frequency_in_batch_form][:receive_email_confirmation] - ) if daily_frequency_attributes[:frequency_type] == FrequencyTypes::GENERAL daily_frequency_data[:class_number] = nil @@ -67,18 +69,21 @@ def create_or_update_multiple current_teacher_id ) - if receive_email_confirmation - ReceiptMailer.delay.notify_daily_frequency_success( - current_user, - "#{request.base_url}#{create_or_update_multiple_daily_frequencies_in_batchs_path}", - daily_frequency.frequency_date.to_date.strftime('%d/%m/%Y'), - daily_frequency.classroom.description, - daily_frequency.unity.name - ) - end + dates << daily_frequency.frequency_date.to_date.strftime('%d/%m/%Y') end end end + + if receive_email_confirmation + ReceiptMailer.delay.notify_daily_frequency_in_batch_success( + current_user, + "#{request.base_url}#{create_or_update_multiple_daily_frequencies_in_batchs_path}", + dates, + Classroom.find(daily_frequency_attributes[:classroom_id].to_i).description, + Unity.find(daily_frequency_attributes[:unity_id].to_i).name + ) + end + flash[:success] = t('.daily_frequency_success') @dates = [*params[:start_date].to_date..params[:end_date].to_date] diff --git a/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb b/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb new file mode 100644 index 000000000..cb7d14f0b --- /dev/null +++ b/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb @@ -0,0 +1,11 @@ +

+ Olá, <%= @name %>! +

+ +

+ Frequência lançada com sucesso para a turma <%= @classroom %> da escola <%= @unity %>. Para acessar o seu lançamento no sistema, <%= link_to 'clique aqui', @url %>. +

+ +

+ Este e-mail foi enviado automaticamente, favor não responder. +

From 42b0542fce4d0259017e2a8205bf78130fdef93c Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 1 Jul 2022 16:34:45 -0300 Subject: [PATCH 297/304] Cria layout de novo mailer --- .../notify_daily_frequency_in_batch_success.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb b/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb index cb7d14f0b..285de11d4 100644 --- a/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb +++ b/app/views/receipt_mailer/notify_daily_frequency_in_batch_success.html.erb @@ -3,7 +3,7 @@

- Frequência lançada com sucesso para a turma <%= @classroom %> da escola <%= @unity %>. Para acessar o seu lançamento no sistema, <%= link_to 'clique aqui', @url %>. + Frequência lançada com sucesso para a turma <%= @classroom %> da escola <%= @unity %> nos dias <%= @dates.join(', ') %>. Para acessar o seu lançamento no sistema, <%= link_to 'clique aqui', @url %>.

From 297f0a32cccff71b89bdefae4e384cd6013187b9 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Fri, 1 Jul 2022 16:35:29 -0300 Subject: [PATCH 298/304] =?UTF-8?q?Cria=20m=C3=A9todo=20para=20enviar=20e-?= =?UTF-8?q?mail=20de=20frequ=C3=AAncia=20em=20lote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/mailers/receipt_mailer.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/mailers/receipt_mailer.rb b/app/mailers/receipt_mailer.rb index 1c7e2baef..e8e4d1460 100644 --- a/app/mailers/receipt_mailer.rb +++ b/app/mailers/receipt_mailer.rb @@ -11,4 +11,18 @@ def notify_daily_frequency_success(user, url, date, classroom, unity) mail(to: @recipient, subject: "Frequência do dia #{date} lançada com sucesso") if @recipient.present? end + + def notify_daily_frequency_in_batch_success(user, url, dates, classroom, unity) + @name = user.first_name + @url = url + @classroom = classroom + @unity = unity + @dates = dates + + return unless (email = user.email) + + skip_domains([email]) + + mail(to: @recipient, subject: "Frequências foram lançadas com sucesso") if @recipient.present? + end end From 86e31f5443d165be5eb4dd110c8869733577e883 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 4 Jul 2022 16:05:46 -0300 Subject: [PATCH 299/304] Ajusta identacao do input --- .../avaliation_recovery_diary_records/_student_fields.html.erb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/avaliation_recovery_diary_records/_student_fields.html.erb b/app/views/avaliation_recovery_diary_records/_student_fields.html.erb index 1b10155a9..0a8d7f27f 100644 --- a/app/views/avaliation_recovery_diary_records/_student_fields.html.erb +++ b/app/views/avaliation_recovery_diary_records/_student_fields.html.erb @@ -22,6 +22,7 @@

<%= f.input :score, label: false, - input_html: decimal_input_mask(@number_of_decimal_places), readonly: !f.object.active || f.object.exempted_from_discipline %> + input_html: decimal_input_mask(@number_of_decimal_places), + readonly: !f.object.active || f.object.exempted_from_discipline %>
From 635e219eb96a7e6fa23f948bb919c98f122bdfa9 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 4 Jul 2022 16:08:28 -0300 Subject: [PATCH 301/304] Remove as actions nao necessarias para renderizar a tela edit --- .../avaliation_recovery_diary_records_controller.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/controllers/avaliation_recovery_diary_records_controller.rb b/app/controllers/avaliation_recovery_diary_records_controller.rb index db3ed269a..6c646ee2c 100644 --- a/app/controllers/avaliation_recovery_diary_records_controller.rb +++ b/app/controllers/avaliation_recovery_diary_records_controller.rb @@ -93,12 +93,7 @@ def update if @avaliation_recovery_diary_record.save respond_with @avaliation_recovery_diary_record, location: avaliation_recovery_diary_records_path else - @unities = fetch_unities - @classrooms = fetch_classrooms - @school_calendar_steps = current_school_calendar.steps @number_of_decimal_places = current_test_setting.number_of_decimal_places - @student_notes = fetch_student_notes - reload_students_list render :edit end From bdc4695462e25a7f28696becdd61b3d94895f946 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Mon, 4 Jul 2022 16:19:05 -0300 Subject: [PATCH 302/304] Remove as actions nao necessarias para renderizar a tela new --- .../avaliation_recovery_diary_records_controller.rb | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/controllers/avaliation_recovery_diary_records_controller.rb b/app/controllers/avaliation_recovery_diary_records_controller.rb index 6c646ee2c..04dd145b6 100644 --- a/app/controllers/avaliation_recovery_diary_records_controller.rb +++ b/app/controllers/avaliation_recovery_diary_records_controller.rb @@ -52,12 +52,7 @@ def create if @avaliation_recovery_diary_record.save respond_with @avaliation_recovery_diary_record, location: avaliation_recovery_diary_records_path else - @unities = fetch_unities - @classrooms = fetch_classrooms - @school_calendar_steps = current_school_calendar.steps - @student_notes = fetch_student_notes @number_of_decimal_places = current_test_setting.number_of_decimal_places - reload_students_list if daily_note_students.present? render :new end From 701c1dd4f6c5f143222640d407e2ad2a5e2efd42 Mon Sep 17 00:00:00 2001 From: Ana Perola Date: Thu, 7 Jul 2022 14:09:43 -0300 Subject: [PATCH 303/304] Remove funcoes nao necessarias determinar o status das avaliacoes --- app/models/conceptual_exam.rb | 33 ------------------- .../conceptual_exams/_resources.html.erb | 4 +-- 2 files changed, 2 insertions(+), 35 deletions(-) diff --git a/app/models/conceptual_exam.rb b/app/models/conceptual_exam.rb index faaca8265..96123ad35 100644 --- a/app/models/conceptual_exam.rb +++ b/app/models/conceptual_exam.rb @@ -118,39 +118,6 @@ def status ConceptualExamStatus::COMPLETE end - def frequency_type - teacher = Teacher.find(teacher_id) - frequency_type_definer = FrequencyTypeDefiner.new(classroom, teacher, year: classroom.year) - - frequency_type_definer.define! - - if frequency_type_definer.frequency_type.eql?(FrequencyTypes::BY_DISCIPLINE) - FrequencyTypes::BY_DISCIPLINE - else - FrequencyTypes::GENERAL - end - end - - def status_by_discipline(discipline_id) - group_descriptors = Discipline.find(discipline_id)&.knowledge_area&.group_descriptors - - if frequency_type.eql?(FrequencyTypes::GENERAL) || group_descriptors - status - else - conceptual_exam_value = ConceptualExamValue.find_by( - conceptual_exam_id: id, - exempted_discipline: false, - discipline_id: discipline_id - ) - - if conceptual_exam_value.blank? || conceptual_exam_value.value.nil? - return ConceptualExamStatus::INCOMPLETE - end - - ConceptualExamStatus::COMPLETE - end - end - def valid_for_destruction? @valid_for_destruction if defined?(@valid_for_destruction) @valid_for_destruction = begin diff --git a/app/views/conceptual_exams/_resources.html.erb b/app/views/conceptual_exams/_resources.html.erb index f50f8e121..691d61754 100644 --- a/app/views/conceptual_exams/_resources.html.erb +++ b/app/views/conceptual_exams/_resources.html.erb @@ -12,8 +12,8 @@ <%= conceptual_exam.step %> <% conceptual_exam.teacher_id = current_teacher_id %> - - <%= ConceptualExamStatus.t(conceptual_exam.status_by_discipline(current_user_discipline.id)) %> + + <%= ConceptualExamStatus.t(conceptual_exam.status) %> From f1fb32b012152cc8a28e0730be5c701383be8897 Mon Sep 17 00:00:00 2001 From: gustavomendess Date: Thu, 7 Jul 2022 16:29:45 -0300 Subject: [PATCH 304/304] Filtra alunos por ano caso seja para a tela de notas de transferencia --- app/controllers/students_controller.rb | 5 +++-- app/services/student_enrollments_list.rb | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/controllers/students_controller.rb b/app/controllers/students_controller.rb index 08b3b2da4..36ce84dfd 100644 --- a/app/controllers/students_controller.rb +++ b/app/controllers/students_controller.rb @@ -16,13 +16,14 @@ def index end_date ||= step.end_at end - include_date_range = start_date.present? && end_date.present? + include_date_range = start_date.present? && end_date.present? && !transferred + search_type = transferred ? :by_year : :by_date student_enrollment_list = StudentEnrollmentsList.new( classroom: params[:classroom_id], discipline: params[:discipline_id], date: date, - search_type: :by_date, + search_type: search_type, include_date_range: include_date_range, start_at: start_date, end_at: end_date, diff --git a/app/services/student_enrollments_list.rb b/app/services/student_enrollments_list.rb index e8eaddec0..a712ccc86 100644 --- a/app/services/student_enrollments_list.rb +++ b/app/services/student_enrollments_list.rb @@ -190,7 +190,7 @@ def fetch_transfer_notes_students student_ids = fetch_student_enrollments.map(&:student_id) StudentEnrollment - .by_date_range(start_at, end_at) + .by_year(year) .where( student_id: student_ids, status: (StudentEnrollmentStatus::TRANSFERRED || StudentEnrollmentStatus::RECLASSIFIED)