user()->cannot('create', Resume::class)) { abort(403); } $newResume = new Resume(); $newResume->creator()->associate($request->user()); $newResume->save(); // Redirect to the edit page for the new resume return redirect()->route('resumes.edit', $newResume); } public function duplicate(Resume $resume) { $newResume = $resume->replicate(); $newResume->name = $resume->name . ' (Copy)'; $newResume->save(); foreach ($resume->componentsPlacements as $placement) { $newPlacement = $placement->replicate(); $newPlacement->resume_id = $newResume->id; $newPlacement->save(); } return redirect()->route('resumes.edit', $newResume); } /** * Store a newly created resource in storage. */ public function store(StoreResumeRequest $request) { // } /** * Display the specified resource. */ public function show(Resume $resume) { return redirect()->route('resumes.edit', $resume); } /** * Show the form for editing the specified resource. */ public function edit(Request $request, int $resumeId) { $resume = null; try { $resume = Resume::findOrFail($resumeId); } catch (ModelNotFoundException $e) { return redirect()->route(config('app.redirect_route')); } // Check if the user can edit the resume if ($request->user()->cannot('update', $resume)) { abort(403); } return Inertia::render('resumes/Edit', [ 'resume' => $resume->load('componentsPlacements.componentData.component', 'componentsPlacements.componentData.inputData.componentInput.dataType')->toArray() ]); } /** * Update the specified resource in storage. */ public function update(UpdateResumeRequest $request, Resume $resume) { $resume->update($request->validated()); } /** * Remove the specified resource from storage. */ public function destroy(Resume $resume) { $resume->delete(); return response()->json(null, 204); } }