From 825d47797bcbcaca20b39b76cb77e407a7239a86 Mon Sep 17 00:00:00 2001 From: "S. Hattry" Date: Thu, 24 Nov 2022 13:15:21 +0100 Subject: [PATCH] Add cancel order button for the customer --- app/Http/Controllers/CustomerController.php | 27 ++++++++++++ app/Mail/OrderCanceledConfirmMail.php | 47 +++++++++++++++++++++ routes/web.php | 1 + 3 files changed, 75 insertions(+) create mode 100644 app/Mail/OrderCanceledConfirmMail.php diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 53f1f40..c019f5f 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Http\Requests\CustomerRegisterRequest; use App\Http\Requests\LoginRequest; use App\Http\Requests\UpdateInfosRequest; +use App\Mail\OrderCanceledConfirmMail; use App\Mail\PasswordResetMail; use App\Mail\RegisterConfirmMail; use App\Models\Customers; @@ -12,6 +13,7 @@ use App\Models\Magasin; use App\Models\Order; use App\Models\PasswordReset; use App\Models\Salarie; +use App\Models\Setting; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -455,6 +457,31 @@ class CustomerController extends Controller return view('customer.order-detail', compact('order', 'magasin')); } + /** + * mise au statut annulé d'une commande + * + * @param string $reference + * @return \Illuminate\Http\RedirectResponse + */ + public function cancelOrder(string $reference) + { + $order = Order::where('reference', $reference)->first(); + $order->status_id = 7; + $order->save(); + + // Envoi du mail de confirmation aux admins site. + $toMailSetting = Setting::where('key', 'send_order_confirm_mail_to')->first(); + if (empty($toMailSetting->value)) { + $toMail = config('mail.from.address'); + } else { + $toMail = $toMailSetting->value; + } + + Mail::to($toMail)->queue(new OrderCanceledConfirmMail($order)); + + return back()->with('success', "La commande " . $order->reference . " à été annulée."); + } + /** * delete customers * diff --git a/app/Mail/OrderCanceledConfirmMail.php b/app/Mail/OrderCanceledConfirmMail.php new file mode 100644 index 0000000..4e7d316 --- /dev/null +++ b/app/Mail/OrderCanceledConfirmMail.php @@ -0,0 +1,47 @@ +order = $order; + } + + /** + * Build the message. + * + * @return $this + */ + public function build() + { + $order = $this->order; + + return $this->subject( + "Commande " . config('theme.site_name') . " n°" . $order->reference . " a été annulée." + )->view('mails.order-canceled-confirm', compact('order')); + } +} diff --git a/routes/web.php b/routes/web.php index eefba9a..ab723e6 100644 --- a/routes/web.php +++ b/routes/web.php @@ -222,6 +222,7 @@ Route::name('account.') )->name('change-password'); Route::get('/commandes', [CustomerController::class, 'myOrders'])->name('my-orders'); Route::get('/commandes/{reference}', [CustomerController::class, 'orderDetail'])->name('order-detail'); + Route::get('/commandes/{reference}/annuler', [CustomerController::class, 'cancelOrder'])->name('cancel-order'); } );