<?php
namespace App\Controller;
use App\Entity\JoursFermetures;
use App\Entity\Tranches;
use App\Form\JoursFermeturesType;
use App\Repository\JoursFermeturesRepository;
use App\Repository\AvocatsRepository;
use App\Repository\LieuxRepository;
use App\Repository\TranchesRepository;
use Datetime;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/jours/fermetures")
*/
class JoursFermeturesController extends AbstractController
{
/**
* @Route("/", name="app_jours_fermetures_index", methods={"GET"})
*/
public function index(JoursFermeturesRepository $joursFermeturesRepository): Response
{
return $this->render('jours_fermetures/index.html.twig', [
'jours_fermetures' => $joursFermeturesRepository->findAll(),
]);
}
/**
* @Route("/new/{lieu}/{avocat}", name="app_jours_fermetures_new", methods={"GET", "POST"})
*/
public function new(Request $request, $lieu, $avocat, TranchesRepository $tranchesRepo, JoursFermeturesRepository $joursFermeturesRepository, AvocatsRepository $avocatsRepo,LieuxRepository $lieuxRepo): Response
{
$joursFermeture = new JoursFermetures();
$form = $this->createForm(JoursFermeturesType::class, $joursFermeture);
$form->handleRequest($request);
$lieuGet = $lieu;
$avocatGet = $avocat;
$joursOuvertures = $joursFermeturesRepository->findBy(array('Avocats'=>$avocatGet,'Lieux'=>$lieu),array('Date'=>'asc'));
if ($form->isSubmitted() && $form->isValid()) {
$joursOuverturesExist = $joursFermeturesRepository->findOneBy(array('Avocats'=>$avocatGet,'Lieux'=>$lieu,'Date'=>$joursFermeture->getDate()));
if(empty($joursOuverturesExist))
{
if(!empty($_POST['lieux']))
{
$lieu = $lieuxRepo->findOneById($_POST['lieux']);
$joursFermeture->setLieux($lieu);
}
if(!empty($_POST['avocats']))
{
$avocat = $avocatsRepo->findOneById($_POST['avocats']);
$joursFermeture->setAvocats($avocat);
}
$joursFermeture->setAvocats($this->getUser()->getAvocats());
$joursFermeturesRepository->add($joursFermeture, true);
$start = strtotime($joursFermeture->getDate()->format('Y-m-d'). ' 06:00:00');
$end = strtotime($joursFermeture->getDate()->format('Y-m-d'). ' 22:00:00');
for ($i = $start; $i <= $end; $i = $i+1800) {
$tranche = new Tranches();
$d = date('Y-m-d H:i:s',$i);
$tranche->setDate(new Datetime($d));
$tranche->setOuvert(false);
$tranche->setJoursFermetures($joursFermeture);
$tranche->setOccupe(false);
$tranchesRepo->add($tranche,true);
}
return $this->redirectToRoute('app_jours_fermetures_new', ['lieu'=>$lieuGet,'avocat'=>$avocatGet], Response::HTTP_SEE_OTHER);
}
else
{
return $this->redirectToRoute('app_jours_fermetures_new', ['lieu'=>$lieuGet,'avocat'=>$avocatGet,'erreur'=>'exist'], Response::HTTP_SEE_OTHER);
}
}
return $this->renderForm('jours_fermetures/new.html.twig', [
'jours_fermeture' => $joursFermeture,
'form' => $form,
'avocats'=>$avocatsRepo->findAll(),
'lieux'=>$lieuxRepo->findAll(),
'lieuGet'=>$lieuGet,
'avocatGet'=>$avocatGet,
'joursOuvertures'=>$joursOuvertures
]);
}
/**
* @Route("/{id}", name="app_jours_fermetures_show", methods={"GET"})
*/
public function show(JoursFermetures $joursFermeture): Response
{
return $this->render('jours_fermetures/show.html.twig', [
'jours_fermeture' => $joursFermeture,
]);
}
/**
* @Route("/{id}/edit", name="app_jours_fermetures_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, JoursFermetures $joursFermeture, JoursFermeturesRepository $joursFermeturesRepository): Response
{
$form = $this->createForm(JoursFermeturesType::class, $joursFermeture);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$joursFermeturesRepository->add($joursFermeture, true);
return $this->redirectToRoute('app_jours_fermetures_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('jours_fermetures/edit.html.twig', [
'jours_fermeture' => $joursFermeture,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_jours_fermetures_delete", methods={"POST"})
*/
public function delete(Request $request, JoursFermetures $joursFermeture, JoursFermeturesRepository $joursFermeturesRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$joursFermeture->getId(), $request->request->get('_token'))) {
$joursFermeturesRepository->remove($joursFermeture, true);
}
return $this->redirectToRoute('app_jours_fermetures_index', [], Response::HTTP_SEE_OTHER);
}
}