Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions app/controllers/admin/speaker_announcements_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ def edit
end

def create
@speaker_announcement = SpeakerAnnouncement.create(speaker_announcement_params.merge(conference_id: @conference.id))
params = speaker_announcement_params.merge(conference_id: @conference.id)
params[:speaker_ids] = speaker_ids

@speaker_announcement = SpeakerAnnouncement.create(params)
respond_to do |format|
if @speaker_announcement
format.html { redirect_to(admin_speaker_announcements_path, notice: 'Speaker was successfully updated.') }
Expand All @@ -31,9 +34,11 @@ def create

def update
@speaker_announcement = SpeakerAnnouncement.find_by(conference_id: @conference.id, id: params[:id])
params = speaker_announcement_params.merge(conference_id: @conference.id)
params[:speaker_ids] = speaker_ids

respond_to do |format|
if @speaker_announcement.update(speaker_announcement_params)
if @speaker_announcement.update(params)
format.html { redirect_to(admin_speaker_announcements_path, notice: 'Speaker was successfully updated.') }
format.json { render(:show, status: :ok, location: @speaker_announcement) }
else
Expand All @@ -57,6 +62,21 @@ def destroy

helper_method :speaker_announcement_url, :is_to_all_announcements?

def speaker_ids
params = speaker_announcement_params

case params[:receiver]
when 'person'
params[:speaker_ids]
when 'all_speaker'
@conference.speakers.pluck(:id)
when 'only_accepted'
@conference.talks.accepted.map(&:speakers).flatten.pluck(:id)
when 'only_rejected'
@conference.talks.rejected.map(&:speakers).flatten.pluck(:id)
end
end

def is_to_all_announcements?
@speakers.blank? || @speakers.nil? || @speakers.length > 1
end
Expand Down
11 changes: 1 addition & 10 deletions app/views/admin/speaker_announcements/_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,7 @@
<%= form.datetime_select :publish_time, class: 'form-control' %>
</div>

<% if @speakers.blank? || @speakers.nil? %>
<div class="field">
<%= form.label :speaker_id, '登壇者' %>*<br/>
<% Speaker.where(conference_id: @conference.id).pluck(:id).each do |speaker_id| %>
<%= form.hidden_field :speaker_ids, multiple: true, value: speaker_id, class: 'form-control' %>
<% end %>
<%= form.text_field :speaker_names, value: "全員", readonly: true %>
<%= form.hidden_field :receiver, value: :all_speaker %>
</div>
<% else %>
<% unless @speakers.blank? || @speakers.nil? %>
<div class="field">
<%= form.label :speaker_id, '登壇者' %>*<br/>

Expand Down
5 changes: 5 additions & 0 deletions spec/factories/speaker_announcements.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@
receiver { :only_accepted }
publish { true }
end
trait :only_rejected do
body { 'test announcement for only rejected' }
receiver { :only_rejected }
publish { true }
end
trait :speaker_mike do
body { 'test announcement for mike' }
publish { true }
Expand Down
23 changes: 11 additions & 12 deletions spec/factories/speakers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,38 +39,30 @@

trait :with_talk1_registered do
after(:build) do |speaker|
talk = FactoryBot.create(:talk1)
talk = FactoryBot.create(:talk1, :registered)
speaker.talks << talk
FactoryBot.create(:talks_speakers, { talk:, speaker: })
proposal = FactoryBot.create(:proposal, :with_cndt2021, talk:, status: 0)
end
end

trait :with_talk1_accepted do
after(:build) do |speaker|
talk = FactoryBot.create(:talk1)
talk = FactoryBot.create(:talk1, :accepted)
speaker.talks << talk
FactoryBot.create(:talks_speakers, { talk:, speaker: })
proposal = FactoryBot.create(:proposal, :with_cndt2021, talk:, status: 1)
end
end

trait :with_talk1_rejected do
after(:build) do |speaker|
talk = FactoryBot.create(:talk1)
talk = FactoryBot.create(:talk1, :rejected)
speaker.talks << talk
FactoryBot.create(:talks_speakers, { talk:, speaker: })
proposal = FactoryBot.create(:proposal, :with_cndt2021, talk:, status: 2)
end
end

trait :with_sponsor_session do
after(:build) do |speaker|
sponsor = create(:sponsor)
talk = create(:sponsor_session, sponsor:)
talk = create(:sponsor_session, :registered, sponsor:)
speaker.talks << talk
create(:talks_speakers, { talk:, speaker: })
create(:proposal, :with_cndt2021, talk:, status: 0)
end
end
end
Expand All @@ -86,6 +78,13 @@
company { 'company' }
job_title { 'job_title' }
conference_id { 1 }

trait :with_talk2_rejected do
after(:build) do |speaker|
talk = FactoryBot.create(:talk2, :rejected)
speaker.talks << talk
end
end
end

factory :speaker_mike, class: Speaker do
Expand Down
6 changes: 6 additions & 0 deletions spec/factories/talks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,12 @@
video_published { true }
document_url { 'http://' }

trait :registered do
after(:build) do |talk|
create(:proposal, :registered, talk:, conference_id: talk.conference_id)
end
end

trait :accepted do
after(:build) do |talk|
create(:proposal, talk:, status: 1, conference_id: talk.conference_id)
Expand Down
Loading
Loading