<?php
namespace App\Controller\Clients;
use App\Entity\Clients\Categorie;
use App\Entity\Clients\Client;
use App\Entity\Clients\ClientCategorie;
use App\Entity\Remises\Remise;
use App\Entity\Remises\RemiseCategorieClient;
use App\Form\Clients\CategorieModalType;
use App\Form\Clients\CategorieType;
use App\Form\Clients\SupprimerCategorieType;
use App\Library\Datatable\Util\Datatable;
use App\Security\Voter\EntityVoter;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use JMS\Serializer\SerializerBuilder;
use Knp\Component\Pager\PaginatorInterface;
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 Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class CategorieController extends AbstractController
{
/**
* @Route("/client/categorie/dupliquer/{id}", name="dtc_client_categorie_dupliquer")
*/
public function dupliquerAction(Request $request, Categorie $categorie, EntityManagerInterface $em, TranslatorInterface $translator)
{
$categorie_duplique = clone $categorie;
//$article_duplique->setId(null);
$categorie_duplique->setNom("COPIE ".$categorie_duplique->getNom());
$em->persist($categorie_duplique);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Categorie client dupliqué avec succès !')
);
return $this->redirectToRoute('dtc_client_categorie_liste');
}
/**
* @Route("/client/categorie/nouveau", name="dtc_client_categorie_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$categorie = new Categorie();
$user = $this->getUser();
$categorie->setUtilisateur($user);
$form = $this->createForm(CategorieType::class, $categorie);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($categorie);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Categorie ajouté avec succès !')
);
return $this->redirectToRoute('dtc_client_categorie_liste');
} else {
$errors = $validator->validate($categorie);
}
}
return $this->render('Clients/Categorie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors]);
}
/**
* @Route("/client/categorie/modifier/{id}", name="dtc_client_categorie_modifier")
*/
public function modifierAction(Request $request, Categorie $categorie, EntityManagerInterface $em, TranslatorInterface $translator,
ValidatorInterface $validator, Datatable $datatable
) {
$user = $this->getUser();
$categorie->setUtilisateur($user);
$form = $this->createForm(CategorieType::class, $categorie);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
$droit = $this->isGranted(EntityVoter::UPDATE, Categorie::class);
if ( ! $droit) {
return $this->redirectToRoute('dtc_client_categorie_modifier', ["id" => $categorie->getId()]);
}
if ($form->isValid()) {
$em->persist($categorie);
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Categorie sauvegardé avec succès !')
);
return $this->redirectToRoute('dtc_client_categorie_modifier', ["id" => $categorie->getId()]);
} else {
$errors = $validator->validate($categorie);
}
}
$this->datatableClients($categorie, $datatable, $translator);
$this->datatableRemises($categorie, $datatable, $translator);
return $this->render('Clients/Categorie/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'categorie' => $categorie]);
}
/**
* @Route("/client/categorie/", name="dtc_client_categorie_liste")
*/
public function listerAction(Request $request, EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, TranslatorInterface $translator, Datatable $datatable)
{
$tableau_class_cellule[] = [
"className" => "colonne_id visible_export",
"targets" => [0],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id visible_export",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id visible_export",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Categorie::class, "parent"),
];
$tableau_class_cellule[] = ["orderable" => false, "className" => "colonne_id", "targets" => [3], "visible" => true];
$this->datatable($request, $datatable, $translator);
$categorie_enfants = [];
$repo_categorie_client = $em->getRepository(Categorie::class);
$categorie_client = $repo_categorie_client->findBy(["categorieParent" => null], ['libelle' => 'ASC']);
$param = $request->query->all();
return $this->render('Clients/Categorie/lister.html.twig', [
'parametres' => $param,
"categorie_parent" => $categorie_client,
'tableauClassColonne' => $tableau_class_cellule,
]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$param = $request->query->all();
$datatable
->setEntity(Categorie::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Parent") => 'p.libelle',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.categorieParent', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_categorie_modifier',
],
],
/*
1 => array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCClientsBundle:Client',
'champ' => 'setLibelle',
),
),*/
3 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_client_categorie_modifier',
//'dupliquer_route' => 'dtc_client_categorie_dupliquer',
'objet' => Categorie::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2]);
//$datatable->setSearchFields(array(0,2));
$where = "";
$parameters = [];
if (array_key_exists('parametres', $param)) {
if (array_key_exists('categorie_parent', $param["parametres"]) and $param["parametres"]["categorie_parent"] > 0) {
//echo "AZERTYUI";
//$datatable->addJoin('x.clientCategorie', 'cc', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
//$datatable->addJoin('cc.categorie', 'catC', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN);
$parameters["categorie"] = $param["parametres"]["categorie_parent"];
$where .= "x.categorieParent = :categorie";
}
}
if ($where != '') {
//echo $where;
$datatable->setWhere($where, $parameters);
}
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/categorie/grid", name="dtc_client_categorie_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $datatable, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableClients($categorie, Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setDatatableId('dta-clients_categorie_client')
->setEntity(Client::class, "x")
->setFields(
[
$translator->trans("Logo") => 'x.logo',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Nom") => 'x.nom',
$translator->trans("Prénom") => 'x.prenom',
$translator->trans("Ville") => 'v.titre',
$translator->trans("CP") => 'cp.codePostal',
$translator->trans("Pays") => 'p.titre',
$translator->trans("Téléphone") => 'x.telephone',
$translator->trans("Téléphone 2") => 'x.telephone2',
$translator->trans("Email") => 'x.email',
$translator->trans("TVA") => 'x.numTva',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.ville', 'v', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.pays', 'p', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.codePostal', 'cp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.typeClient', 'tp', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.clientCategorie', 'cc', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setWhere(
'cc.categorie = :categorie',
['categorie' => $categorie]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/logo.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
],
],/*
3 => array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCClientsBundle:Client',
'champ' => 'setPrenom',
),
),
7 => array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCClientsBundle:Client',
'champ' => 'setTelephone',
),
),
8 => array(
'view' => 'FO/DataTable/edit_texte.html.twig',
'params' => array(
'objet' => 'DTCClientsBundle:Client',
'champ' => 'setTelephone2',
),
),*/
11 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_client_modifier',
//'dupliquer_route' => 'dtc_client_dupliquer',
//'supprimer_route' => 'dtc_client_supprimer',
'objet' => Client::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 3, 4, 5, 6, 7, 8, 9]);
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/categorie/clients/grid/{id}", name="dtc_client_categorie_clients_liste_grid")
*/
public function gridClientsAction(Request $request, Categorie $categorie, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatableClients($categorie, $datatable, $translator)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableRemises($categorie, Datatable $datatable, TranslatorInterface $translator)
{
$datatable
->setDatatableId('dta-remises_categorie_client')
->setEntity(Remise::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Valeur") => 'x.montant',
$translator->trans("Description") => 'x.description',
$translator->trans("Début") => 'x.dateDebut',
$translator->trans("Fin") => 'x.dateFin',
//$translator->trans("Montant Minimum") => 'x.montantMinimumCommande',
//$translator->trans("Quantité total") => 'x.quantiteTotal',
//$translator->trans("Quantité Max/Client") => 'x.quantiteMaxPersonne',
//$translator->trans("Quantité Restante") => 'x.quantiteRestante',
$translator->trans("Actif") => 'x.statut',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.remiseCategorieClient', 'rca', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setWhere(
'rca.categorie = :categorie',
['categorie' => $categorie]
)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
],
],
3 => [
'view' => 'FO/DataTable/commentaire.html.twig',
'params' => [],
],
4 => [
'view' => 'FO/DataTable/date.html.twig',
'params' => [],
],
5 => [
'view' => 'FO/DataTable/date.html.twig',
'params' => [],
],
6 => [
'view' => 'FO/DataTable/statut.html.twig',
'params' => [
'edit_route' => 'dtc_remise_changer_statut',
],
],
7 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
//'dupliquer_route' => 'dtc_remise_dupliquer',
//'supprimer_route' => 'dtc_remise_supprimer',
'objet' => Remise::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/client/categorie/remises/grid/{id}", name="dtc_client_categorie_remises_liste_grid")
*/
public function gridRemisesAction(Request $request, Categorie $categorie, Datatable $datatable, TranslatorInterface $translator)
{
//$this->datatableRemises($categorie);
return $this->datatableRemises($categorie, $datatable, $translator)->execute();
}
//\Doctrine\Common\Util\Debug::dump($tabZonesLivraison);
/**
* @Route("/checkbox/client/categorie", name="dtc_client_categorie_checkbox")
*/
public function listerCategorieClientCheckboxAction(Request $request, $client = [], EntityManagerInterface $em)
{
$id = '';
$repo_client = $em->getRepository(Client::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_client_categorie = $em->getRepository(ClientCategorie::class);
$id = $request->query->get('id');
$url = $this->generateUrl('dtc_client_categorie_checkbox', []);
if ($request->query->get('client') != '') {
$client = $repo_client->find($request->query->get('client'));
}
//$categories = $repo_categorie->listeCategories();
$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($client) and is_object($repo_client_categorie->findOneBy(['client' => $client, 'categorie' => $c]))) {
$c['checked'] = 1;
}
$tabCategories[] = $c;
}
$categories = $tabCategories;
if ($request->isXmlHttpRequest()) {
$rendu = $this->renderView(
'Clients/Categorie/checkbox.html.twig',
['categories' => $categories, 'client' => $client, 'url' => $url, 'objet' => 'client', 'name' => 'categories']
);
return new JsonResponse(['rendu' => $rendu]);
}
return $this->render('Clients/Categorie/checkbox.html.twig', ['categories' => $categories, 'client' => $client, 'url' => $url, 'objet' => 'client', 'name' => 'categories']);
}
/**
* @Route("", name="")
*/
public function listerCategorieClientTableAction(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');
if ($request->query->get('remise') != '') {
$remise = $repo_remise->find($request->query->get('remise'));
}
$categories = $repo_categorie->listeCategories();
$tabCategories = [];
foreach ($categories as $c) {
$c['checked'] = 0;
$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/tableau.html.twig', ['categories' => $categories, 'remise' => $remise]);
return new JsonResponse(['rendu' => $rendu]);
}
return $this->render('Clients/Categorie/tableau.html.twig', ['categories' => $categories, 'remise' => $remise]);
}
/**
* @Route("", name="")
*/
public function choisirCategoriePourClientAction(Request $request, $client = [], EntityManagerInterface $em)
{
$id = '';
$repo_client = $em->getRepository(Client::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_client_categorie = $em->getRepository(ClientCategorie::class);
$id = $request->query->get('id');
$url = $this->generateUrl('dtc_client_categorie_checkbox', []);
if ($request->query->get('client') != '') {
$client = $repo_client->find($request->query->get('client'));
}
$id_categorie_enfants_client = [];
$premiere_categorie_client = "";
$categorie_enfants = '';
$categorie_racine = $repo_categorie->findBy(["modifiable" => 0]);
if (is_object($client)) {
$premiere_categorie = $repo_client_categorie->getCategorieRacinePourClient($client);
$categorie_enfants_client = $repo_client_categorie->getCategorieEnfantsPourClient($client);
foreach ($categorie_enfants_client as $cc) {
$id_categorie_enfants_client[] = $cc->getCategorie()->getId();
}
if ( ! is_object($premiere_categorie)) {
$premiere_categorie = $repo_client_categorie->getCategorieRacinePourClient();
}
} else {
$premiere_categorie = $repo_client_categorie->getCategorieRacinePourClient();
//echo $premiere_categorie->getId();
//exit;
}
if (is_object($premiere_categorie)) {
$premiere_categorie_client = $premiere_categorie->getCategorie();
$categorie_enfants = $repo_categorie->findBy(["categorieParent" => $premiere_categorie_client]);
}
return $this->render(
'Clients/Categorie/formulaire_client.html.twig',
[
"categorie_racine" => $categorie_racine,
"premiere_categorie_client" => $premiere_categorie_client,
"categorie_enfants" => $categorie_enfants,
"id_categorie_enfants_client" => $id_categorie_enfants_client,
]
);
}
/**
* @Route("/checkbox/categorie/enfants", name="dtc_client_lister_categorie_enfant")
*/
public function listerCategorieClientEnfantCheckboxAction(Request $request, EntityManagerInterface $em)
{
$repo_client = $em->getRepository(Client::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_client_categorie = $em->getRepository(ClientCategorie::class);
$id = $request->query->get('id');
$rendu = "";
$categorie_enfants = [];
$racine = $repo_categorie->find($id);
if (is_object($racine)) {
$categorie_enfants = $repo_categorie->findBy(["categorieParent" => $racine]);
}
foreach ($categorie_enfants as $e) {
$rendu .= '<li>';
$rendu .= '<input type="checkbox" name="categorie_client_enfants[]" value="'.$e->getId().'" id="categorie_enfant_'.$e->getId().'">';
$rendu .= ' <label for="categorie_enfant_'.$e->getId().'">'.$e->getLibelle().'</label>';
$rendu .= '</li>';
}
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/option/categorie/enfants", name="dtc_client_lister_categorie_enfant_liste")
*/
public function listerCategorieClientEnfantListeAction(Request $request, EntityManagerInterface $em)
{
$repo_client = $em->getRepository(Client::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_client_categorie = $em->getRepository(ClientCategorie::class);
$id = $request->query->get('id');
$rendu = "";
$categorie_enfants = [];
$racine = $repo_categorie->find($id);
if (is_object($racine)) {
$categorie_enfants = $repo_categorie->findBy(["categorieParent" => $racine]);
}
$rendu .= '<option value="">Sélectionnez</option>';
foreach ($categorie_enfants as $e) {
$rendu .= '<option value="'.$e->getId().'">';
$rendu .= $e->getLibelle();
$rendu .= '</option>';
}
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/client/categorie/recherche", name="dtc_client_categorie_recherche")
*/
public function rechercheAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$q = $request->query->get('q');
$parent = $request->query->get('par');
$repo = $em->getRepository(Categorie::class);
$results = $repo->getRechercheCategorie($q, $parent);
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', 1) /*page number*/,
10 /*limit per page*/
);
$pagination_results = $pagination->getItems();
$option_placeholde = ["libelle" => "Sélectionnez", "id" => ""];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
$serializer = SerializerBuilder::create()->build();
return JsonResponse::fromJsonString($serializer->serialize($pagination, 'json'));
}
/**
* @Route("", name="")
*/
public function listerCategorieDossierAction(Request $request, EntityManagerInterface $em, $clientId = '')
{
$repo_client = $em->getRepository(Client::class);
$repo_categorie = $em->getRepository(Categorie::class);
$repo_client_categorie = $em->getRepository(ClientCategorie::class);
$client = $repo_client->find($clientId);
$clientCategories = [];
if (is_object($client)) {
$categoriesClient = $repo_client_categorie->findBy(['client' => $clientId], ['libelle' => 'ASC']);
foreach ($categoriesClient as $categorieArticle) {
$clientCategories[] = $categorieArticle->getCategorie()->getId();
}
}
//\Doctrine\Common\Util\Debug::dump($clientId);
$categories = $repo_categorie->findBy(['modifiable' => 0], ['libelle' => 'ASC']);//CategorieParent
return $this->render('Clients/Categorie/lister-dossier.html.twig', [
'nbCategoriesEnfant' => [],
'categories' => $categories,
'client' => $client,
'categoriesClient' => $clientCategories,
'mode' => '',
'move' => true,
]);
}
/**
* @Route("/categorie-client/ajouter/modal", name="dtc_client_categorie_ajouter_modal")
*/
public function ajouterModalAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$repo_categorie = $em->getRepository(Categorie::class);
$titre_modal = $translator->trans("Créer une nouvelle catégorie");
$errors = "";
$errorsSup = [];
$categorie = new Categorie;
$parentId = $request->query->get('parent');
if ($parentId == '') {
$parentId = 1;
}//par defaut le parent est la categorie racine.
if ($parentId != '') {
$parent = $repo_categorie->find($parentId);
if (is_object($parent)) {
$titre_modal .= ' enfant de '.$parent->getLibelle();
$categorie->setCategorieParent($parent);
}
}
$user = $this->getUser();
$categorie->setUtilisateur($user);
$form = $this->createForm(CategorieModalType::class, $categorie);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em->persist($categorie);
$em->flush();
$url = $this->generateUrl('dtc_client_categorie_liste', []);
//$url="";
$this->addFlash('notice', $translator->trans('Categorie ajoutée avec succès !'));
return new JsonResponse(['rendu' => '', 'errorsSup' => $errorsSup, 'valide' => '1', 'url' => $url, 'type' => '', 'libelle' => ''],
200,
['Content-Type' => 'application/json']);
} else {
$errors = $validator->validate($categorie);
}
}
$rendu = $this->renderView(
'Clients/Categorie/ajouter-modal.html.twig',
['form' => $form->createView(), 'errorsSup' => $errorsSup, 'errors' => $errors, 'errorsSup' => $errorsSup, 'categorie' => $categorie]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/client/categorie/supprimer/{id}", name="dtc_client_categorie_supprimer")
*/
public function supprimerAction(Request $request, Categorie $objet, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation");
$user = $this->getUser();
$message = '';
$errorsSup = [];
//Verifier si la categorie a des produits
if (count($objet->getClientCategorie()) > 0) {
$errorsSup[] = 'La catégorie n\'est pas supprimable car elle contient des clients.';
}
//Verifier si la categorie a des categories enfantes
if (count($objet->getCategoriesEnfant()) > 0) {
//if ($message != '') $message .= ' ';
$errorsSup[] = 'La catégorie n\'est pas supprimable car elle contient des catégories enfants';
}
$form = $this->createForm(SupprimerCategorieType::class, $objet);
$errors = "";
$form->handleRequest($request);
//if ($form->isSubmitted() && $message != '') {
if ($form->isSubmitted() && count($errorsSup) == 0) {
if ($form->isValid()) {
foreach ($objet->getRemiseCategorieClient() as $remiseCatClient) {
$em->remove($remiseCatClient);
}
$em->remove($objet);
$em->flush();
$this->addFlash('notice', $translator->trans('Catégorie supprimée avec succès !'));
$url = $this->generateUrl('dtc_client_categorie_liste');
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($objet);
$rendu = $this->renderView(
'Clients/Categorie/supprimer.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'message' => $message]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('Clients/Categorie/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'message' => $message]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}