From 1a9d95bb0475f3557eafe7313d262462f0002307 Mon Sep 17 00:00:00 2001 From: Antoine Le Gonidec Date: Wed, 17 Jul 2024 16:21:51 +0200 Subject: [PATCH] Add the ability to edit an existing Customers Group --- .../Controllers/CustomersGroupsController.php | 32 +++++++++++-------- Http/routes.php | 25 ++++++++++++--- .../{create.blade.php => edit.blade.php} | 0 .../views/groups/partials/edit_form.blade.php | 12 +++++-- 4 files changed, 48 insertions(+), 21 deletions(-) rename Resources/views/groups/{create.blade.php => edit.blade.php} (100%) diff --git a/Http/Controllers/CustomersGroupsController.php b/Http/Controllers/CustomersGroupsController.php index 9195f42..1404512 100644 --- a/Http/Controllers/CustomersGroupsController.php +++ b/Http/Controllers/CustomersGroupsController.php @@ -33,6 +33,11 @@ class CustomersGroupsController extends Controller { } public function create() { + $group = new CustomersGroup(); + return $this->update($group); + } + + public function update(CustomersGroup $group) { // Get the list of Mailboxes the current User is allowed to access. $user = auth()->user(); $mailboxes = $user->mailboxesCanView(); @@ -49,9 +54,7 @@ class CustomersGroupsController extends Controller { ->flatten() ->sortBy('email'); - $group = new CustomersGroup(); - - return view('mmfcustomersgroups::groups/create', [ + return view('mmfcustomersgroups::groups/edit', [ 'mailboxes' => $mailboxes, 'customers' => $customers, 'emails' => $emails, @@ -59,11 +62,18 @@ class CustomersGroupsController extends Controller { ]); } - public function update() { - // TODO - } - public function save(Request $request) { + // Get the Customer Group that should be updated, + // or create a new one. + $group = ( $request->customer_id ) ? + CustomersGroup::find($request->customer_id): + new CustomersGroup(); + + $group->name = $request->name; + $group->mailbox_id = $request->mailbox; + // Save early to set the Group id, before setting the relationships. + $group->save(); + // Convert the list of Emails into a list of Customers. foreach ( $request->emails as $email_id ) { $email = Email::find($email_id); @@ -72,13 +82,7 @@ class CustomersGroupsController extends Controller { // Drop duplicates from the list of Customers. $customers = collect($customers)->unique(); $customers_id = $customers->pluck('id'); - - $group = new CustomersGroup(); - $group->name = $request->name; - $group->mailbox_id = $request->mailbox; - // Save early to set the Group id, before setting the relationships. - $group->save(); - $group->customers()->attach($customers_id); + $group->customers()->sync($customers_id); return $this->list(); } diff --git a/Http/routes.php b/Http/routes.php index 9716617..e253130 100644 --- a/Http/routes.php +++ b/Http/routes.php @@ -13,9 +13,26 @@ Route::group( 'namespace' => 'Modules\MMFCustomersGroups\Http\Controllers' ], function() { - Route::get('/groups/list', ['uses' => CustomersGroupsController::class . '@list', 'laroute' => true])->name('groups.list'); - Route::get('/groups/create', ['uses' => CustomersGroupsController::class . '@create', 'laroute' => true])->name('groups.create'); - Route::post('/groups/create', ['uses' => CustomersGroupsController::class . '@save', 'laroute' => true]); - Route::get('/groups/update', ['uses' => CustomersGroupsController::class . '@update', 'laroute' => true])->name('groups.update'); + // TODO: Check if the "laroute" property is required. + Route::get('/groups/list', [ + 'uses' => CustomersGroupsController::class . '@list', + 'laroute' => true, + ])->name('groups.list'); + Route::get('/groups/create', [ + 'uses' => CustomersGroupsController::class . '@create', + 'laroute' => true, + ])->name('groups.create'); + Route::post('/groups/create', [ + 'uses' => CustomersGroupsController::class . '@save', + 'laroute' => true, + ]); + Route::get('/groups/{group}/edit', [ + 'uses' => CustomersGroupsController::class . '@update', + 'laroute' => true, + ])->name('groups.update'); + Route::post('/groups/{group}/edit', [ + 'uses' => CustomersGroupsController::class . '@save', + 'laroute' => true, + ]); } ); diff --git a/Resources/views/groups/create.blade.php b/Resources/views/groups/edit.blade.php similarity index 100% rename from Resources/views/groups/create.blade.php rename to Resources/views/groups/edit.blade.php diff --git a/Resources/views/groups/partials/edit_form.blade.php b/Resources/views/groups/partials/edit_form.blade.php index 47bc397..76cfd69 100644 --- a/Resources/views/groups/partials/edit_form.blade.php +++ b/Resources/views/groups/partials/edit_form.blade.php @@ -12,7 +12,13 @@
{{ csrf_field() }} - + +