mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
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:
parent
4409610a89
commit
4289f699ac
6 changed files with 35 additions and 2 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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?
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
class AddEnabledToEventSchedules < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :event_schedules, :enabled, :boolean, default: true
|
||||
end
|
||||
end
|
||||
|
|
@ -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|
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue