'Created Schedule', 'message' => 'You have successfully created a new Schedule' ]; } /** @var CanCreateSchedule */ private $canCreateSchedule; /** @var FetchesTransport */ private $fetchesTransport; /** @var CreatesSchedule */ private $createsSchedule; /** * CreateScheduleLogic constructor. * @param CanCreateSchedule $canCreateSchedule * @param FetchesTransport $fetchesTransport * @param CreatesSchedule $createsSchedule */ public function __construct(CanCreateSchedule $canCreateSchedule, FetchesTransport $fetchesTransport, CreatesSchedule $createsSchedule) { $this->canCreateSchedule = $canCreateSchedule; $this->fetchesTransport = $fetchesTransport; $this->createsSchedule = $createsSchedule; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException */ public function logic(Request $request) : JsonResponse { $object = new ScheduleObject($request->input('etd'), $request->input('eta'), ApprovalStatus::PENDING_SUBMISSION); $this->canCreateSchedule->passes($object); $query = $this->createsSchedule->execute($this->fetchesTransport->execute(['id' => $request->input('transport_id')]), $object); return $this->resourceResponse(new ScheduleResource($query)); } }