wip-feat: dispatches monitor commands for episodes, seasons, & shows

This commit is contained in:
2025-05-06 00:00:45 -05:00
parent 9166b4bbc8
commit 527adb73c1
33 changed files with 795 additions and 147 deletions

View File

@@ -3,11 +3,18 @@
namespace App\Controller;
use App\Download\Action\Command\MonitorMovieCommand;
use App\Download\Action\Handler\AddMovieMonitorHandler;
use App\Download\Action\Command\MonitorTvSeasonCommand;
use App\Download\Action\Command\MonitorTvShowCommand;
use App\Download\Action\Handler\MonitorMovieHandler;
use App\Download\Action\Input\AddMovieMonitorInput;
use App\Download\Action\Handler\MonitorTvSeasonHandler;
use App\Download\Action\Handler\MonitorTvShowHandler;
use App\Download\Action\Input\DownloadMediaInput;
use App\Download\Framework\Entity\Monitor;
use App\Download\Framework\Repository\DownloadRepository;
use App\Download\Framework\Repository\MonitorRepository;
use App\Download\Service\MediaFiles;
use DateTimeImmutable;
use Nihilarr\PTN;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
@@ -18,13 +25,28 @@ class DownloadController extends AbstractController
public function __construct(
private DownloadRepository $downloadRepository,
private MessageBusInterface $bus,
private readonly MonitorRepository $monitorRepository,
) {}
#[Route('/test', name: 'app_test')]
public function test(
MonitorMovieHandler $handler,
MonitorTvShowHandler $handler,
) {
$command = new MonitorMovieCommand(41);
$monitor = (new Monitor())
->setUser($this->getUser())
->setTmdbId('95396')
->setImdbId('tt11280740')
->setTitle('Severance')
->setMonitorType('tvshow')
->setSeason(1)
->setEpisode(null)
->setCreatedAt(new DateTimeImmutable())
->setSearchCount(0)
->setStatus('New');
$this->monitorRepository->getEntityManager()->persist($monitor);
$this->monitorRepository->getEntityManager()->flush();
$command = new MonitorTvShowCommand($monitor->getId());
$handler->handle($command);
return $this->json([
'status' => 200,
@@ -53,16 +75,4 @@ class DownloadController extends AbstractController
return $this->json(['status' => 200, 'message' => 'Added to Queue']);
}
#[Route('/monitor/movies/{tmdbId}/{imdbId}/{title}', name: 'app_add_movie_monitor', methods: ['GET', 'POST'])]
public function addMonitor(
AddMovieMonitorInput $input,
AddMovieMonitorHandler $handler,
) {
$handler->handle($input->toCommand());
return $this->json([
'status' => 200,
'message' => $input
]);
}
}