<?php
namespace App\Controller;
use App\Entity\TypeUsage;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Contracts\Translation\TranslatorInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use App\Form\TypeUsageForm;
class TypeUsageController extends AbstractController
{
/**
* @Route("/settings/types/usage", name="type_usage")
*/
public function indexAction(Request $request, TranslatorInterface $translator)
{
$user = $this->getUser();
$typeUsage = new TypeUsage();
$errors = [];
$form = $this->createForm(TypeUsageForm::class, $typeUsage);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$typeUsage = $form->getData();
$em = $this->getDoctrine()->getManager();
$em->persist($typeUsage);
$em->flush();
return $this->redirectToRoute('type_usage');
}
$validator = $this->get('validator');
$errors = $validator->validate($typeUsage);
}
$list = $this->getDoctrine()->getRepository(TypeUsage::class)->findAll();
return $this->render('types/default.html.twig', [
'action' => 'insert',
'page_title' => $translator->trans('Usage Type'),
'box_title' => '<i class="fa fa-plus-circle fa-fw"></i> '.$translator->trans('Add new'),
'path_default' => 'type_usage',
'path_update' => 'type_usage_update',
'path_delete' => 'type_usage_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @Route("/settings/types/usage/edit/{id}", name="type_usage_update")
*/
public function updateAction(Request $request, TypeUsage $typeUsage, TranslatorInterface $translator)
{
$user = $this->getUser();
$errors = [];
$form = $this->createForm(TypeUsageForm::class, $typeUsage);
$form->handleRequest($request);
if ($form->isSubmitted() && $user->hasRole("ROLE_SUPER_ADMIN")) {
if($form->isValid()){
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('type_usage');
}
$validator = $this->get('validator');
$errors = $validator->validate($typeUsage);
$this->getDoctrine()->getManager()->detach($typeUsage);
}
$list = $this->getDoctrine()->getRepository(TypeUsage::class)->findAll();
return $this->render('types/default.html.twig', [
'action' => 'update',
'page_title' => $translator->trans('Usage Type'),
'box_title' => '<i class="fa fa-edit fa-fw"></i> '.$translator->trans('Edit'),
'path_default' => 'type_usage',
'path_update' => 'type_usage_update',
'path_delete' => 'type_usage_delete',
'form' => $form->createView(),
'list' => $list,
'errors' => $errors
]);
}
/**
* @IsGranted("ROLE_SUPER_ADMIN")
* @Route("/settings/types/usage/delete/{id}", name="type_usage_delete")
*/
public function deleteAction($id, TranslatorInterface $translator)
{
$em = $this->getDoctrine()->getManager();
$typeUsage = $em->getRepository(TypeUsage::class)->find($id);
$msgError = null;
try {
$em->remove($typeUsage);
$em->flush();
} catch (\Exception $e) {
$msgError = $translator->trans('deleteError');
}
return $this->redirectToRoute('type_usage', array("msgError"=>$msgError));
}
}