<?php
namespace App\Controller\GestionComerciale;
use App\Entity\Articles\Article;
use App\Entity\GestionComerciale\Commande;
use App\Library\Datatable\Util\Datatable;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
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 ArticleDevisController extends AbstractController
{
/**
* @Route("", name="")
*/
public function listerAction(Request $request, $id="0",$type="a", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$tableau_class_cellule = [];
$tableau_class_cellule[]= ["orderable" =>true, "searchable" => false, "className" =>"visible_export colonne_id", "targets" => [0], "visible" =>true];
$tableau_class_cellule[]= ["orderable" =>true, "searchable" => false, "className" =>"visible_export colonne_id", "targets" => [1], "visible" =>true];
$tableau_class_cellule[]= ["orderable" =>false, "searchable" => false, "className" =>"visible_export colonne_id text-center", "targets" => [2], "visible" =>true];
$tableau_class_cellule[]= ["orderable" =>false, "searchable" => false, "className" =>"visible_export colonne_id text-center", "targets" => [3], "visible" =>true];
$tableau_class_cellule[]= ["orderable" =>false, "searchable" => false, "className" =>"visible_export colonne_id text-right", "targets" => [4], "visible" =>true];
$modal = $request->query->get('modal');
$qte = $request->query->get('qte');
if($type == "commande") $repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
if(is_object($objet)) {
if($type == "commande") {
$this->datatableCommande($objet,$type, $datatable, $translator);
}
return $this->render('GestionComerciale/ArticleDevis/lister.html.twig', ['tableauClassColonne' =>$tableau_class_cellule, "id" =>$id, "type" =>$type]);
}
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableCommande($objet,$type="", Datatable $datatable, TranslatorInterface $translator)
{
$type_jointure = 'x.'.$type;
$datatable ->setDatatableId('dta-article-devis')
->setEntity(Article::class, "x")
->setFields(
[
$translator->trans("Référence") => 'x.reference',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Nombre de lignes") => 'x.id',
$translator->trans("Quantité totale") => 'x.id',
$translator->trans("Prix") => 'x.id',
"_identifier_" => 'x.id'
]
)
//->addJoin('x.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN, \Doctrine\ORM\Query\Expr\Join::WITH, 'ac.article = x.id')
//->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN, \Doctrine\ORM\Query\Expr\Join::WITH, 'c.id = ac.commande')
->setWhere(
'ac.commande = :objet',
['objet' => $objet]
)
->setRenderers(
[
2 => [
'view' => 'FO/DataTable/nombre_de_lignes.html.twig',
'params' => [
'commande'=>$objet
]
],
3 => [
'view' => 'FO/DataTable/quantite_total.html.twig',
'params' => [
'commande'=>$objet
]
],
4 => [
'view' => 'FO/DataTable/prix_chaque_ligne.html.twig',
'params' => [
'commande'=>$objet
]
],
/*
1 => array(
'view' => 'FO/DataTable/date.html.twig',
),
2 => array(
'view' => 'FO/DataTable/prix.html.twig',
),
3 => array(
'view' => 'FO/DataTable/prix.html.twig',
'params' => array(
)
),
1=> array(
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => array(
//'edit_route' => 'dtc_concurrence_commande_modifier',
//'supprimer_route' => 'dtc_concurrence_commande_supprimer',
//'id' => $objet->getId(),
//'type' => $type,
//'table' => "dta-concurrence",
//'entite' => '',
//'objet' => "DTCGestionComercialeBundle:Concurrence",
//'width_modal'=>800
),
),*/
]
)
//->setOrder("x.id", "desc")
//->setSearch(true)
->setGroupBy("x.id")
//->setSearchFields(array(1,2))
;
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/articles-devis/grid/{id}/{type}", name="dtc_article_devis_liste_grid")
*/
public function gridAction(Request $request, $id="",$type="", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
if($type == "commande") $repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
if(is_object($objet) and $type == "commande") return $this->datatableCommande($objet,$type, $datatable, $translator)->execute();
}
}