<?php
namespace App\Controller;
use App\Entity\DomainVariation;
use App\Form\Type\DomainVariationType;
use App\Service\DomainVariationService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route(path="variation")
*/
class DomainVariationController extends AbstractController
{
const VARIATION_ID = 'variationId';
const NOTIFICATION_SUCCESS = 'notification-success';
/**
* @var DomainVariationService
*/
private DomainVariationService $domainVariationService;
/**
* constructor
*
* @param DomainVariationService $domainVariationService
*/
public function __construct(DomainVariationService $domainVariationService)
{
$this->domainVariationService = $domainVariationService;
}
/**
* Domain Variation index
*
* @Route(path="/", name="variation_index", methods={"GET"})
* @return Response
*/
public function indexAction(): Response
{
$lstVariations = $this->domainVariationService->getAll();
return $this->render('variation/list.html.twig', [
'lstVariations' => $lstVariations,
]);
}
/**
* Domain Variation new
*
* @Route(path="/new", name="variation_new", methods={"GET", "POST"})
* @param Request $request
* @return Response
*/
public function newAction(Request $request): Response
{
$variation = new DomainVariation();
$form = $this->createForm(DomainVariationType::class, $variation);
$form->handleRequest($request);
$errors = $this->domainVariationService->validate($variation);
if ($errors->count() === 0) {
if ($form->isSubmitted() && $form->isValid()) {
$this->domainVariationService->save($variation);
$this->addFlash(self::NOTIFICATION_SUCCESS, 'Variation created');
return $this->redirectToRoute('variation_index');
}
}
return $this->renderForm('variation/new.html.twig', [
'form' => $form,
'error' => $errors,
]);
}
/**
* AdServer-Domain Edit.
*
* @Route(path="/edit/{id}", name="variation_edit", methods={"GET", "POST"})
*
* @param Request $request
* @param int $id
* @return Response
*/
public function editAction(Request $request, int $id): Response
{
$variation = $this->domainVariationService->getById($id);
if (empty($variation)) {
throw new NotFoundHttpException('Variation not found!');
}
$form = $this->createForm(DomainVariationType::class, $variation);
$form->handleRequest($request);
$errors = $this->domainVariationService->validate($variation);
if ($errors->count() === 0) {
if ($form->isSubmitted() && $form->isValid()) {
$this->domainVariationService->save($variation);
$this->addFlash(self::NOTIFICATION_SUCCESS, 'Variation updated');
return $this->redirectToRoute('variation_index');
}
}
return $this->renderForm('variation/edit.html.twig', [
'form' => $form,
'error' => $errors,
]);
}
/**
* AdServer-Domain New.
*
* @Route(path="/delete", name="variation_delete", methods={"POST"})
*
* @param Request $request
* @return RedirectResponse
*/
public function deleteAction(Request $request): RedirectResponse
{
$id = $request->request->all()[self::VARIATION_ID] ?? null;
if (is_null($id)) {
throw new \InvalidArgumentException();
}
$variation = $this->domainVariationService->getById($id);
if (empty($variation)) {
throw new NotFoundHttpException('Variation not found!');
}
$this->domainVariationService->delete($variation);
$this->addFlash(self::NOTIFICATION_SUCCESS, 'Variation removed');
return $this->redirectToRoute('variation_index');
}
}