*/ readonly class AddMonitorHandler implements HandlerInterface { public function __construct( private MonitorRepository $movieMonitorRepository, private UserRepository $userRepository, ) {} public function handle(CommandInterface $command): ResultInterface { $user = $this->userRepository->find($command->userId); $monitor = (new Monitor()) ->setUser($user) ->setTmdbId($command->tmdbId) ->setImdbId($command->imdbId) ->setTitle($command->title) ->setMonitorType($command->monitorType) ->setSeason($command->season) ->setEpisode($command->episode) ->setCreatedAt(new DateTimeImmutable()) ->setSearchCount(0) ->setStatus('New'); $this->movieMonitorRepository->getEntityManager()->persist($monitor); $this->movieMonitorRepository->getEntityManager()->flush(); return new AddMonitorResult( status: 'OK', result: [ 'monitor' => $monitor, ] ); } }