Goal-Calibration/app/ScheduledNode/UseCases/CreateScheduledNode.php

34 lines
875 B
PHP

<?php
namespace App\ScheduledNode\UseCases;
use App\Plan\PlanRepository;
use App\ScheduledNode\ScheduledNode;
use App\ScheduledNode\CreateScheduledNodeDto;
use App\ScheduledNode\ScheduledNodeRepository;
use DomainException;
class CreateScheduledNode
{
public function __construct(
private ScheduledNodeRepository $scheduledNodeRepo,
private PlanRepository $planRepo,
) {}
public function execute(
CreateScheduledNodeRequest $request
): ScheduledNode {
$id = $request->planId;
$plan = $this->planRepo->find($id);
if ($plan === null) {
throw new DomainException("Plan with id: $id doesnt exist");
}
return $this->scheduledNodeRepo->create(
new CreateScheduledNodeDto(
date: $request->date,
plan: $plan,
)
);
}
}