Bläddra i källkod

Script pour pasage en vu quand commenté

Sangfroid 5 månader sedan
förälder
incheckning
785414a83d
1 ändrade filer med 55 tillägg och 0 borttagningar
  1. 55 0
      src/Command/SeenWhenCommentCommand.php

+ 55 - 0
src/Command/SeenWhenCommentCommand.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Command;
+
+use App\Repository\CommentaireRepository;
+use Doctrine\ORM\EntityManagerInterface;
+use Symfony\Component\Console\Attribute\AsCommand;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+
+#[AsCommand(
+    name: 'app:seen-when-comment',
+    description: 'Passer les films en vu lorsque commenté par le user',
+)]
+class SeenWhenCommentCommand extends Command
+{
+    public function __construct(
+        protected EntityManagerInterface $em,
+        protected CommentaireRepository $commentaireRepository
+    )
+    {
+        parent::__construct();
+    }
+
+    protected function configure(): void
+    {
+        $this
+            ->addOption('dry-run', null, InputOption::VALUE_NONE, 'Juste tester dans enregistrer')
+        ;
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output): int
+    {
+        $io = new SymfonyStyle($input, $output);
+        
+        $commentaires = $this->commentaireRepository->findAll();
+        foreach($commentaires as $commentaire) {
+            if (!$commentaire->getFilm()->getUsersWhoSeen()->contains($commentaire->getUser())) {
+                $commentaire->getFilm()->addUserWhoSeen($commentaire->getUser());
+                $io->text(sprintf("Film : %s --- User : %s", $commentaire->getFilm()->getTitre(), $commentaire->getUser()->getUserIdentifier()));
+            }
+        }
+
+        if (!$input->getOption('dry-run')) {
+            $this->em->flush();
+        }
+
+        $io->success('Les films commentés par un utilisateur sont maintenant passs en "vu"');
+
+        return Command::SUCCESS;
+    }
+}