Files
stat_partner/src/Controller/BroadcastController.php
2025-12-29 16:41:58 +01:00

89 lines
2.8 KiB
PHP

<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\State;
use App\Entity\Investigation;
use App\Repository\StateRepository;
use App\Repository\BroadcastRepository;
use App\Repository\InvestigationRepository;
use App\Form\BroadcastType;
#[Route('/broadcast')]
final class BroadcastController extends AbstractController
{
/**
* @param EntityManagerInterface $em
* @param StateRepository $stateRepository
* @param BroadcastRepository $broadcastRepository
* @param InvestigationRepository $investigationRepository
* @return $this
*/
public function __construct(
private EntityManagerInterface $em,
private StateRepository $stateRepository,
private BroadcastRepository $broadcastRepository,
private InvestigationRepository $investigationRepository,
) {
$this->em = $em;
$this->stateRepository = $stateRepository;
$this->broadcastRepository = $broadcastRepository;
$this->investigationRepository = $investigationRepository;
}
#[Route('/index', name: 'app_broadcast_index')]
public function index(): Response
{
$investigations = $this->investigationRepository->findInvestigationAdminValidated($this->getUser());
$broadcasts = $this->broadcastRepository->findByUser($this->getUser());
return $this->render('broadcast/index.html.twig', [
'investigations' => $investigations,
'broadcasts' => $broadcasts,
]);
}
#[Route('/add/{id}', name: 'app_broadcast_add')]
public function add(Request $request, Investigation $investigation): Response
{
$form = $this->createForm(BroadcastType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$broadcast = $form->getData();
$broadcast->setInvestigation($investigation);
$broadcast->setCreateBy($this->getUser());
$broadcast->setCost(150);
$this->em->persist($broadcast);
$this->em->flush();
$investigation->setLastState(31);
$this->em->persist($investigation);
$this->em->flush();
$this->stateRepository->addState($investigation, 3, 1, $broadcast);
$this->addFlash('danger', " <strong>Well done!</strong> You successfully read this important alert message.");
return $this->redirectToRoute('app_broadcast_index');
}
return $this->render('broadcast/add.html.twig', [
'form' => $form->createView(),
'investigation' => $investigation,
]);
}
}