Files
MKM/app/Actions/Branch/StoreBranchSeries.php
2024-08-05 08:04:35 +08:00

31 lines
898 B
PHP

<?php
namespace App\Actions\Branch;
use App\Actions\BaseAction;
use App\Commands\Series\CreateSeriesCommand;
use App\DataObjects\CreateBranchDTO;
use App\DataObjects\CreateSeriesDTO;
use Spatie\LaravelData\Data;
class StoreBranchSeries extends BaseAction
{
public function __construct(
private CreateSeriesCommand $createSeriesCommand
) {}
public function __invoke(CreateBranchDTO|Data $payload, \Closure $next)
{
try {
$seriesPayload = CreateSeriesDTO::from(['branch_id' => $payload->branch->id, 'series' => $payload->data['series'], 'is_start' => true]);
$payload->series = $this->createSeriesCommand->execute($seriesPayload->toArray());
return $next($payload);
} catch (\Exception $exception) {
throw new \LogicException('Failed to create branch series', $exception->getMessage());
}
}
}