/** * duplicate activity * @param $activityId * @param IatiIdentifierRequest $request * @return mixed */ public function duplicateActivityAction($activityId, IatiIdentifierRequest $request) { $activityData = $this->activityManager->getActivityData($activityId); if (Gate::denies('ownership', $activityData)) { return redirect()->route('activity.index')->withResponse($this->getNoPrivilegesMessage()); } $this->authorize('add_activity', $activityData); $newItem = $activityData->replicate(); $input = $request->all(); $newItem->identifier = ["activity_identifier" => $input['activity_identifier'], "iati_identifier_text" => $input['iati_identifier_text']]; $newItem->activity_workflow = 0; $newItem->published_to_registry = 0; $result = $this->activityManager->duplicateActivityAction($newItem); if (!$result) { $response = ['type' => 'danger', 'code' => ['duplication_failed', []]]; return redirect()->back()->withInput()->withResponse($response); } $response = ['type' => 'success', 'code' => ['duplicated', ['url' => route('activity.show', [$newItem->id])]]]; return redirect('/activity')->withResponse($response); }