public function update($id, $permission_type, Request $request) { if ($id <= 1) { return \Redirect::back(); } $params = array_keys(\Request::route()->parameters()); $permissions = $request->all(); if (strpos($permission_type, 'management') === false) { $provider = $this->permissionsProvider; } else { $provider = $this->permissionManagementProvider; } $response = null; $type = $params[0]; if (empty($permissions['action_id'])) { $response = call_user_func([$provider, sprintf('add%sPermission', ucfirst($type))], $id, $permissions['action_admin_id']); $message = 'add'; } else { call_user_func([$provider, sprintf('remove%sPermission', ucfirst($type))], $id, $permissions['action_admin_id']); $message = 'del'; $response = $permissions['action_id']; } \Event::fire(new PermissionUpdated($permission_type, $id)); if ($request->ajax()) { return \Response::json(['response' => $response, 'message' => $message]); } else { \Flash::successUpdate(); return back(); } }