<?php
namespace App\Controller\Widget;
use App\Entity\Clients\Client;
use App\Entity\FO\Cron;
use App\Entity\FO\TacheCron;
use App\Entity\GestionComerciale\Commande;
use App\Entity\GestionComerciale\StatutCommande;
use App\Entity\MarketPlace\CompteMarketPlace;
use App\Model\GestionCommerciale\TypeDocumentCommercial;
use App\Form\Clients\ClientType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class WidgetPrestashopController extends AbstractController
{
/**
* @Route("/prestashop/{script}/pourcentage-traitement", name="dtc_calcul_pourcentage_traitement_prestashop")
*/
public function pourcentageTraitementAction(Request $request, $script = "", EntityManagerInterface $em)
{
$domaine_prestashop = $this->getParameter('domaine_prestashop');
$url_xml = "http://".$domaine_prestashop."/67PHEAuaps4P4h3/avancement.php?s=".trim($script);
//echo $url_xml;
//$pourcentageTraitement = $service->pourcentageTraitementCalculCump($cron);
$pourcentageTraitement = "";
$total = "";
$traite = "";
$xml_execution = @simplexml_load_file($url_xml);
if (isset($xml_execution->execution)) {
$execution = $xml_execution->execution;
$total = (string)$execution->total;
$traite = (string)$execution->traite;
//echo "TOTAL ".$total;
//echo "TRAITE ".$traite;
if ($total == $traite or $total == 0) {
$pourcentageTraitement = 100;
} else {
$pourcentageTraitement = round($traite * 100 / $total);
}
}
$response = new JsonResponse();
$response->setData([
'pourcentageTraitement' => $pourcentageTraitement,
'total' => $total,
'traite' => $traite,
]);
return $response;
}
/**
* @Route("", name="")
*/
public function widgetPrestahopCommandesAction(Request $request, EntityManagerInterface $em) //prestashop_commandes.html
{
$repo_commande = $em->getRepository(Commande::class);
$typeDocumentCommercial = TypeDocumentCommercial::COMMANDE;
$statuts = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$tab_final = [];
foreach ($statuts as $s) {
//echo "<div>".$s->getLibelle()."</div>";
$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origine=:origine";
$parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE, "origine" => "prestashop"];
$statutIds = [];
$statutIds[] = $s->getId();
if ($where != "") {
$where .= " AND ";
}
$where .= "x.statutCommande IN (:statuts)";
$parameters['statuts'] = $statutIds;
$nombre = $repo_commande->getNombreCommandeInternet($where, $parameters);
//$nombre = 0;
$tab_final[$s->getLibelle()] = $nombre;
}
//recréation d'un tableau car on veut en attente en 2eme position plutot qu'en 3eme de base
$tab["Annulée"] = $tab_final["Annulée"];
$tab["En attente de validation"] = $tab_final["En attente de validation"];
$tab["Acceptée"] = $tab_final["Acceptée"];
$tab["En attente"] = $tab_final["En attente"];
$tab["Partiel préparé"] = $tab_final["Partiel préparé"];
$tab["Préparée"] = $tab_final["Préparée"];
$tab["Partiellement livrée"] = $tab_final["Partiellement livrée"];
$tab["Livrée"] = $tab_final["Livrée"];
$tab_final = $tab;
return $this->render('Widget/Widget/prestashop_commandes.html.twig', ["tab_status" => $tab_final]);
}
//_________________________________________________________//fonction test, n'est pas appelé
/**
* @Route("", name="")
*/
public function _____widgetPrestahopCommandesAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$typeDocumentCommercial = TypeDocumentCommercial::COMMANDE;
$statuts = $em->getRepository(StatutCommande::class)->findBy([
'documentCommercial' => $typeDocumentCommercial,
], ['ordre' => 'ASC']);
$tab_final = [];
//dump($statuts);
/*foreach($statuts as $key => $value)
{
dump($statuts);
echo $key;
echo $value;
dump($statuts[$key]);
$statuts2=$statuts[$key];
dump($statuts2);
// foreach($statuts2 as $key2 => $value2)
// {
// echo"v2:";
// echo$key2;
// echo$value2;
// }
if ($statuts[$key] === "Acceptée")
{
dump("oui");
$statuts[$key]['ordre'] = 2;
}
if ($statuts[$key] === "En attente")
{
dump("oui");
$statuts[$key]['ordre'] = 1;
}
}*/
foreach ($statuts as $s) {
//echo "<div>".$s->getLibelle()."</div>";
$where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origine=:origine";
$parameters = ['typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE, "origine" => "prestashop"];
$statutIds = [];
$statutIds[] = $s->getId();
if ($where != "") {
$where .= " AND ";
}
$where .= "x.statutCommande IN (:statuts)";
$parameters['statuts'] = $statutIds;
$repo_commande = $em->getRepository(Commande::class);
$nombre = $repo_commande->getNombreCommandeInternet($where, $parameters);
//$nombre = 0;
$tab_final[$s->getLibelle()] = $nombre;
// $where = "x.typeDocumentCommercial = :typeDocumentCommercial and x.origine=:origine AND s.ordre NOT IN (0) AND (x.valideManuellement IS NULL OR x.valideManuellement=0)";
// $parameters = array('typeDocumentCommercial' => TypeDocumentCommercial::COMMANDE,"origine"=>"prestashop");
// $attente_validation = $repo_commande->getNombreCommandeAttenteValidation($where,$parameters);
// $tab_final['En attente de validation']=$attente_validation;
}
/*
function replace_key($arr, $oldkey, $newkey)
{
if(array_key_exists( $oldkey, $arr))
{
$keys = array_keys($arr);
$keys[array_search($oldkey, $keys)] = $newkey;
return array_combine($keys, $arr);
}
return $arr;
}
$tab_final["En attente"]=50;
$a=$tab_final["Acceptée"];
// $tab_final["Acceptée"]=$tab_final["En attente"];
// $tab_final["En attente"]=$a;
// $tab_final=replace_key($tab_final, "Acceptée", "En attente");
$tab_final["En attente"]=
*/
//dump($tab_final2);
// for($t=0; $t<=count($tab_final); t++)
// {
// if(key($tab_final[$t])==="En attente")
// {
// //dump("good");
// }
// }
// //array_push($tab_final, var)
// foreach($tab_final as $s)
// {
// $current=current($tab_final);
// dump($current);
// // if(key($current)=="En attente")
// // {
// // dump("good");
// // }
// }
// foreach( $tab_final as $key=>$value)
// {
// echo " Key ". $key;
// if($key =="En attente")
// {
// //dump("good");
// }
// }
return $this->render('Widget/Widget/prestashop_commandes.html.twig', ["tab_status" => $tab_final]);
}
//_________________________________________________________//fonction test, n'est pas appelé
/**
* @Route("", name="")
*/
public function widgetPrestashopAction(Request $request, EntityManagerInterface $em)
{
$repo_client = $em->getRepository(Client::class);
$repo_cron = $em->getRepository(Cron::class);
$repo_tache_cron = $em->getRepository(TacheCron::class);
$repo_compte_market_place = $em->getRepository(CompteMarketPlace::class);
//$clients = $repo_client->findAll();
//$clients = $repo_client->getDerniersClient();
$domaine_prestashop = $this->getParameter('domaine_prestashop');
$compte = $repo_compte_market_place->find(16);
$url_xml = "http://".$compte->getIdentifiant()."/".$compte->getSecret()."/executions.php";
$tab_date = [];
$tab_date['clients'] = "";
$tab_date['remises'] = "";
$tab_date['cra'] = "";
$tab_date['crc'] = "";
$tab_date['cc'] = "";
$tab_date['categories'] = "";
$tab_date['articles'] = "";
$tab_date['articles-ref-appel'] = "";
$tab_date['articles_stock']="";
$tab_date['transporteurs'] = "";
$tab_date['zones'] = "";
$tab_date['tranches'] = "";
$tab_date['fraisport'] = "";
$tab_date['vehicules'] = "";
$tab_date['commandes'] = "";
$tab_date['applications'] = "";
$tab_date['marques'] = "";
$tab_date['clients_erp'] = "";
$tab_date['commandes_erp'] = "";
$tache = $repo_tache_cron->find(83);
if(is_object($tache)){
$derniersCron = $repo_cron->findBy(array('tacheCron'=>$tache), array('date'=>'DESC'), 1, 0);
if(isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateFin() != '') {
$tab_date['articles_stock'] = $derniersCron[0]->getDateFin()->format("d/m/Y à H:i:s");
} else if(isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateDebut() != '') {
$tab_date['articles_stock'] = "En cours depuis ".$derniersCron[0]->getDateDebut()->format("d/m/Y à H:i:s");
}
}
/*
$tache = $repo_tache_cron->find(12);
if (is_object($tache)) {
$derniersCron = $repo_cron->findBy(['tacheCron' => $tache], ['date' => 'DESC'], 1, 0);
if (isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateFin() != '') {
$tab_date['clients_erp'] = $derniersCron[0]->getDateFin()->format("d/m/Y à H:i:s");
} elseif (isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateDebut() != '') {
$tab_date['clients_erp'] = "En cours depuis ".$derniersCron[0]->getDateDebut()->format("d/m/Y à H:i:s");
}
}
*/
$tache = $repo_tache_cron->find(14);
if (is_object($tache)) {
$derniersCron = $repo_cron->findBy(['tacheCron' => $tache], ['date' => 'DESC'], 1, 0);
if (isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateFin() != '') {
$tab_date['commandes_erp'] = $derniersCron[0]->getDateFin()->format("d/m/Y à H:i:s");
} elseif (isset($derniersCron[0]) && is_object($derniersCron[0]) && $derniersCron[0]->getDateDebut() != '') {
$tab_date['commandes_erp'] = "En cours depuis ".$derniersCron[0]->getDateDebut()->format("d/m/Y à H:i:s");
}
}
$tab_avancement = [];
$tab_avancement['clients'] = ["total" => "", "traite" => ""];
$tab_avancement['remises'] = ["total" => "", "traite" => ""];
$tab_avancement['cra'] = ["total" => "", "traite" => ""];
$tab_avancement['crc'] = ["total" => "", "traite" => ""];
$tab_avancement['cc'] = ["total" => "", "traite" => ""];
$tab_avancement['categories'] = ["total" => "", "traite" => ""];
$tab_avancement['articles'] = ["total" => "", "traite" => ""];
$tab_avancement['articles-ref-appel'] = ["total" => "", "traite" => ""];
$tab_avancement['transporteurs'] = ["total" => "", "traite" => ""];
$tab_avancement['zones'] = ["total" => "", "traite" => ""];
$tab_avancement['tranches'] = ["total" => "", "traite" => ""];
$tab_avancement['fraisport'] = ["total" => "", "traite" => ""];
$tab_avancement['vehicules'] = ["total" => "", "traite" => ""];
$tab_avancement['commandes'] = ["total" => "", "traite" => ""];
$tab_avancement['applications'] = ["total" => "", "traite" => ""];
$tab_avancement['marques'] = ["total" => "", "traite" => ""];
$xml_execution = @simplexml_load_file($url_xml);
if (isset($xml_execution->execution)) {
foreach ($xml_execution->execution as $execution) {
if ($execution->libelle == "clients") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['clients'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['clients'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['clients'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "remises") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['remises'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['remises'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['remises'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "cra") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['cra'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['cra'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['cra'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "crc") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['crc'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['crc'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['crc'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "cc") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['cc'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['cc'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['cc'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "categories") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['categories'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['categories'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['categories'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "articles") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['articles'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['articles'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['articles'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "articles-ref-appel") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['articles-ref-appel'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['articles-ref-appel'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['articles-ref-appel'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "transporteurs") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['transporteurs'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['transporteurs'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['transporteurs'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "zones") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['zones'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['zones'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['zones'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "tranches") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['tranches'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['tranches'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['tranches'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "fraisport") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['fraisport'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['fraisport'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['fraisport'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "vehicules") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['vehicules'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['vehicules'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['vehicules'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "commandes") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['commandes'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['commandes'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['commandes'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "applications") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['applications'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['applications'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['applications'] = $date->format("d/m/Y à H:i:s");
}
}
if ($execution->libelle == "marques") {
if ($execution->date_fin == "") {
$date = new \Datetime((string)$execution->date_debut);
$tab_date['marques'] = "En cours depuis ".$date->format("d/m/Y à H:i:s");
$tab_avancement['marques'] = ["total" => (string)$execution->total, "traite" => (string)$execution->traite];
} else {
$date = new \Datetime((string)$execution->date_fin);
$tab_date['marques'] = $date->format("d/m/Y à H:i:s");
}
}
}
}
//print_r($tab_avancement);
return $this->render('Widget/Widget/prestashop.html.twig', ["tab_date" => $tab_date, "tab_avancement" => $tab_avancement, "cle" => $this->getParameter('cle_xml')]);
}
}