Using Date.today and Time.now might lead to inconsistencies if the time zone the application uses is not the same as the system time zone.
52 lines
1.4 KiB
Ruby
52 lines
1.4 KiB
Ruby
class Dashboard::ActionsController < Dashboard::BaseController
|
|
helper_method :dashboard_action
|
|
|
|
def new_request
|
|
authorize! :dashboard, proposal
|
|
@dashboard_executed_action = Dashboard::ExecutedAction.new
|
|
end
|
|
|
|
def create_request
|
|
authorize! :dashboard, proposal
|
|
|
|
source_params = {
|
|
proposal: proposal,
|
|
action: dashboard_action,
|
|
executed_at: Time.current
|
|
}
|
|
|
|
@dashboard_executed_action = Dashboard::ExecutedAction.new(source_params)
|
|
if @dashboard_executed_action.save
|
|
Dashboard::AdministratorTask.create(source: @dashboard_executed_action)
|
|
|
|
redirect_to progress_proposal_dashboard_path(proposal.to_param),
|
|
{ flash: { info: t("dashboard.create_request.success") } }
|
|
else
|
|
flash.now[:alert] = @dashboard_executed_action.errors.full_messages.join("<br>")
|
|
render :new_request
|
|
end
|
|
end
|
|
|
|
def execute
|
|
authorize! :dashboard, proposal
|
|
|
|
Dashboard::ExecutedAction.create(proposal: proposal, action: dashboard_action,
|
|
executed_at: Time.current)
|
|
redirect_to request.referer
|
|
end
|
|
|
|
def unexecute
|
|
authorize! :dashboard, proposal
|
|
|
|
Dashboard::ExecutedAction.where(proposal: proposal, action: dashboard_action).first.destroy
|
|
|
|
redirect_to request.referer
|
|
end
|
|
|
|
private
|
|
|
|
def dashboard_action
|
|
@dashboard_action ||= Dashboard::Action.find(params[:id])
|
|
end
|
|
end
|