From 7d70f7685e1c07d071b2ca04df887bcbdfa02b34 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Thu, 18 Aug 2016 00:32:16 +0530 Subject: [PATCH] Track Schedule and EventSchedule --- app/helpers/application_helper.rb | 14 ++++++++------ app/models/event_schedule.rb | 8 ++++++++ app/models/schedule.rb | 8 ++++++++ .../versions/_object_desc_and_link.html.haml | 17 +++++++++++++++++ app/views/admin/versions/index.html.haml | 3 +++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index fcc554c7..5e017d8c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -413,12 +413,6 @@ module ApplicationHelper when 'new' then 'resubmitted' end - when version.changeset['start_time'] && version.changeset['start_time'][0].nil? - 'scheduled' - - when version.changeset['start_time'] && version.changeset['start_time'][1].nil? - 'unscheduled' - else "updated #{updated_attributes(version)} of" end @@ -494,6 +488,14 @@ module ApplicationHelper end end + def event_schedule_change_description(version) + case version.event + when 'create' then 'scheduled' + when 'update' then 'rescheduled' + when 'destroy' then 'unscheduled' + end + end + def general_change_description(version) if version.event == 'create' 'created new' diff --git a/app/models/event_schedule.rb b/app/models/event_schedule.rb index 4f5e4940..cb630acd 100644 --- a/app/models/event_schedule.rb +++ b/app/models/event_schedule.rb @@ -3,6 +3,8 @@ class EventSchedule < ActiveRecord::Base belongs_to :event belongs_to :room + has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } + validates :schedule, presence: true validates :event, presence: true validates :room, presence: true @@ -28,4 +30,10 @@ class EventSchedule < ActiveRecord::Base def intersecting_events room.event_schedules.where(start_time: start_time, schedule: schedule).where.not(id: id) end + + private + + def conference_id + schedule.program.conference_id + end end diff --git a/app/models/schedule.rb b/app/models/schedule.rb index 2254ebc9..b14a978c 100644 --- a/app/models/schedule.rb +++ b/app/models/schedule.rb @@ -2,4 +2,12 @@ class Schedule < ActiveRecord::Base belongs_to :program has_many :event_schedules, dependent: :destroy has_many :events, through: :event_schedules + + has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } + + private + + def conference_id + program.conference_id + end end diff --git a/app/views/admin/versions/_object_desc_and_link.html.haml b/app/views/admin/versions/_object_desc_and_link.html.haml index 1b4f9b83..46521439 100644 --- a/app/views/admin/versions/_object_desc_and_link.html.haml +++ b/app/views/admin/versions/_object_desc_and_link.html.haml @@ -49,6 +49,23 @@ - else = PaperTrail::Version.where(item_type: 'Target', item_id: version.item_id).last.reify.to_s +- elsif version.item_type == 'EventSchedule' + - event_schedule = get_version_object(version) + event + = link_to Event.find(event_schedule.event_id), + admin_conference_program_event_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.event_id) + in + = link_to "Schedule #{event_schedule.schedule_id}", + admin_conference_schedules_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.schedule_id) + +- elsif version.item_type == 'Schedule' + - schedule = get_version_object(version) + - if version.item + = link_to "Schedule #{event_schedule.schedule_id}", + admin_conference_schedules_path(conference_id: Conference.find(version.conference_id).short_title, id: event_schedule.schedule_id) + - else + = "Schedule #{event_schedule.schedule_id}" + - elsif version.item - case version.item_type - when 'Conference' diff --git a/app/views/admin/versions/index.html.haml b/app/views/admin/versions/index.html.haml index 63244ac4..69af134b 100644 --- a/app/views/admin/versions/index.html.haml +++ b/app/views/admin/versions/index.html.haml @@ -41,6 +41,9 @@ - when 'User' = user_change_description(version) + - when 'EventSchedule' + = event_schedule_change_description(version) + - else = general_change_description(version)