File: D:/HostingSpaces/SBogers10/shop.komma.nl/app/Orders/Mail/OrderStatusUpdatedStaff.php
<?php
namespace App\Orders\Mail;
use App\Checkout\CheckoutService;
use App\Orders\Models\Order;
use App\Orders\OrderStatus;
use Komma\KMS\Globalization\RegionInfo;
use Komma\KMS\Globalization\RegionInfoInterface;
use Komma\KMS\Users\Genders;
use Komma\KMS\Users\Models\KmsUser;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class OrderStatusUpdatedStaff extends Mailable
{
use Queueable, SerializesModels;
private Order $order;
private KmsUser $staffMember;
private CheckoutService $checkoutService;
private RegionInfo $regionInfo;
/**
* Create a new message instance.
*
* @param Order $order
* @param KmsUser $staffMember
* @see OrderStatus
*/
public function __construct(Order $order, KmsUser $staffMember)
{
$this->order = $order;
$this->staffMember = $staffMember;
$this->regionInfo = app(RegionInfoInterface::class);
$this->checkoutService = new CheckoutService();
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
//Prepare mail view data
$data = [
'showTotal' => true,
'order' => $this->order,
'vatRateTotals' => $this->checkoutService->getVatRateTotalsFromOrder($this->order),
'greeting' => __('form.form.salutation.informal.'.Genders::Unknown.'.with_salutation.short').' '.$this->staffMember->first_name.' '.$this->staffMember->last_name,
'body' => __('KMS::orders.mail.'.$this->order->status.'.staff.body', ['order_number' => $this->order->order_number]),
'button_text' => __('KMS::orders.mail.'.$this->order->status.'.staff.button_text'),
'closure' => __('KMS::orders.mail.'.$this->order->status.'.staff.closure'),
'name' => config('site.company.name'),
'regionInfo' => $this->regionInfo
];
//On certain order statuses we include order details.
$data['show_order_details'] = (
$this->order->status === OrderStatus::PENDING ||
$this->order->status === OrderStatus::AWAITING_FULFILLMENT
);
//Add the button url to the view parameters
switch ($this->order->status) {
case OrderStatus::DISPUTED:
$data['button_url'] = route('orders.show', ['order' => $this->order]);
break;
case OrderStatus::AWAITING_FULFILLMENT:
$data['button_url'] = route('orders.show', ['order' => $this->order]);
break;
}
$this->subject(__('KMS::orders.mail.'.$this->order->status.'.staff.subject', [
'order_number' => $this->order->order_number,
'order_status' => __('KMS::orders.status.'.$this->order->status),
]));
return $this->view('emails.shop.orderUpdateStaff', $data);
}
}