<?php
namespace App\Controller\Remises;
use App\Entity\Clients\Categorie;
use App\Entity\Remises\Remise;
use App\Entity\Remises\RemiseCategorieClient;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
class RemiseCategorieClientController extends AbstractController
{
/**
* @Route("/remise/checkbox/categorie/client", name="dtc_remise_categorie_client_checkbox")
*/
public function listerCategorieClientCheckboxAction(Request $request, $remise = [], EntityManagerInterface $em)
{
$id = '';
$repo_remise = $em->getRepository(Remise::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_remise_client_categorie = $em->getRepository(RemiseCategorieClient::class);
$id = $request->query->get('id');
$url = $this->generateUrl('dtc_remise_categorie_client_checkbox', []);
if ($request->query->get('remise') != '') {
$remise = $repo_remise->find($request->query->get('remise'));
}
$categories = $repo_categorie->getCategorieEnfant($id);
$tabCategories = [];
foreach ($categories as $c) {
$c['checked'] = 0;
$c['totalSousCategorie'] = count($repo_categorie->findBy(["categorieParent" => $c]));
$c['selection'] = 0;
if (is_object($remise) and is_object($repo_remise_client_categorie->findOneBy(['remise' => $remise, 'categorie' => $c]))) {
$c['checked'] = 1;
}
$tabCategories[] = $c;
}
$categories = $tabCategories;
if ($request->isXmlHttpRequest()) {
$rendu = $this->renderView(
'Clients/Categorie/checkbox.html.twig',
['categories' => $categories, 'remise' => $remise, 'url' => $url, 'objet' => 'remise', 'name' => 'categoriesclient']
);
return new JsonResponse(['rendu' => $rendu]);
}
return $this->render('Clients/Categorie/checkbox.html.twig', ['categories' => $categories, 'remise' => $remise, 'url' => $url, 'objet' => 'remise', 'name' => 'categoriesclient']
);
}
/**
* @Route("/remise/categorie-client/edit/{remise}/{categorie}", name="dtc_remise_categorie_client_edit")
*/
public function editRemiseCategorieClientAction(Request $request, Remise $remise, Categorie $categorie, EntityManagerInterface $em)
{
$repo_remise = $em->getRepository(Remise::class);
$repo_categorie_client = $em->getRepository(Categorie::class);
$repo_remise_categorie_client = $em->getRepository(RemiseCategorieClient::class);
$remise_categorie = $repo_remise_categorie_client->findOneBy(['remise' => $remise, "categorie" => $categorie]);
if (is_object($remise_categorie)) {
$em->remove($remise_categorie);
} else {
$remiseCategorieClient = new RemiseCategorieClient();
$remiseCategorieClient->setRemise($remise);
$remiseCategorieClient->setCategorie($categorie);
$em->persist($remiseCategorieClient);
}
$em->flush();
$rendu = 1;
return new JsonResponse(['rendu' => $rendu]);
}
}