<?php
namespace App\Controller\GestionComerciale;
use App\Entity\Articles\Article;
use App\Entity\Clients\Client;
use App\Entity\Fournisseurs\Fournisseur;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\CommandeFournisseur;
use App\Entity\GestionComerciale\HistoriqueCommande;
use App\Entity\Transporteurs\Transporteur;
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\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class HistoriqueEmailController extends AbstractController
{
/**
* @Route("/email-client/charger-tableau/{id}/{type}", name="dtc_email_client_charger_tableau")
*/
public function chargerTableauAction(Request $request, $id = "0", $type = "", EntityManagerInterface $em)
{
$objet = null;
if ($type == "article") {
$repo_objet = $em->getRepository(Article::class);
$objet = $repo_objet->find($id);
} elseif ($type == "client") {
$repo_objet = $em->getRepository(Client::class);
$objet = $repo_objet->find($id);
} elseif ($type == "commande") {
$repo_objet = $em->getRepository(Commande::class);
$objet = $repo_objet->find($id);
} elseif ($type == "commandeFournisseur") {
$repo_objet = $em->getRepository(CommandeFournisseur::class);
$objet = $repo_objet->find($id);
} elseif ($type == "fournisseur") {
$repo_objet = $em->getRepository(Fournisseur::class);
$objet = $repo_objet->find($id);
}
$rendu = $this->renderView('GestionComerciale/HistoriqueEmail/charger_tableau.html.twig', ["id" => $id, "type" => $type, "objet" => $objet]);
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("", name="")
*/
public function listerAction(Request $request, $id, $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
if ($type == 'client') {
$repo_objet = $em->getRepository(Client::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'transporteur') {
$repo_objet = $em->getRepository(Transporteur::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'fournisseur') {
$repo_objet = $em->getRepository(Fournisseur::class);
$objet = $repo_objet->find($id);
}
$tableau_class_cellule = [];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center", "targets" => [0], "visible" => true, "orderable" => true, "searchable" => false];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [1], "visible" => true, "orderable" => true, "searchable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [2], "visible" => true, "orderable" => true, "searchable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [3], "visible" => true, "orderable" => true, "searchable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id text-center", "targets" => [4], "visible" => true, "orderable" => false, "searchable" => true];
$tableau_class_cellule[] = ["className" => "visible_export colonne_id", "targets" => [5], "visible" => true, "orderable" => false, "searchable" => false];
/*
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(0),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(1),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(2),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(3),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(4),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("className"=>"visible_export colonne_id","targets"=>array(5),"visible"=>true,"orderable"=>true,"searchable"=> true);
$tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(6),"visible"=>true,"orderable"=>true);
$tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(7),"visible"=>true,"orderable"=>true);
$tableau_class_cellule[]=array("orderable"=>false,"className"=>"colonne_id","targets"=>array(8),"visible"=>true,"orderable"=>false);
*/
$this->datatable($objet, $type, $datatable, $translator);
return $this->render('GestionComerciale/HistoriqueEmail/lister.html.twig', ['tableauClassColonne' => $tableau_class_cellule, "id" => $id, "type" => $type]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable($objet, $type = "", Datatable $datatable, TranslatorInterface $translator)
{
$type_jointure = 'x.'.$type;
$datatable->setDatatableId('dta-historique-email')
->setEntity(HistoriqueCommande::class, "x")
->setFields(
[
//$translator->trans("ID") => 'x.id',
$translator->trans("Date envoi") => 'x.date',
$translator->trans("Expéditeur") => 'x.expediteurMail',
$translator->trans("Destinataire") => 'x.destinataireMail',
$translator->trans("Sujet") => 'x.sujetMail',
$translator->trans("pj") => 'x.pjMail',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
//->addJoin('x.civilite', 'c', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setWhere(
$type_jointure.' = :objet',
['objet' => $objet]
)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/heure.html.twig',
'params' => [],
],
4 => [
'view' => 'FO/DataTable/total_pj_email.html.twig',
'params' => [],
],
5 => [
'view' => 'FO/DataTable/actions_modal.html.twig',
'params' => [
'afficher_route' => 'dtc_email_client_afficher',
'email_renvoyer_route' => 'dtc_commande_email_envoyer',
'id' => $objet->getId(),
'type' => $type,
'entite' => 'HistoriqueCommande',
'objet' => HistoriqueCommande::class,
'table' => "",
'width_modal' => "1000",
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1, 2, 3])
->setOrder("x.date", "desc");
return $datatable;
}
/**
* @Route("/historique-email/grid/{id}/{type}", name="dtc_historique_email_liste_grid")
*/
public function gridAction(Request $request, $id = "", $type = "", EntityManagerInterface $em, Datatable $datatable, TranslatorInterface $translator)
{
if ($type == 'client') {
$repo_objet = $em->getRepository(Client::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'transporteur') {
$repo_objet = $em->getRepository(Transporteur::class);
$objet = $repo_objet->find($id);
} elseif ($type == 'fournisseur') {
$repo_objet = $em->getRepository(Fournisseur::class);
$objet = $repo_objet->find($id);
}
return $this->datatable($objet, $type, $datatable, $translator)->execute();
}
/**
* @Route("/email-client/afficher/{objet}/{id}/{type}", name="dtc_email_client_afficher")
*/
public function afficherAction(Request $request, HistoriqueCommande $objet, $id, $type, TranslatorInterface $translator)
{
$type_json = "";
$user = $this->getUser();
$param = $request->query->all();
$get = $request->query->all();
$titre_modal = $translator->trans("Détails email");
$rendu = $this->renderView('GestionComerciale/HistoriqueEmail/afficher_modal.html.twig', ['email' => $objet]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}