Add cancel order button for the customer

This commit is contained in:
S. Hattry 2022-11-24 13:15:21 +01:00
parent e1820ba1ac
commit 825d47797b
3 changed files with 75 additions and 0 deletions

View file

@ -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
*

View file

@ -0,0 +1,47 @@
<?php
namespace App\Mail;
use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class OrderCanceledConfirmMail extends Mailable
{
use Queueable;
use SerializesModels;
/**
* The Order
*
* @var \App\Models\Order
*/
private $order;
/**
* Create a new message instance.
*
* @param \App\Models\Order $order
*
* @return void
*/
public function __construct(Order $order)
{
$this->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'));
}
}

View file

@ -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');
}
);