We use this method in two different scenarios. In an AJAX request, we don't want to return every booth if the search is blank. However, in a normal HTTP GET request, we want to return every record when the search is empty, as we do everywhere else. It's possible the behaviour of the AJAX call is unusual, since it searches all booths, and not just the ones assigned to a poll. If we changed this behaviour, we could simplify the code and remove the `quick_search` method.
79 lines
2.0 KiB
Ruby
79 lines
2.0 KiB
Ruby
class Admin::Poll::BoothAssignmentsController < Admin::Poll::BaseController
|
|
|
|
before_action :load_poll, except: [:create, :destroy]
|
|
|
|
def index
|
|
@booth_assignments = @poll.booth_assignments.includes(:booth).order("poll_booths.name")
|
|
.page(params[:page]).per(50)
|
|
end
|
|
|
|
def search_booths
|
|
load_search
|
|
@booths = ::Poll::Booth.quick_search(@search)
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def show
|
|
included_relations = [:recounts, :voters, officer_assignments: [officer: [:user]]]
|
|
@booth_assignment = @poll.booth_assignments.includes(*included_relations).find(params[:id])
|
|
@voters_by_date = @booth_assignment.voters.group_by { |v| v.created_at.to_date }
|
|
@partial_results = @booth_assignment.partial_results
|
|
@recounts = @booth_assignment.recounts
|
|
end
|
|
|
|
def create
|
|
@poll = Poll.find(booth_assignment_params[:poll_id])
|
|
@booth = Poll::Booth.find(booth_assignment_params[:booth_id])
|
|
@booth_assignment = ::Poll::BoothAssignment.new(poll: @poll,
|
|
booth: @booth)
|
|
|
|
@booth_assignment.save
|
|
|
|
respond_to do |format|
|
|
format.js { render layout: false }
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
@poll = Poll.find(booth_assignment_params[:poll_id])
|
|
@booth = Poll::Booth.find(booth_assignment_params[:booth_id])
|
|
@booth_assignment = ::Poll::BoothAssignment.find(params[:id])
|
|
|
|
@booth_assignment.destroy
|
|
|
|
respond_to do |format|
|
|
format.js { render layout: false }
|
|
end
|
|
end
|
|
|
|
def manage
|
|
@booths = ::Poll::Booth.all.order(name: :asc).page(params[:page]).per(300)
|
|
@poll = Poll.find(params[:poll_id])
|
|
end
|
|
|
|
private
|
|
|
|
def load_booth_assignment
|
|
@booth_assignment = ::Poll::BoothAssignment.find(params[:id])
|
|
end
|
|
|
|
def booth_assignment_params
|
|
params.permit(:booth_id, :poll_id)
|
|
end
|
|
|
|
def load_poll
|
|
@poll = ::Poll.find(params[:poll_id])
|
|
end
|
|
|
|
def search_params
|
|
params.permit(:poll_id, :search)
|
|
end
|
|
|
|
def load_search
|
|
@search = search_params[:search]
|
|
end
|
|
|
|
end
|