Introduce an association for the selected_schedule
Association in Program fot the selected_schedule
This commit is contained in:
parent
3f114629f9
commit
beb17165a2
10 changed files with 24 additions and 21 deletions
|
|
@ -25,10 +25,10 @@ module Admin
|
||||||
# if there is not selected schedule we create it
|
# if there is not selected schedule we create it
|
||||||
unless @program.selected_schedule.present?
|
unless @program.selected_schedule.present?
|
||||||
schedule = @program.schedules.create
|
schedule = @program.schedules.create
|
||||||
@program.selected_schedule = schedule.id
|
@program.selected_schedule = schedule
|
||||||
@program.save!
|
@program.save!
|
||||||
end
|
end
|
||||||
@schedule_id = @program.selected_schedule
|
@schedule_id = @program.selected_schedule.id
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,13 @@ class ConferenceController < ApplicationController
|
||||||
|
|
||||||
def schedule
|
def schedule
|
||||||
@rooms = @conference.venue.rooms if @conference.venue
|
@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)
|
redirect_to events_conference_path(@conference.short_title)
|
||||||
end
|
end
|
||||||
|
|
||||||
@events = @conference.program.events
|
@events = @conference.program.events
|
||||||
@events_xml = @program.schedules.find(@program.selected_schedule).event_schedules.order(start_time: :asc)
|
@events_xml = @program.selected_schedule.event_schedules.order(start_time: :asc).map(&:event)
|
||||||
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date } if program.selected_schedule.present?
|
.group_by{ |event| event.scheduled_start_time.to_date } if @program.selected_schedule.present?
|
||||||
@dates = @conference.start_date..@conference.end_date
|
@dates = @conference.start_date..@conference.end_date
|
||||||
@step_minutes = EventType::LENGTH_STEP.minutes
|
@step_minutes = EventType::LENGTH_STEP.minutes
|
||||||
@conf_start = 9
|
@conf_start = 9
|
||||||
|
|
@ -38,7 +38,7 @@ class ConferenceController < ApplicationController
|
||||||
@dates = @conference.start_date..@conference.end_date
|
@dates = @conference.start_date..@conference.end_date
|
||||||
|
|
||||||
if @program.selected_schedule.present?
|
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
|
else
|
||||||
@events_schedules = []
|
@events_schedules = []
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@ class Event < ActiveRecord::Base
|
||||||
|
|
||||||
# returns the event_schedule for this event and for the selected_schedule
|
# returns the event_schedule for this event and for the selected_schedule
|
||||||
def selected_event_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
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ class Program < ActiveRecord::Base
|
||||||
has_many :tracks, dependent: :destroy
|
has_many :tracks, dependent: :destroy
|
||||||
has_many :difficulty_levels, dependent: :destroy
|
has_many :difficulty_levels, dependent: :destroy
|
||||||
has_many :schedules, dependent: :destroy
|
has_many :schedules, dependent: :destroy
|
||||||
|
belongs_to :selected_schedule, class_name: 'Schedule'
|
||||||
has_many :events, dependent: :destroy do
|
has_many :events, dependent: :destroy do
|
||||||
def require_registration
|
def require_registration
|
||||||
where(require_registration: true, state: :confirmed)
|
where(require_registration: true, state: :confirmed)
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
%td.room{ style: "height: #{ td_height(@rooms) }px;" }
|
%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.elipsis.break-words{ style: "-webkit-line-clamp: #{ room_lines(@rooms) }; height: #{ room_height(@rooms) }px;" }
|
||||||
= room.name
|
= 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|
|
- (1..intervals).each do |i|
|
||||||
- if span > 1
|
- if span > 1
|
||||||
- span -= 1
|
- span -= 1
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,6 @@ class CreateSchedules < ActiveRecord::Migration
|
||||||
t.belongs_to :program, index: true
|
t.belongs_to :program, index: true
|
||||||
t.timestamps null: false
|
t.timestamps null: false
|
||||||
end
|
end
|
||||||
add_column :programs, :selected_schedule, :integer # Selected schedule ID
|
add_reference :programs, :selected_schedule, index: true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
16
db/schema.rb
16
db/schema.rb
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# 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|
|
create_table "ahoy_events", force: :cascade do |t|
|
||||||
t.uuid "visit_id", limit: 16
|
t.uuid "visit_id", limit: 16
|
||||||
|
|
@ -180,9 +180,9 @@ ActiveRecord::Schema.define(version: 20160705110711) do
|
||||||
t.integer "event_id"
|
t.integer "event_id"
|
||||||
t.integer "schedule_id"
|
t.integer "schedule_id"
|
||||||
t.integer "room_id"
|
t.integer "room_id"
|
||||||
|
t.datetime "start_time"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.datetime "start_time"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "event_schedules", ["event_id"], name: "index_event_schedules_on_event_id"
|
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|
|
create_table "programs", force: :cascade do |t|
|
||||||
t.integer "conference_id"
|
t.integer "conference_id"
|
||||||
t.integer "rating", default: 0
|
t.integer "rating", default: 0
|
||||||
t.boolean "schedule_public", default: false
|
t.boolean "schedule_public", default: false
|
||||||
t.boolean "schedule_fluid", default: false
|
t.boolean "schedule_fluid", default: false
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.string "languages"
|
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_start_date"
|
||||||
t.datetime "voting_end_date"
|
t.datetime "voting_end_date"
|
||||||
|
t.integer "selected_schedule_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
|
||||||
|
|
||||||
create_table "qanswers", force: :cascade do |t|
|
create_table "qanswers", force: :cascade do |t|
|
||||||
t.integer "question_id"
|
t.integer "question_id"
|
||||||
t.integer "answer_id"
|
t.integer "answer_id"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ namespace :data do
|
||||||
task move_events_attributes: :environment do
|
task move_events_attributes: :environment do
|
||||||
Program.all.each do |program|
|
Program.all.each do |program|
|
||||||
schedule = Schedule.create(program: program)
|
schedule = Schedule.create(program: program)
|
||||||
program.selected_schedule = schedule.id
|
program.selected_schedule = schedule
|
||||||
program.save
|
program.save
|
||||||
program.events.each do |event|
|
program.events.each do |event|
|
||||||
unless event.start_time.nil? && event.room_id.nil?
|
unless event.start_time.nil? && event.room_id.nil?
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ describe ConferenceController do
|
||||||
|
|
||||||
it 'assigns variables' do
|
it 'assigns variables' do
|
||||||
expect(assigns(:conference)).to eq conference
|
expect(assigns(:conference)).to eq conference
|
||||||
expect(assigns(:events_xml)).to eq conference.program.schedules.find(conference.program.selected_schedule).event_schedules
|
expect(assigns(:events_xml)).to eq conference.program.selected_schedule.event_schedules.order(start_time: :asc)
|
||||||
.order(start_time: :asc).map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
|
.map(&:event).group_by{ |event| event.scheduled_start_time.to_date }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'renders successfully' do
|
it 'renders successfully' do
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,10 @@ FactoryGirl.define do
|
||||||
unless program.selected_schedule.present?
|
unless program.selected_schedule.present?
|
||||||
schedule = create(:schedule, program: program)
|
schedule = create(:schedule, program: program)
|
||||||
program.schedules << schedule
|
program.schedules << schedule
|
||||||
program.selected_schedule = schedule.id
|
program.selected_schedule = schedule
|
||||||
program.save!
|
program.save!
|
||||||
end
|
end
|
||||||
event_schedule.schedule_id = program.selected_schedule
|
event_schedule.schedule = program.selected_schedule
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue