Add enabled to event_schedules

To show scheduled events that have been cancelled/withdrawn as 'cancelled', and consequently also show when an event is their replacement.

admin/schedules#show does not show events that were scheduled and then cancelled/withdrawn, however a record in event_schedules exists for those events, but event_schedule.enabled = false
This commit is contained in:
Stella Rouzi 2017-02-12 17:57:55 +02:00 committed by James Mason
parent 4409610a89
commit 4289f699ac
6 changed files with 35 additions and 2 deletions

View file

@ -124,6 +124,15 @@ module Admin
def cancel
update_state(:cancel, 'Event canceled!')
selected_schedule = @event.program.selected_schedule
event_schedule = EventSchedule.unscoped.where(event: @event).find_by(schedule: selected_schedule) if selected_schedule
Rails.logger.debug "schedule: #{selected_schedule.inspect} and event_schedule #{event_schedule.inspect}"
if selected_schedule && event_schedule
event_schedule.enabled = false
event_schedule.save
else
@event.event_schedules.destroy_all
end
end
def reject

View file

@ -91,6 +91,15 @@ class ProposalsController < ApplicationController
begin
@event.withdraw
selected_schedule = @event.program.selected_schedule
event_schedule = @event.event_schedules.find_by(schedule: selected_schedule) if selected_schedule
Rails.logger.debug "schedule: #{selected_schedule.inspect} and event_schedule #{event_schedule.inspect}"
if selected_schedule && event_schedule
event_schedule.enabled = false
event_schedule.save
else
@event.event_schedules.destroy_all
end
rescue Transitions::InvalidTransition
redirect_to :back, error: "Event can't be withdrawn"
return

View file

@ -197,6 +197,14 @@ class Event < ApplicationRecord
send(transition)
end
save
# If the event was previously scheduled, and then withdrawn or cancelled
# its event_schedule will have enabled set to false
# If the event is now confirmed again, we want it to be available for scheduling
Rails.logger.debug "transition is #{transition}"
if transition == :confirm
Rails.logger.debug "schedules #{EventSchedule.unscoped.where(event: self, enabled: false)}"
EventSchedule.unscoped.where(event: self, enabled: false).destroy_all
end
rescue Transitions::InvalidTransition => e
alert = "Update state failed. #{e.message}"
end

View file

@ -1,4 +1,5 @@
class EventSchedule < ApplicationRecord
default_scope { where(enabled: true) }
belongs_to :schedule
belongs_to :event
belongs_to :room
@ -33,7 +34,7 @@ class EventSchedule < ApplicationRecord
# Returns event schedules that are scheduled in the same room and start_time as event
#
def intersecting_event_schedules
room.event_schedules.where(start_time: start_time, schedule: schedule).where.not(id: id)
EventSchedule.unscoped.where(room: room, start_time: start_time, schedule: schedule).where.not(id: id)
end
def replacement?

View file

@ -0,0 +1,5 @@
class AddEnabledToEventSchedules < ActiveRecord::Migration
def change
add_column :event_schedules, :enabled, :boolean, default: true
end
end

View file

@ -217,6 +217,7 @@ ActiveRecord::Schema.define(version: 20171130172334) do
t.datetime "start_time"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "enabled", default: true
t.index ["event_id", "schedule_id"], name: "index_event_schedules_on_event_id_and_schedule_id", unique: true
t.index ["event_id"], name: "index_event_schedules_on_event_id"
t.index ["room_id"], name: "index_event_schedules_on_room_id"
@ -494,7 +495,7 @@ ActiveRecord::Schema.define(version: 20171130172334) do
t.integer "user_id"
t.integer "payment_id"
t.integer "week"
t.float "amount_paid", default: 0.0
t.float "amount_paid"
end
create_table "ticket_scannings", force: :cascade do |t|