File: D:/HostingSpaces/brameda/brameda.nl/app/Komma/Shop/Orders/Kms/OrderMailService.php
<?php
namespace App\Komma\Shop\Orders\Kms;
use App\Komma\Auth\AuthMailService;
use App\Komma\Shop\Orders\Mail\OrderStatusUpdatedCustomer;
use App\Komma\Shop\Orders\Mail\OrderStatusUpdatedStaff;
use App\Komma\Shop\Orders\Models\Order;
use App\Komma\Users\Models\KmsUserRole;
use App\Komma\Users\Models\KmsUser;
use App\Komma\Users\Models\SiteUser;
/**
* Class OrderMailService
*
* A service responsible for sending mails about orders to staff and customers
*
* @see AuthMailService
* @package App\Komma\Shop\Orders\Kms
*/
class OrderMailService implements OrderMailServiceInterface
{
/**
* Mail a customer about their current order status
*
* @param Order $order
* @param SiteUser $customer
* @param string $additionalMessageText
*/
public function mailCustomerAboutCurrentOrderStatus(Order $order, SiteUser $customer, string $additionalMessageText = '')
{
\Log::debug('OrderMailService: Notifying customer with email address "'.$customer->email.'" (shipping email) about order status change.');
\Mail::to($customer->email)->send(new OrderStatusUpdatedCustomer($order, $customer, $additionalMessageText));
}
/**
* Mail Staff about an order's current status
*
* @param Order $order
* @param string $additionalMessageText
*/
public function mailStaffAboutCurrentOrderStatus(Order $order, string $additionalMessageText = '')
{
$order->load(['customer']);
KmsUser::whereIn('role', [KmsUserRole::Admin])->get(['id', 'email'])->each(function(KmsUser $staffMember) use($order, $additionalMessageText) {
\Log::debug('OrderMailService: Notifying staffMember with email address "'.$staffMember->email.'" about order status change.');
\Mail::to($staffMember->email)->send(new OrderStatusUpdatedStaff($order, $order->customer, $staffMember, $additionalMessageText));
});
}
}