Introduce an association for the selected_schedule

Association in Program fot the selected_schedule
This commit is contained in:
Ana 2016-07-28 12:50:32 +02:00
parent 3f114629f9
commit beb17165a2
10 changed files with 24 additions and 21 deletions

View file

@ -25,10 +25,10 @@ module Admin
# if there is not selected schedule we create it
unless @program.selected_schedule.present?
schedule = @program.schedules.create
@program.selected_schedule = schedule.id
@program.selected_schedule = schedule
@program.save!
end
@schedule_id = @program.selected_schedule
@schedule_id = @program.selected_schedule.id
end
def update

View file

@ -13,13 +13,13 @@ class ConferenceController < ApplicationController
def schedule
@rooms = @conference.venue.rooms if @conference.venue
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule).any?
unless @program.selected_schedule.present? && @program.events.scheduled(@program.selected_schedule.id).any?
redirect_to events_conference_path(@conference.short_title)
end
@events = @conference.program.events
@events_xml = @program.schedules.find(@program.selected_schedule).event_schedules.order(start_time: :asc)
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if program.selected_schedule.present?
@events_xml = @program.selected_schedule.event_schedules.order(start_time: :asc).map(&:event)
.group_by{ |event| event.scheduled_start_time.to_date } if @program.selected_schedule.present?
@dates = @conference.start_date..@conference.end_date
@step_minutes = EventType::LENGTH_STEP.minutes
@conf_start = 9
@ -38,7 +38,7 @@ class ConferenceController < ApplicationController
@dates = @conference.start_date..@conference.end_date
if @program.selected_schedule.present?
@events_schedules = @program.schedules.find(@program.selected_schedule).event_schedules.order(start_time: :asc)
@events_schedules = @program.selected_schedule.event_schedules.order(start_time: :asc)
else
@events_schedules = []
end

View file

@ -270,7 +270,7 @@ class Event < ActiveRecord::Base
# returns the event_schedule for this event and for the selected_schedule
def selected_event_schedule
event_schedules.find_by(schedule_id: program.try(:selected_schedule))
event_schedules.find_by(schedule_id: program.try(:selected_schedule_id))
end
private

View file

@ -8,6 +8,7 @@ class Program < ActiveRecord::Base
has_many :tracks, dependent: :destroy
has_many :difficulty_levels, dependent: :destroy
has_many :schedules, dependent: :destroy
belongs_to :selected_schedule, class_name: 'Schedule'
has_many :events, dependent: :destroy do
def require_registration
where(require_registration: true, state: :confirmed)

View file

@ -27,7 +27,7 @@
%td.room{ style: "height: #{ td_height(@rooms) }px;" }
.room.elipsis.break-words{ style: "-webkit-line-clamp: #{ room_lines(@rooms) }; height: #{ room_height(@rooms) }px;" }
= room.name
- event_schedules = room.event_schedules.select{ |e| (e.schedule_id == @conference.program.selected_schedule) && (e.start_time >= start_time) && (e.start_time < (start_time + number_columns.hour)) }
- event_schedules = room.event_schedules.select{ |e| (e.schedule_id == @conference.program.selected_schedule.id) && (e.start_time >= start_time) && (e.start_time < (start_time + number_columns.hour)) }
- (1..intervals).each do |i|
- if span > 1
- span -= 1

View file

@ -4,6 +4,6 @@ class CreateSchedules < ActiveRecord::Migration
t.belongs_to :program, index: true
t.timestamps null: false
end
add_column :programs, :selected_schedule, :integer # Selected schedule ID
add_reference :programs, :selected_schedule, index: true
end
end

View file

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160705110711) do
ActiveRecord::Schema.define(version: 20160704092023) do
create_table "ahoy_events", force: :cascade do |t|
t.uuid "visit_id", limit: 16
@ -180,9 +180,9 @@ ActiveRecord::Schema.define(version: 20160705110711) do
t.integer "event_id"
t.integer "schedule_id"
t.integer "room_id"
t.datetime "start_time"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "start_time"
end
add_index "event_schedules", ["event_id"], name: "index_event_schedules_on_event_id"
@ -265,18 +265,20 @@ ActiveRecord::Schema.define(version: 20160705110711) do
create_table "programs", force: :cascade do |t|
t.integer "conference_id"
t.integer "rating", default: 0
t.boolean "schedule_public", default: false
t.boolean "schedule_fluid", default: false
t.integer "rating", default: 0
t.boolean "schedule_public", default: false
t.boolean "schedule_fluid", default: false
t.datetime "created_at"
t.datetime "updated_at"
t.string "languages"
t.integer "selected_schedule"
t.boolean "blind_voting", default: false
t.boolean "blind_voting", default: false
t.datetime "voting_start_date"
t.datetime "voting_end_date"
t.integer "selected_schedule_id"
end
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
create_table "qanswers", force: :cascade do |t|
t.integer "question_id"
t.integer "answer_id"

View file

@ -4,7 +4,7 @@ namespace :data do
task move_events_attributes: :environment do
Program.all.each do |program|
schedule = Schedule.create(program: program)
program.selected_schedule = schedule.id
program.selected_schedule = schedule
program.save
program.events.each do |event|
unless event.start_time.nil? && event.room_id.nil?

View file

@ -39,8 +39,8 @@ describe ConferenceController do
it 'assigns variables' do
expect(assigns(:conference)).to eq conference
expect(assigns(:events_xml)).to eq conference.program.schedules.find(conference.program.selected_schedule).event_schedules
.order(start_time: :asc).map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
expect(assigns(:events_xml)).to eq conference.program.selected_schedule.event_schedules.order(start_time: :asc)
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
end
it 'renders successfully' do

View file

@ -13,10 +13,10 @@ FactoryGirl.define do
unless program.selected_schedule.present?
schedule = create(:schedule, program: program)
program.schedules << schedule
program.selected_schedule = schedule.id
program.selected_schedule = schedule
program.save!
end
event_schedule.schedule_id = program.selected_schedule
event_schedule.schedule = program.selected_schedule
end
end
end