Introduce bulk :create, :update and :destroy
Introduce bulk :create, :update and :destroy actions to avoid doing several request in the admin schedule.
This commit is contained in:
parent
10561129f9
commit
bcff982d3d
5 changed files with 186 additions and 136 deletions
|
|
@ -2,40 +2,40 @@ module Admin
|
|||
class EventSchedulesController < Admin::BaseController
|
||||
load_and_authorize_resource :event_schedule
|
||||
|
||||
def create
|
||||
if @event_schedule.save
|
||||
render json: { event_schedule_id: @event_schedule.id }
|
||||
else
|
||||
render json: { errors: parse_errors(@event_schedule) }, status: 422
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
if @event_schedule.update(event_schedule_params)
|
||||
render json: { event_schedule_id: @event_schedule.id }
|
||||
else
|
||||
render json: { errors: parse_errors(@event_schedule) }, status: 422
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
if @event_schedule.destroy
|
||||
def bulk_create
|
||||
result = EventSchedule.create(params[:event_schedules].values).reject { |p| p.errors.empty? }
|
||||
if result.empty?
|
||||
render json: {}
|
||||
else
|
||||
render json: { errors: parse_errors(@event_schedule) }, status: 422
|
||||
event_names = result.collect { |event_schedule| event_schedule.event.try(:title) }
|
||||
render json: { errors: event_names.to_s }, status: 422
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def event_schedule_params
|
||||
params.require(:event_schedule).permit(:schedule_id, :event_id, :room_id, :start_time)
|
||||
def bulk_update
|
||||
keys = []
|
||||
values = []
|
||||
params[:event_schedules].values.each do |e|
|
||||
keys << e.keys[0]
|
||||
values << e.values[0]
|
||||
end
|
||||
result = EventSchedule.update(keys, values).reject { |p| p.errors.empty? }
|
||||
if result.empty?
|
||||
render json: {}
|
||||
else
|
||||
event_names = result.collect { |event_schedule| event_schedule.event.try(:title) }
|
||||
render json: { errors: event_names.to_s }, status: 422
|
||||
end
|
||||
end
|
||||
|
||||
def parse_errors(event_schedule)
|
||||
title = event_schedule.event.try(:title).present? ? event_schedule.event.title : 'The event'
|
||||
errors = event_schedule.errors.full_messages.present? ? " (#{event_schedule.errors.full_messages.join('. ')})" : ''
|
||||
"#{title} couldn't be scheduled#{errors}. "
|
||||
def bulk_destroy
|
||||
result = EventSchedule.destroy(params[:event_schedules].values).reject { |p| p.errors.empty? }
|
||||
if result.empty?
|
||||
render json: {}
|
||||
else
|
||||
event_names = result.collect { |event_schedule| event_schedule.event.try(:title) }
|
||||
render json: { errors: event_names.to_s }, status: 422
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue