Merge pull request #1334 from siddhantbajaj/DeleteEventSchedules
Fixed DeleteEventSchedules issue
This commit is contained in:
commit
5be1ad52ee
5 changed files with 39 additions and 10 deletions
|
|
@ -120,6 +120,10 @@ Metrics/ClassLength:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/models/conference.rb'
|
- 'app/models/conference.rb'
|
||||||
|
|
||||||
|
Metrics/BlockLength:
|
||||||
|
Exclude:
|
||||||
|
- 'spec/models/conference_spec.rb'
|
||||||
|
|
||||||
#################### Lint ###############################
|
#################### Lint ###############################
|
||||||
|
|
||||||
# Wrap your assignment in condition if you mean it, otherwise it is most likely equality check
|
# Wrap your assignment in condition if you mean it, otherwise it is most likely equality check
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,6 @@ module Admin
|
||||||
short_title = @conference.short_title
|
short_title = @conference.short_title
|
||||||
@conference.assign_attributes(conference_params)
|
@conference.assign_attributes(conference_params)
|
||||||
send_mail_on_conf_update = @conference.notify_on_dates_changed?
|
send_mail_on_conf_update = @conference.notify_on_dates_changed?
|
||||||
delete_event_schedules if @conference.start_hour_changed? || @conference.end_hour_changed?
|
|
||||||
|
|
||||||
if @conference.update_attributes(conference_params)
|
if @conference.update_attributes(conference_params)
|
||||||
ConferenceDateUpdateMailJob.perform_later(@conference) if send_mail_on_conf_update
|
ConferenceDateUpdateMailJob.perform_later(@conference) if send_mail_on_conf_update
|
||||||
|
|
@ -189,14 +188,5 @@ module Admin
|
||||||
:targets, :targets_attributes,
|
:targets, :targets_attributes,
|
||||||
:campaigns, :campaigns_attributes, :registration_limit)
|
:campaigns, :campaigns_attributes, :registration_limit)
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_event_schedules
|
|
||||||
event_schedules = EventSchedule.select do |e|
|
|
||||||
e.start_time.strftime('%H').to_i < @conference.start_hour ||
|
|
||||||
e.end_time.strftime('%H').to_i > @conference.end_hour ||
|
|
||||||
(e.end_time.strftime('%H').to_i == @conference.end_hour && e.end_time.strftime('%M').to_i > 0)
|
|
||||||
end
|
|
||||||
event_schedules.each(&:destroy)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ class Conference < ActiveRecord::Base
|
||||||
before_create :create_email_settings
|
before_create :create_email_settings
|
||||||
|
|
||||||
after_create :create_free_ticket
|
after_create :create_free_ticket
|
||||||
|
after_update :delete_event_schedules
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if the user is registered to the conference
|
# Checks if the user is registered to the conference
|
||||||
|
|
@ -80,6 +81,20 @@ class Conference < ActiveRecord::Base
|
||||||
user.present? && registrations.where(user_id: user.id).count > 0
|
user.present? && registrations.where(user_id: user.id).count > 0
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Delete all EventSchedules that are not in the hours range
|
||||||
|
# After the conference has been successfully updated
|
||||||
|
def delete_event_schedules
|
||||||
|
if start_hour_changed? || end_hour_changed?
|
||||||
|
event_schedules = program.event_schedules.select do |event_schedule|
|
||||||
|
event_schedule.start_time.hour < start_hour ||
|
||||||
|
event_schedule.end_time.hour > end_hour ||
|
||||||
|
(event_schedule.end_time.hour == end_hour && event_schedule.end_time.minute > 0)
|
||||||
|
end
|
||||||
|
event_schedules.each(&:destroy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Checks if the registration for the conference is currently open
|
# Checks if the registration for the conference is currently open
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,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
|
||||||
|
has_many :event_schedules, through: :schedules
|
||||||
belongs_to :selected_schedule, class_name: 'Schedule'
|
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
|
||||||
|
|
|
||||||
|
|
@ -1639,4 +1639,23 @@ describe Conference do
|
||||||
expect(free_ticket.price_cents).to eq(0)
|
expect(free_ticket.price_cents).to eq(0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'after_update' do
|
||||||
|
let(:conference) { create(:conference) }
|
||||||
|
let(:scheduled_event_before_conference) { create(:event_scheduled, program: conference.program, hour: conference.start_date + conference.start_hour.hours) }
|
||||||
|
let(:scheduled_event_after_conference) { create(:event_scheduled, program: conference.program, hour: conference.start_date + conference.end_hour.hours - 1.hour) }
|
||||||
|
let!(:scheduled_event_during_conference) { create(:event_scheduled, program: conference.program, hour: conference.start_date + conference.start_hour.hours + 3.hours) }
|
||||||
|
|
||||||
|
it 'delete event schedules that are not in hour ranges, when conference start hour is updated' do
|
||||||
|
scheduled_event_before_conference
|
||||||
|
conference.start_hour = conference.start_hour + 1
|
||||||
|
expect{ conference.save }.to change{ EventSchedule.count }.from(2).to(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'delete event schedules that are not in hour ranges, when conference end hour is updated' do
|
||||||
|
scheduled_event_after_conference
|
||||||
|
conference.end_hour = conference.end_hour - 2
|
||||||
|
expect{ conference.save }.to change{ EventSchedule.count }.from(2).to(1)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue