66 lines
2.8 KiB
PHP
66 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Modules\Taxi\App\DTO;
|
|
|
|
use Modules\Taxi\App\Http\Requests\TaxiOrderRequest;
|
|
|
|
/**
|
|
* Класс для формирования DTO с данными по заказу на такси
|
|
*/
|
|
class TaxiOrderDTO
|
|
{
|
|
public function __construct(
|
|
public readonly int | null $id,
|
|
public readonly string | null $emp_login,
|
|
public readonly string $emp_phone,
|
|
public readonly string $taxi_date,
|
|
public readonly string $taxi_time,
|
|
public readonly string $taxi_address_from,
|
|
public readonly string $taxi_address_to,
|
|
public readonly int $cancel_rqst = 0,
|
|
) {}
|
|
|
|
/**
|
|
* Метод формирования DTO с данными по заказу такси
|
|
*
|
|
* По сути, простой сеттер, позволяющий создать для обрабатываемого объекта данных экземпляр класса для более удобного взаимодействия с ним, более стандартизированного и более надежного (так как все параметры прописаны в одном месте)
|
|
* Использование self позволяет нам не зависеть от названия текущего класса, если мы захотим его переименовать
|
|
*
|
|
* @param TaxiOrderRequest $rqst запрос с валидными данными по заказу, пришедшими с фронта
|
|
* @param string $rqstMethod метод обрабатываемого запроса. Обновление или создание, например
|
|
* @return self
|
|
*/
|
|
public static function setTaxiOrderDTO(TaxiOrderRequest $rqst, string $rqstMethod): self
|
|
{
|
|
$validated = $rqst->validated();
|
|
|
|
switch ($rqstMethod) {
|
|
case 'PATCH':
|
|
return new self(
|
|
id: $validated['id'],
|
|
//При обновлении запроса логин пользователя должен оставаться неизменным
|
|
emp_login: $rqst->emp_login,
|
|
emp_phone: $validated['emp_phone'],
|
|
taxi_date: $validated['taxi_date'],
|
|
taxi_time: $validated['taxi_time'],
|
|
taxi_address_from: $validated['taxi_address_from'],
|
|
taxi_address_to: $validated['taxi_address_to'],
|
|
cancel_rqst: $validated['cancel_rqst'] ?? null,
|
|
);
|
|
break;
|
|
default:
|
|
return new self(
|
|
id: $validated['id'] ?? null,
|
|
emp_login: $validated['emp_login'],
|
|
emp_phone: $validated['emp_phone'],
|
|
taxi_date: $validated['taxi_date'],
|
|
taxi_time: $validated['taxi_time'],
|
|
taxi_address_from: $validated['taxi_address_from'],
|
|
taxi_address_to: $validated['taxi_address_to'],
|
|
cancel_rqst: $validated['cancel_rqst'] ?? null,
|
|
);
|
|
break;
|
|
}
|
|
}
|
|
}
|