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

41 lines
1.1 KiB
PHP

<?php
namespace App\ScheduledNode\UseCases;
use App\Exceptions\BadRequestException;
use App\ScheduledNode\ScheduledNode;
use App\ScheduledNode\ScheduledNodeRepository;
use App\User\UserRepository;
use DateTimeImmutable;
class GetTodaysSchedule
{
public function __construct(
private UserRepository $userRepo,
private ScheduledNodeRepository $scheduledNodeRepo,
) {}
/**
* @return ScheduledNode[]
*
* @throws BadRequestException
*/
public function execute(GetTodaysScheduleRequest $request): array
{
if ($request->date === null) {
throw new BadRequestException('date is required');
}
$date = new DateTimeImmutable($request->date);
$userId = $request->userId;
$user = $this->userRepo->find($userId);
$scheduledNodes = $this->scheduledNodeRepo->findByUser($user);
return array_filter(
$scheduledNodes,
function (ScheduledNode $node) use ($date) {
return $node->getDate() <= $date
&& $node->getCompleted() === false;
}
);
}
}