<?php
namespace App\Controller\Articles;
use App\Entity\Articles\NumeroSerie;
use App\Library\Datatable\Util\Datatable;
use App\Service\Utilisateur\ColonneTableauService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
class NumeroSerieController extends AbstractController
{
/**
* @Route("/numero-serie/{page}", name="dtc_numero_serie_liste", defaults={"page":1})
*/
public function listerAction(Request $request, $article = '', ColonneTableauService $serviceColonneTableau, Datatable $datatable, TranslatorInterface $translator )
{
//$tableau_class_cellule[]=array("className"=>"colonne_id","targets"=>array(0),"visible"=>true,"orderable"=>false);
$tableau_class_cellule[] = [
"className" => "visible_export colonne_id",
"targets" => [0],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_logo text-center",
"targets" => [1],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "date"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_logo",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "numero"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_logo",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "commande"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_libelle",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "commandeF"),
];
$tableau_class_cellule[] = [
"className" => "visible_export colonne_libelle text-center",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(NumeroSerie::class, "dureeGarantie"),
];
//$tableau_class_cellule[]=array("className"=>"visible_export colonne_statut","targets"=>array(5),"visible"=>$serviceColonneTableau->getColonneUtilisateur("DTCArticlesBundle:Marque","statut"));
//$tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(6),"visible"=>true);
$this->datatable($request, $datatable, $translator);
return $this->render('Articles/NumeroSerie/lister.html.twig', ['article' => $article, 'tableauClassColonne' => $tableau_class_cellule]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
$articleId = $request->query->get('article');
$datatable->setEntity(NumeroSerie::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Date") => "x.date",
$translator->trans("Numéro série") => "x.numero",
$translator->trans("Commande") => 'c.reference',
$translator->trans("Commande fournisseur") => 'cf.reference',
$translator->trans("Durée de garantie") => 'x.dureeGarantie',
//$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.articleCommande', 'ac', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.commande', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('c.statutCommande', 's', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.commandeFournisseur', 'cf', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('cf.statutCommande', 'sf', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('ac.article', 'a', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
/*
0 => array(
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => array(
'edit_route' => 'dtc_marque_modifier'
),
),
*
*/
/*
5 => array(
'view' => 'FO/DataTable/actions.html.twig',
'params' => array(
'edit_route' => 'dtc_marque_modifier',
'objet' => 'DTCArticlesBundle:Marque',
),
),
*/
1 => ['view' => 'FO/DataTable/date.html.twig'],
3 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'typeDocument' => 'acc',
],
],
4 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_fournisseur_modifier',
'typeDocument' => 'accf',
],
],
]
)
/*
->setMultiple(
array(
'delete' => array(
'title' => 'Non disponible',
'route' => 'dtc_marque_liste' ),
)
)
*
*/
->setWhere('a.id = :articleId AND (s.ordre NOT IN (0) OR sf.ordre NOT IN (0))', ['articleId' => $articleId])
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* @Route("/numero-serie/grid", name="dtc_numero_serie_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($request, $datatable, $translator)->execute();
}
}