<?php
namespace App\Controller\Projets;
use App\Entity\Notes\Note;
use App\Entity\Projets\Intervention;
use App\Entity\Projets\Projet;
use App\Entity\Projets\Tache;
use App\Entity\Utilisateur\Utilisateur;
use App\Library\Datatable\Util\Datatable;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class InterventionsProjetController extends AbstractController
{
/**
* @Route("", name="")
*/
public function listerAction(Request $request, $id, $type = "", EntityManagerInterface $em, ColonneTableauService $serviceColonneTableau, Datatable $datatable,
TranslatorInterface $translator
) {
$objet = '';
if ($type == 'projet') {
$repo_objet = $em->getRepository(Projet::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'utilisateur') {
$repo_objet = $em->getRepository(Utilisateur::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'tache') {
$repo_objet = $em->getRepository(Note::class);
$objet = $repo_objet->find($id);
}
$tableau_class_cellule = [];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [1],
// TODO refactor this
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "id"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "dateDebut"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "dateFin"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [5],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "utilisateur"),
];
$tableau_class_cellule[] = [
"className" => "colonne_id",
"targets" => [6],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Intervention::class, "libelleTache"),
];
$this->datatable($datatable, $translator, $objet, $type);
return $this->render('Projets/InterventionsProjet/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule, "id" => $id, "type" => $type]);
}
private function datatable(Datatable $datatable, TranslatorInterface $translator, $objet, $type)
{
if ($type == "projet") {
} else {
}
$datatable
//->setDatatableId('dta-interventions')
->setEntity(Note::class, "x")
->setFields(
[
"ID" => 'x.id',
$translator->trans("Libellé") => 'x.message',
$translator->trans("Date de début") => 'x.dateDebut',
$translator->trans("Date de fin") => 'x.dateFin',
$translator->trans("Utilisateur") => 'u.nom',
$translator->trans("Libellé de la tâche") => 't.libelle',
"Actions" => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.utilisateur', 'u', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->addJoin('x.tache', 't', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)//->addJoin('x.reference', 'r', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
;
if (is_object($objet)) {
$datatable->setWhere(
'x.'.$type.' = :objet',
['objet' => $objet]
);
}
$datatable->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_projet_intervention_modifier',
],
],
1 => [
'view' => 'FO/DataTable/titre_note.html.twig',
'params' => [
'edit_route' => 'dtc_intervention_modifier',
'supprimer_route' => 'dtc_intervention_supprimer',
//'id' => $client->getId(),
'width_modal' => 900,
'type' => "liste",
'objet' => Note::class,
],
],
2 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [//'edit_route' => 'dtc_projet_intervention_modifier'
],
],
3 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [//'edit_route' => 'dtc_projet_intervention_modifier'
],
],
4 => [
'view' => 'FO/DataTable/utilisateur.html.twig',
'params' => [//'edit_route' => 'dtc_projet_intervention_modifier'
],
],
6 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
//'edit_route' => 'dtc_intervention_modifier',
'view_route' => 'dtc_intervention_modifier',
'supprimer_route' => 'dtc_intervention_supprimer',
//'id' => $client->getId(),
'width_modal' => 900,
'type' => "liste",
'objet' => Note::class,
],
],
]
)
/*
->setMultiple(
array(
'delete' => array(
'title' => $translator->trans('Non disponible'),
'route' => 'dtc_tache_liste'
),
)
)
*
*/
->setOrder("x.id", "desc")
->setSearch(true);
$datatable->setSearchFields([0, 1, 2, 3, 4, 5]);
return $datatable;
}
/**
* @Route("/projet/intervention/grid/{id}", name="dtc_tache_intervention_liste_grid")
*/
public function gridAction(Request $request, $id, EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
$type = $request->query->get('type');
$objet = '';
if ($type == "projet") {
$repo = $em->getRepository(Projet::class);
$objet = $repo->find($id);
} elseif ($type == 'utilisateur') {
$repo_objet = $em->getRepository(Utilisateur::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'tache') {
$repo = $em->getRepository(Tache::class);
$objet = $repo->find($id);
}
//echo "TYPE==>".$type;
return $this->datatable($datatable, $translator, $objet, $type)->execute();
}
}