/** * Update contract status * @param $contract_id * @param Request $request * @param Guard $auth * @return Response */ public function updateStatus($contract_id, Request $request, Guard $auth) { $status = trim(strtolower($request->input('state'))); $permission = ['completed' => 'complete', 'rejected' => 'reject', 'published' => 'publish']; if (!$auth->user()->can(sprintf('%s-metadata', $permission[$status]))) { return back()->withError(trans('contract.permission_denied')); } if ($this->contract->updateStatus($contract_id, $status, $request->input('type'))) { return back()->withSuccess(trans('contract.status_update')); } return back()->withError(trans('contract.invalid_status')); }