From 76690962c55de3173106416fcd98b877a4a921ab Mon Sep 17 00:00:00 2001 From: James Collins Date: Wed, 1 May 2024 20:57:20 +1000 Subject: [PATCH] add workshop duplication --- app/Http/Controllers/WorkshopController.php | 21 +++++++++++++++++++ .../views/admin/workshop/index.blade.php | 5 +++-- routes/web.php | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/WorkshopController.php b/app/Http/Controllers/WorkshopController.php index d55af91..c7f7502 100644 --- a/app/Http/Controllers/WorkshopController.php +++ b/app/Http/Controllers/WorkshopController.php @@ -237,4 +237,25 @@ class WorkshopController extends Controller return redirect()->route('admin.workshop.index'); } + + /** + * Duplicate the specified resource. + */ + public function admin_duplicate(Workshop $workshop) + { + $newWorkshop = $workshop->replicate(); + $newWorkshop->title = $newWorkshop->title . ' (copy)'; + $newWorkshop->status = 'draft'; + $newWorkshop->save(); + + foreach($workshop->files as $file) { + $newWorkshop->files()->attach($file->name); + } + + session()->flash('message', 'Workshop has been duplicated'); + session()->flash('message-title', 'Workshop duplicated'); + session()->flash('message-type', 'success'); + + return redirect()->route('admin.workshop.edit', $newWorkshop); + } } diff --git a/resources/views/admin/workshop/index.blade.php b/resources/views/admin/workshop/index.blade.php index 85e5568..23ce11f 100644 --- a/resources/views/admin/workshop/index.blade.php +++ b/resources/views/admin/workshop/index.blade.php @@ -38,8 +38,9 @@ {{ \Carbon\Carbon::parse($workshop->starts_at)->format('M j Y, g:i a') }}
- - + + +
diff --git a/routes/web.php b/routes/web.php index ae86bd5..ef82583 100644 --- a/routes/web.php +++ b/routes/web.php @@ -80,6 +80,7 @@ Route::middleware('admin')->group(function () { Route::get('/admin/workshops', [WorkshopController::class, 'admin_index'])->name('admin.workshop.index'); Route::get('/admin/workshops/create', [WorkshopController::class, 'admin_create'])->name('admin.workshop.create'); + Route::get('/admin/workshops/{workshop}/duplicate', [WorkshopController::class, 'admin_duplicate'])->name('admin.workshop.duplicate'); Route::post('/admin/workshops', [WorkshopController::class, 'admin_store'])->name('admin.workshop.store'); Route::get('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_edit'])->name('admin.workshop.edit'); Route::put('/admin/workshops/{workshop}', [WorkshopController::class, 'admin_update'])->name('admin.workshop.update');