<?php
namespace App\Controller;
use App\Entity\Client;
use App\Entity\Mailling;
use App\Entity\OpenDate;
use App\Entity\SuivitOuvertureMailling;
use App\Entity\SuivitOuverturePartie;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityManagerInterface;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class CpController extends Controller
{
/**
* @var EntityManager
*/
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @Route("/cp/{idMailling}/{idUser}/{idPartie}",methods={"GET"},name="get.cp.client")
*/
public function getCpClientAction($idMailling,$idUser,$idPartie)
{
$mailling = $this->em->getRepository('App:Mailling')
->find($idMailling);
$suivitMailling = $this->em->getRepository('App\Entity\SuivitOuvertureMailling')
->findOneBy(['mailling' => $mailling, 'idContact' => $idUser]);
/** @var SuivitOuvertureMailling $suivitMailling */
if(!$suivitMailling){
$suivitMailling = new SuivitOuvertureMailling();
$suivitMailling->setIdContact($idUser);
$suivitMailling->setMailling($mailling);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'extranet.escalconsulting.com/information/getNomPrenom.php?id=' . $idUser,
));
$nomContact = curl_exec($curl);
$suivitMailling->setNomContact($nomContact);
curl_close($curl);
} else {
$suivitMailling->setLastOpenDate(new \DateTime('now'));
$suivitMailling->Open();
}
$opentDate = new OpenDate();
$opentDate->setDate(new \DateTime('now'));
$opentDate->setSuivitsMailling($suivitMailling);
$partie = $this->em->getRepository('App:PartieCp')->find($idPartie);
if($partie){
$suivitOuverturePartie = new SuivitOuverturePartie();
$suivitOuverturePartie->setPartie($partie);
$suivitOuverturePartie->setSuivitOuverture($suivitMailling);
$this->em->persist($suivitOuverturePartie);
}
$this->em->persist($suivitMailling);
$this->em->persist($opentDate);
$this->em->flush();
return new Response('ok');
}
/**
* @Route("/cp/client/intranet/{idClient}/{dateDebut}/{dateFin}",methods={"GET"},name="get.cp.client.intranet")
*/
public function getCpClientEnvoyer($idClient,$dateDebut,$dateFin, EntityManagerInterface $em)
{
$client = $em->getRepository('App\Entity\Client')->findOneBy(['ancienId' => $idClient]);
$nbMailling = 0;
if($client){
$dateDebut = new \DateTime($dateDebut);
$dateDebut->setTime(0,0,0);
$dateFin = new \DateTime($dateFin);
$dateFin->setTime(23,59,59);
/** @var Client $client */
$maillings = $client->getMaillings();
foreach ($maillings as $mailling){
if($mailling->getEnvoyer() == true AND $mailling->getTypeMail() == 'CP'){
if($mailling->getDateEnvoi() >= $dateDebut AND $mailling->getDateEnvoi() <= $dateFin){
$nbMailling = $nbMailling + 1;
}
}
}
}
return new Response($nbMailling);
}
}