In the attendance tracker view, the total times for preparation, in lecture, and review have been humanized for better readability. Also, total time spent on lectures for each week has been included for a quicker overview. A helper method 'humanise_duration' has been added in application helper to convert time into a more readable format. Changes have been done in 'lecture' model for calculation of total time.
48 lines
1018 B
Ruby
48 lines
1018 B
Ruby
class Lecture < ApplicationRecord
|
|
belongs_to :course
|
|
has_one :recording, dependent: :nullify
|
|
|
|
has_many :tracked_time_entries, dependent: :destroy
|
|
|
|
enum :kind, [
|
|
:lecture,
|
|
:problems_class,
|
|
], default: :lecture
|
|
|
|
def prepared?
|
|
tracked_time_entries.where(kind: [:preparation]).any?
|
|
end
|
|
|
|
def attended?
|
|
tracked_time_entries.where(kind: [:concurrent, :catchup]).any?
|
|
end
|
|
|
|
def reviewed?
|
|
tracked_time_entries.where(kind: [:review]).any?
|
|
end
|
|
|
|
def total_preparation_time
|
|
tracked_time_entries.preparation.sum(&:duration).seconds
|
|
end
|
|
|
|
def total_overall_time
|
|
tracked_time_entries.sum(&:duration).seconds
|
|
end
|
|
|
|
def total_attendance_time
|
|
tracked_time_entries.where(kind: [:concurrent, :catchup]).sum(&:duration).seconds
|
|
end
|
|
|
|
def total_review_time
|
|
tracked_time_entries.review.sum(&:duration).seconds
|
|
end
|
|
|
|
def week_number
|
|
((start_time.beginning_of_week - course.semester_start_date.to_time) / 1.week).floor + 1
|
|
end
|
|
|
|
def live_video_url
|
|
nil
|
|
end
|
|
end
|