скрипты, отвечающие за отправку писем - либо напрямую, либо через создание различных джоб или запуска отправки по расписанию (тестировал)

This commit is contained in:
vasya
2026-04-05 20:33:55 +03:00
parent 9d940dd1b9
commit d2fc561c03
8 changed files with 327 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace Modules\Taxi\App\Mail;
use App\Mail\BaseMailerObj;
use Modules\Taxi\App\DTO\TaxiOrderDTO;
/**
* Базовый класс отправки письма по заказу такси. Объявляет обязательный к реализации метод формирования данных для отправки.
*/
abstract class BaseTaxiMail
{
/**
* Undocumented function
*
* @param TaxiOrderDTO $orderData
* @param integer|null $orderId идентификатор заказа такси
*/
public function __construct(
public TaxiOrderDTO $orderData,
public ?int $orderId
){
}
/**
* Метод формирует объект с данными письма для передачи в джобу
*
* @return BaseMailerObj базовый класс объекта параметров письма для мейлера
*/
abstract public function prepareDataForMail(): BaseMailerObj;
}
+39
View File
@@ -0,0 +1,39 @@
<?php
namespace Modules\Taxi\App\Mail;
use Modules\Taxi\App\DTO\TaxiOrderDTO;
use App\Mail\BaseMailerObj;
/**
* Класс формирования объекта с данными для передачи в джобу отправки письма. Наследует базовый класс отправки письма по такси, где объвляется обязательный метод
*/
class NewOrderMail extends BaseTaxiMail
{
public function __construct(
public TaxiOrderDTO $orderData,
public ?int $orderId)
{
}
/**
* Метод подготавливает данные письма для передачи в джобу
*
* @return BaseMailerObj
*/
public function prepareDataForMail(): BaseMailerObj
{
return new BaseMailerObj(
[$this->orderData->emp_login],
"Создана заявка на такси",
"Для вас создана заявка на такси № {$this->orderId}:
<ul>
<li><b>Дата:</b> {$this->orderData->taxi_date}</li>
<li><b>Время:</b> {$this->orderData->taxi_time}</li>
<li><b>Откуда:</b> {$this->orderData->taxi_address_from}</li>
<li><b>Куда:</b> {$this->orderData->taxi_address_to}</li>
</ul>",
config('taxi.name_ru'),
);
}
}