<?php
namespace App\Controller;
use App\Entity\TblOperationTravail;
use App\Form\OperationSearchType;
use App\Form\TblOperationTravailType;
use App\Repository\TblOperationTravailRepository;
use App\Service\OperationTravailService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
/**
* @Route("/pointage")
* @Security("is_granted('ROLE_ADMIN') or is_granted('ROLE_SUPER_ADMIN')")
*/
class TblOperationTravailController extends AbstractController
{
/**
* @Route("/", name="pointage_app")
*/
public function index(Request $request, OperationTravailService $operationService): Response
{
$operationSearch = $operationService->setOperationSearchForm();
$form = $this->createForm(OperationSearchType::class, $operationSearch);
$form->handleRequest($request);
$request->getSession()->set('operationSearch', $form->getData());
$data = $operationService->getDataForPointageCalendar();
return $this->render('operation_travail/calendar.html.twig', [
'data_calendar' => $data,
'formSearch' => $form->createView(),
'isSearchVide' => $operationSearch->isVide(),
]);
}
/**
* @Route("/new", name="app_tbl_operation_travail_new")
*/
public function new(Request $request, TblOperationTravailRepository $tblOperationTravailRepository, OperationTravailService $operationService): Response
{
$tblOperationTravail = new TblOperationTravail();
$operationSearch = $operationService->setOperationSearchForm();
!$operationSearch->personnel ?: $tblOperationTravail->setPersonnel($operationSearch->personnel);
$form = $this->createForm(TblOperationTravailType::class, $tblOperationTravail, ['action' => 'new']);
$form->handleRequest($request);
$codeResponse = $request->request->get('isNew') ? 200 : 422;
if ($form->isSubmitted() && $form->isValid()) {
$tblOperationTravailRepository->add($tblOperationTravail, true);
if ($request->isXmlHttpRequest()) {
return new Response(null, 204);
}
return $this->redirectToRoute('home', [], Response::HTTP_SEE_OTHER);
}
$template = $request->isXmlHttpRequest() ? '_form.html.twig' : 'new.html.twig';
return $this->render('operation_travail/' .$template, [
'tbl_operation_travail' => $tblOperationTravail,
'form' => $form->createView(),
], new Response(
null,
$form->isSubmitted() && !$form->isValid() ? $codeResponse : 200,
));
}
/**
* @Route("/pointageDatatableAjax", name="pointage_datatable_ajax", methods={"POST"})
*/
public function adminAjax(Request $request, OperationTravailService $operationService): JsonResponse
{
$params = [
"paie" =>false,
"pointage" =>true,
"resultats-paie"=>false,
"resultats-pointage"=>true,
];
$operationJson = $operationService->getOperationAjax($request, $params);
return new JsonResponse($operationJson);
}
/**
* @Route("/{id}/edit", name="app_tbl_operation_travail_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, TblOperationTravail $tblOperationTravail, TblOperationTravailRepository $tblOperationTravailRepository): Response
{
$form = $this->createForm(TblOperationTravailType::class, $tblOperationTravail, ['action' => 'edit']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$tblOperationTravailRepository->add($tblOperationTravail, true);
return $this->redirectToRoute('paie_resultats', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('operation_travail/edit.html.twig', [
'tbl_operation_travail' => $tblOperationTravail,
'form' => $form,
]);
}
/**
* @Route("/editModal", name="app_tbl_operation_travail_edit_modal", methods={"GET", "POST"})
*/
public function editModal(Request $request, TblOperationTravailRepository $tblOperationTravailRepository): Response
{
$operationId = $request->get('operationId');
$tblOperationTravail = $this->getDoctrine()
->getRepository(TblOperationTravail::class)
->find($operationId);
$form = $this->createForm(TblOperationTravailType::class, $tblOperationTravail, ['action' => 'editModal']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$tblOperationTravailRepository->add($tblOperationTravail, true);
return $this->redirectToRoute('pointage_app', [], Response::HTTP_SEE_OTHER);
}
return $this->render('operation_travail/_form_edit_modal.html.twig', [
'tbl_operation_travail' => $tblOperationTravail,
'form' => $form->createView(),
]);
}
/**
* @Route("/editModal/afterEdit/{id}", name="app_tbl_operation_travail_edit_modal_after", methods={"GET", "POST"})
*/
public function editModalAfterEdit(TblOperationTravail $tblOperationTravail, Request $request, TblOperationTravailRepository $tblOperationTravailRepository): Response
{
$form = $this->createForm(TblOperationTravailType::class, $tblOperationTravail, ['action' => 'editModal']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$tblOperationTravailRepository->add($tblOperationTravail, true);
return $this->redirectToRoute('pointage_app', [], Response::HTTP_SEE_OTHER);
}
return $this->render('operation_travail/_form_edit_modal.html.twig', [
'tbl_operation_travail' => $tblOperationTravail,
'form' => $form->createView(),
]);
}
/**
* @Route("/delete", name="app_tbl_operation_travail_delete", methods={"POST"})
*/
public function delete(Request $request, TblOperationTravailRepository $tblOperationTravailRepository): Response
{
$operationId = $request->get('operationId');
$tblOperationTravail = $this->getDoctrine()
->getRepository(TblOperationTravail::class)
->find($operationId);
if ($tblOperationTravail) {
$tblOperationTravailRepository->remove($tblOperationTravail, true);
}
return $this->redirectToRoute('pointage_app', [], Response::HTTP_SEE_OTHER);
}
}