class Verificator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Public Class Methods
new(dates)
click to toggle source
# File lib/tmis/engine/verificator.rb, line 5 def initialize(dates) @dates = dates.to_a end
Public Instance Methods
verify(verification)
click to toggle source
# File lib/tmis/engine/verificator.rb, line 9 def verify(verification) case verification when :lecturer_studies lecturer_studies when :cabinet_studies cabinet_studies when :lecturer_stubs lecturer_stubs when :cabinet_stubs cabinet_stubs when :subject_stubs subject_stubs when :group_and_subgroups group_and_subgroups when :preferred_days preferred_days when :computer_cabinets computer_cabinet else raise ArgumentError, 'No such verification' end end
Private Instance Methods
cabinet_stubs()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 53 def cabinet_stubs @dates.map do |date| [date, Study.joins(:cabinet).where('cabinets.stub = ?', true).where(date: date)] end end
cabinet_studies()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 41 def cabinet_studies @dates.map do |date| Study.select('date, number, cabinet_id, count(*)').where(date: date).group('number, cabinet_id').having('count(*) > 1') end.flatten.map{|x| Study.where(date: x.date, number: x.number, cabinet_id: x.cabinet_id )}.flatten.group_by{|x| [x.date, x.cabinet_id, x.number] } end
computer_cabinet()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 65 def computer_cabinet @dates.map do |date| [date, Study.joins(:cabinet).where(groupable_type: 'Subgroup').where("cabinets.with_computers = ?", false).where(date: date)] end end
lecturer_stubs()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 47 def lecturer_stubs @dates.map do |date| [date, Study.joins(:lecturer).where('lecturers.stub = ?', true).where(date: date)] end end
lecturer_studies()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 34 def lecturer_studies @dates.map do |date| Study.select('date, number, lecturer_id, count(*)').where(date: date).group('number, lecturer_id').having('count(*) > 1') end.flatten.map{|x| Study.where(date: x.date, number: x.number, lecturer_id: x.lecturer_id )}.flatten.group_by{|x| [x.date, x.lecturer_id, x.number] } #@dates.map{ |date| Study.select('id, date, number, lecturer_id, count(*)').where(date: date).group('number, lecturer_id').having('count(*) > 1').to_a } end
preferred_days()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 71 def preferred_days @dates.map do |date| #[date, Study.joins(:lecturer).where(date: date).where("NOT instr(preferred_days, strftime('%w', date))")] # doesn't work on windows #[date, Study.joins(:lecturer).where(date: date).where("NOT preferred_days like strftime('%w', date)")] [date, Lecturer.all.map do |l| if l.preferred_days l.studies.where(date: date).where("NOT strftime('%w', date) in (#{l.preferred_days.split(/,\s*/).map{|s| '\'' << s << '\'' }.join(',')})", ).to_a end end.flatten.compact] end end
subject_stubs()
click to toggle source
# File lib/tmis/engine/verificator.rb, line 59 def subject_stubs @dates.map do |date| [date, Study.joins(:subject).where('subjects.stub = ?', true).where(date: date)] end end