<?php
/**
* Created by Mediterranean Develup Solutions
* User: jorge.defreitas@develup.solutions
* Date: 17/10/2017
* Time: 11:05
*/
namespace App\MDS\CommercialBundle\Controller;
use App\Entity\Client;
use App\Entity\ClientContact;
use App\Entity\SettingsRol;
use App\Entity\SettingsTeam;
use App\Entity\Supplier;
use App\Entity\SupplierContact;
use App\Entity\User;
use App\MDS\CommercialBundle\Entity\CommercialBreakdownVolume;
use App\MDS\CommercialBundle\Entity\CommercialBreakdownVolumeControl;
use App\MDS\CommercialBundle\Entity\CommercialTracking;
use App\MDS\CommercialBundle\Form\CommercialTrackingType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class CommercialTrackingController extends AbstractController
{
private $translator;
private $validator;
public function __construct(TranslatorInterface $translator, ValidatorInterface $validator) {
$this->translator = $translator;
$this->validator = $validator;
}
/**
* @Route("/tracking/prueba/{page}", name="commercial_tracking_list_prueba")
*/
public function listPruebaAction($page, Request $request)
{
$limit = 10;
$em = $this->getDoctrine()->getManager();
$tracking_base = $em->getRepository(CommercialTracking::class);
$paginator = $tracking_base->paginateDos($limit, $page);
// $paginator->findAll(array(),array('dateAt' => 'DESC'));
$totalItems = count($paginator);
$pagesCount = ceil($totalItems / $limit);
return $this->render('MDS/CommercialBundle/tracking/list-prueba-tracking.html.twig', array(
'trackings' => $paginator,
'totalItems' => $totalItems,
'pagesCount' => $pagesCount,
'thisPage' => $page
));
}
/**
* @Route("/tracking/list/{page}/{id}", defaults={"page" = 1, "id" = 0}, name="commercial_tracking_list")
*/
public function listAction($page, $id, Request $request)
{
$limit = 10;
$em = $this->getDoctrine()->getManager();
$trackingBase = $em->getRepository(CommercialTracking::class);
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$user_userrol = $user_logueado->getUserrol();
$user_team = $user_logueado->getTeam();
$user_teamleader = $user_logueado->getTeamleader();
/* VERIFICAR EL weight DEL USUARIO */
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
$nivelAcceso = $accesoNivel->getWeight();
$tracking = array();
$usertitle = array();
$verNombre="no";
$user_url = array();
if( ( $user_role == "ROLE_ADMIN" || ($nivelAcceso <= '3' AND $user_teamleader == true) ) AND $id == "0"){
// $tracking = $em->getRepository(CommercialTracking::class)->findBy(
// array(),
// array('id' => 'DESC')
// );
$user_del_team = $em->getRepository(User::class)->findByTeam($user_team);
$teamId = array();
foreach($user_del_team as $user){
$teamId[] = $user->getId();
$user_url[$user->getId()] = array(
'userid' => $user->getId(),
'name' => $user->getName()
);
};
// d($user_url);
$teamIdver= implode(",", $teamId);
if (!empty($request->request->get('buscarClient')['palabra'])){
$buscarPalabra = $request->request->get('buscarClient')['palabra'];
// CONSULTA A ENTIDAD CLIENTE PARA SACAR EL ID DEL CLIENTE QUE RESULTE DE LA CONSULTA
$limit = 100;
$parametersBs = array(
'name' => '%'.$buscarPalabra.'%',
'title' => '%'.$buscarPalabra.'%',
);
$dqlBs = 'SELECT cl.id
FROM App:Client cl
WHERE cl.name LIKE :name OR cl.title LIKE :title';
$queryBs = $em->createQuery($dqlBs)->setParameters($parametersBs);
$consultaDentroCliente = $queryBs->getResult();
$hay=array();
foreach($consultaDentroCliente as $dentro){
$hay[] = $dentro['id'];
}
if(!empty($hay)){
$id_hay = implode(",", $hay);
}else{
$id_hay = "0";
}
// $dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.clientId IN($id_hay) ORDER BY p.id DESC";
if ($user_role == "ROLE_ADMIN"){
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.clientId IN($id_hay) ORDER BY p.id DESC";
}else{
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.clientId IN($id_hay) AND p.commercialId IN($teamIdver) ORDER BY p.id DESC";
}
}else{
// $dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p";
if ($user_role == "ROLE_ADMIN"){
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p ORDER BY p.id DESC";
}else{
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.commercialId IN($teamIdver) ORDER BY p.id DESC";
}
}
$usertitle = array(
'name' => 'All Tracking',
'lastname' => '',
'team' => 'Everybody'
);
$verNombre="si";
}else{
if(( $user_role == "ROLE_USER" AND $nivelAcceso > '2' AND $user_teamleader == false ) AND ($id == "0" OR $id != "0")){
$id = $user_id;
$verNombre="no";
}
// $tracking = $em->getRepository(CommercialTracking::class)->findBy(
// array('commercialId' => $id),
// array('id' => 'DESC')
// );
if (!empty($request->request->get('buscarClient')['palabra'])){
// CONSULTA A ENTIDAD CLIENTE PARA SACAR EL ID DEL CLIENTE QUE RESULTE DE LA CONSULTA
$limit = 100;
$parametersBs = array(
'name' => '%'.$buscarPalabra.'%',
'title' => '%'.$buscarPalabra.'%',
);
$dqlBs = 'SELECT cl.id
FROM App:Client cl
WHERE cl.name LIKE :name OR cl.title LIKE :title';
$queryBs = $em->createQuery($dqlBs)->setParameters($parametersBs);
$consultaDentroCliente = $queryBs->getResult();
$hay=array();
foreach($consultaDentroCliente as $dentro){
$hay[] = $dentro['id'];
}
$id_hay= implode(",", $hay);
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.clientId IN($id_hay) AND p.commercialId = $id";
}else{
$dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.commercialId = $id ORDER BY p.id DESC";
// $dql = "SELECT p FROM App\MDS\CommercialBundle\Entity\CommercialTracking p WHERE p.commercialId = $id";
}
$usertitle = $em->getRepository(User::class)->findOneById($id);
$team = $em->getRepository(SettingsTeam::class)->findOneById($usertitle->getTeam());
$usertitle->setTeam($team->getTeam());
}
$tracking = $trackingBase->paginate($dql, $limit, $page);
$totalItems = count($tracking);
$pagesCount = ceil($totalItems / $limit);
$data = array();
$client = array();
$n="0";
foreach($tracking as $trackings){
// d($trackings);
$user = $em->getRepository(User::class)->findOneById($trackings->getCommercialId());
$team = $em->getRepository(SettingsTeam::class)->findOneById($user->getTeam());
$clientType = $trackings->getClientType();
if($clientType == 'client') {
$parameters = array(
'clientId' => $trackings->getClientId()
);
$dql = 'SELECT cl
FROM App:Client cl
INNER JOIN App:Country c WITH c.id = cl.country
INNER JOIN App:Regions p WITH p.id = cl.region
INNER JOIN App:Provinces pr WITH pr.id = cl.province
INNER JOIN App:Cities r WITH r.id = cl.population
WHERE cl.id = :clientId';
// ORDER BY p.dateProposedAt DESC';
$query = $em->createQuery($dql)->setParameters($parameters);
$client = $query->getResult();
// ACA
$contact = $em->getRepository(ClientContact::class)->findOneById($trackings->getContactId());
$breakdownControl = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'clientId' => $trackings->getClientId(),
'contactId' => $trackings->getContactId(),
)
);
$breakdown = null;
if (!empty($breakdownControl)){
$breakdown = $em->getRepository(CommercialBreakdownVolume::class)->findByControlId($breakdownControl->getId());
}
$fecha = $trackings->getDateAt()->format('d/m/Y');
$countClient = count($client);
if($countClient === 0){
$clientP = null;
// d('es cero'); die();
}else{
$clientP = $client[0];
}
// if($client !== null or $client !== 0 or !empty($client) or $countClient !== 0){
//// if($client !== null or $client !== 0 or !empty($client) or $countClient === 0){
// d('viene lleno'); die();
//
// }else if($countClient === 0){
// d('vacio'); die();
// }
$data[] = array(
'id' => $trackings->getId(),
'fecha' => $fecha,
'user' => $user,
'team' => $team,
'tracking' => $trackings,
'client' => $clientP,
'contact' => $contact,
'breakdownControl' => $breakdownControl,
'breakdown' => $breakdown,
'clientType' => $clientType,
);
// $em->clear();
}elseif ($clientType == 'supplier'){
$parameters = array(
'supplierId' => $trackings->getSupplierId()
);
$dql = 'SELECT cl
FROM App:Supplier cl
INNER JOIN App:Country c WITH c.id = cl.country
INNER JOIN App:Regions p WITH p.id = cl.region
INNER JOIN App:Provinces pr WITH pr.id = cl.province
INNER JOIN App:Cities r WITH r.id = cl.population
WHERE cl.id = :supplierId';
$query = $em->createQuery($dql)->setParameters($parameters);
$supplier = $query->getResult();
$contact = $em->getRepository(SupplierContact::class)->findOneById($trackings->getContactId());
// $breakdownControl = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
// array(
// 'supplierId' => $trackings->getSupplierId(),
// 'contactId' => $trackings->getContactId(),
// )
// );
//
// $breakdown = null;
// if (!empty($breakdownControl)){
// $breakdown = $em->getRepository(CommercialBreakdownVolume::class)->findByControlId($breakdownControl->getId());
// }
$fecha = $trackings->getDateAt()->format('d/m/Y');
$data[] = array(
'id' => $trackings->getId(),
'fecha' => $fecha,
'user' => $user,
'team' => $team,
'tracking' => $trackings,
'client' => $supplier[0],
'contact' => $contact,
'breakdownControl' => ' ',
'breakdown' => ' ',
'clientType' => $clientType,
);
} else {
if (empty($clientType)){
$parameters = array(
'clientId' => $trackings->getClientId()
);
$dql = 'SELECT cl
FROM App:Client cl
INNER JOIN App:Country c WITH c.id = cl.country
INNER JOIN App:Regions p WITH p.id = cl.region
INNER JOIN App:Provinces pr WITH pr.id = cl.province
INNER JOIN App:Cities r WITH r.id = cl.population
WHERE cl.id = :clientId';
// ORDER BY p.dateProposedAt DESC';
$query = $em->createQuery($dql)->setParameters($parameters);
$client = $query->getResult();
// ACA
$contact = $em->getRepository(ClientContact::class)->findOneById($trackings->getContactId());
$breakdownControl = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'clientId' => $trackings->getClientId(),
'contactId' => $trackings->getContactId(),
)
);
$breakdown = null;
if (!empty($breakdownControl)){
$breakdown = $em->getRepository(CommercialBreakdownVolume::class)->findByControlId($breakdownControl->getId());
}
$fecha = $trackings->getDateAt()->format('d/m/Y');
$countClient = count($client);
if($countClient === 0){
$clientP = null;
// d('es cero'); die();
}else{
$clientP = $client[0];
}
// if($client !== null or $client !== 0 or !empty($client) or $countClient !== 0){
//// if($client !== null or $client !== 0 or !empty($client) or $countClient === 0){
// d('viene lleno'); die();
//
// }else if($countClient === 0){
// d('vacio'); die();
// }
$data[] = array(
'id' => $trackings->getId(),
'fecha' => $fecha,
'user' => $user,
'team' => $team,
'tracking' => $trackings,
'client' => $clientP,
'contact' => $contact,
'breakdownControl' => $breakdownControl,
'breakdown' => $breakdown,
'clientType' => $clientType,
);
}
}
}
if ( $user_role == "ROLE_ADMIN" ){
$users = $em->getRepository(User::class)->findBy(['team' => 7]); //Filtrar los usuarios por Comercial MICE
$user_url = array();
foreach($users as $user){
$user_url[$user->getId()] = array(
'userid' => $user->getId(),
'name' => $user->getName()
);
};
}
return $this->render('MDS/CommercialBundle/tracking/list-tracking.html.twig', array(
'idview' =>$id,
'verNombre' => $verNombre,
'userurl' => $user_url,
'commercial' => $usertitle,
'trackings' => $data,
'totalItems' => $totalItems,
'pagesCount' => $pagesCount,
'thisPage' => $page,
'limitPage' => $limit
));
}
/**
* @Route("/tracking/details/{id}", name="commercial_tracking_list_details")
*/
public function listDetailsAction($id, Request $request)
{
// $buscarPalabra = $request->request->get('buscarClient')['palabra'];
$em = $this->getDoctrine()->getManager();
$trackingBase = $em->getRepository(CommercialTracking::class);
/*- Obtengo usuario logueado -*/
$user_logueado = $this->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$user_userrol = $user_logueado->getUserrol();
$user_team = $user_logueado->getTeam();
$user_teamleader = $user_logueado->getTeamleader();
/* VERIFICAR EL weight DEL USUARIO */
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
$nivelAcceso = $accesoNivel->getWeight();
if( $user_role == "ROLE_ADMIN" ){
$tracking = $em->getRepository(CommercialTracking::class)->findOneById($id);
}
if( $nivelAcceso <= '3' AND $user_teamleader == true ){
$tracking = $em->getRepository(CommercialTracking::class)->findOneById($id);
}
if( $user_role == "ROLE_USER" ){
$tracking = $em->getRepository(CommercialTracking::class)->findOneById($id);
}
$user = $user_logueado;
$team = $em->getRepository(SettingsTeam::class)->findOneById($user->getTeam());
$parameters = array(
'clientId' => $tracking->getClientId()
);
$dql = 'SELECT cl.id, cl.name, cl.picture, cl.address, cl.addressNumber, cl.zipCode, cl.competency, c.country, re.region, p.name, r.city
FROM App:Client cl
INNER JOIN App:Country c WITH c.id = cl.country
INNER JOIN App:Regions re WITH re.id = cl.region
INNER JOIN App:Provinces p WITH p.id = cl.province
INNER JOIN App:Cities r WITH r.id = cl.population
WHERE cl.id = :clientId';
$query = $em->createQuery($dql)->setParameters($parameters);
$client = $query->getResult();
$contact = $em->getRepository(ClientContact::class)->findOneById($tracking->getContactId());
$breakdownControl = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'clientId' => $tracking->getClientId(),
'contactId' => $tracking->getContactId(),
)
);
$breakdown = null;
if (!empty($breakdownControl)){
$breakdown = $em->getRepository(CommercialBreakdownVolume::class)->findByControlId($breakdownControl->getId());
}
$fecha = $tracking->getDateAt()->format('d/m/Y');
$data = array(
'user' => $user,
'team' => $team,
'tracking' => $tracking,
'client' => $client['0'],
'contact' => $contact,
'breakdownControl' => $breakdownControl,
'breakdown' => $breakdown,
);
return $this->render('MDS/CommercialBundle/tracking/list-tracking-details.html.twig', array(
'tracking' => $data,
));
}
/**
* @Route("/tracking/historic/{id}", defaults={"id" = 0}, name="commercial_historic_list")
*/
public function listHistoricAction($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$trackingBase = $em->getRepository(CommercialTracking::class);
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$user_userrol = $user_logueado->getUserrol();
$user_team = $user_logueado->getTeam();
$user_teamleader = $user_logueado->getTeamleader();
/* VERIFICAR EL weight DEL USUARIO */
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
$nivelAcceso = $accesoNivel->getWeight();
$verNombre="no";
$user_url = array();
if($nivelAcceso <= '3' AND $user_teamleader == true){
$verNombre="si";
$user_del_team = $em->getRepository(User::class)->findByTeam($user_team);
$teamId = array();
foreach($user_del_team as $user){
$teamId[] = $user->getId();
$user_url[$user->getId()] = array(
'userid' => $user->getId(),
'name' => $user->getName()
);
};
$teamIdver= implode(",", $teamId);
if($id == "0"){
// $tracking = $em->getRepository(CommercialTracking::class)->findBy(
// array('dateAt' => 'DESC')
// );
$parameters = array(
'teamIdver' => $teamIdver
);
$dql = 'SELECT tr
FROM App\MDS\CommercialBundle\Entity\CommercialTracking tr
WHERE tr.commercialId IN ( :teamIdver )';
$query = $em->createQuery($dql)->setParameters($parameters);
$tracking = $query->getResult();
}else{
$tracking = $em->getRepository(CommercialTracking::class)->findBy(
array('commercialId' => $id),
array('dateAt' => 'DESC')
);
}
$usertitle = array(
'name' => 'All Tracking',
'lastname' => '',
'team' => 'Everybody'
);
}else{
$tracking = $em->getRepository(CommercialTracking::class)->findBy(
array('commercialId' => $user_id),
array('dateAt' => 'DESC')
);
$usertitle = $em->getRepository(User::class)->findOneById($user_id);
}
$data = array();
$client = array();
$n="0";
foreach($tracking as $trackings){
$commercial = $em->getRepository(User::class)->findOneById($trackings->getCommercialId());
$client = $em->getRepository(Client::class)->findOneById($trackings->getClientId());
$contact = $em->getRepository(ClientContact::class)->findOneById($trackings->getContactId());
$data[] = array(
'tracking' => $trackings,
'client' => $client,
'contact' => $contact,
'commercial' => $commercial,
);
}
return $this->render('MDS/CommercialBundle/historic/list-historic.html.twig', array(
'trackings' => $data,
'commercial' => $usertitle,
'userurl' => $user_url,
'verNombre' => $verNombre
));
}
/**
* @Route("/tracking/addcc/{cid}/{coid}", defaults={"cid" = 0, "coid" = 0}, name="commercial_tracking_add_client_contact")
*/
public function addCcAction($cid, $coid, Request $request)
{
$em = $this->getDoctrine()->getManager();
$tracking = new CommercialTracking();
// $tracking->setDateAt();
//d('entro');
$client = $em->getRepository(Client::class)->findOneById($cid);
//d($client); die();
$tracking->setClientId($client);
$tracking->setContactId($coid);
$tracking->setTimeStart(new \DateTime('00:00:00'));
$tracking->setTimeEnd(new \DateTime('00:00:00'));
$tracking->setDateAt(new \DateTime("now"));
$form = $this->createTrackingCreateForm($tracking);
return $this->render('MDS/CommercialBundle/tracking/add-tracking.html.twig', array('form' => $form->createView()));
}
/**
* @Route("/tracking/add/", name="commercial_tracking_add")
*/
public function addAction(Request $request)
{
$tracking = new CommercialTracking();
// $tracking->setDateAt();
$tracking->setTimeStart(new \DateTime('00:00:00'));
$tracking->setTimeEnd(new \DateTime('00:00:00'));
$tracking->setDateAt(new \DateTime("now"));
$form = $this->createTrackingCreateForm($tracking);
return $this->render('MDS/CommercialBundle/tracking/add-tracking.html.twig', array('form' => $form->createView()));
}
private function createTrackingCreateForm(CommercialTracking $entity)
{
$form = $this->createForm(CommercialTrackingType::class, $entity, array(
'action' => $this->generateUrl('commercial_tracking_create'),
'method' => 'POST'
));
return $form;
}
/**
* @Route("/tracking/create", name="commercial_tracking_create")
*/
public function createTrackingAction(Request $request)
{
/* prevenir que contacto no este en blanco */
// $contactId2 = $request->request->get('proposal')['contactId'];
$em = $this->getDoctrine()->getManager();
$tracking = new CommercialTracking();
$form = $this->createTrackingCreateForm($tracking);
$form->handleRequest($request);
$title = $form->get('title')->getData();
$contactId = $form->get('contactId')->getData();
$volume = $form->get('volume')->getData();
$year = $form->get('year')->getData();
$timeEnd = $form->get('timeEnd')->getData();
$payment = $form->get('payment')->getData();
$comerciales = $form->get('visit')->getData();
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$type = $form->get('clientType')->getData();
$titleIdConstraint = new Assert\NotBlank();
// $contactIdConstraint = new Assert\NotBlank();
$errorList = $this->validator->validate($title, $titleIdConstraint);
// $errorList = $this->validator->validate($contactId, $contactIdConstraint);
if (!count($errorList) == 0) {
$errorMessage_contact = $this->translator->trans('Check contact field');
} else {
$errorMessage_contact = "";
if($contactId !== null){
/* Consulta el agente comercial asignado */
$data_contact = $em->getRepository(ClientContact::class)->findOneById($contactId);
} else {
$data_contact = null;
}
}
if (count($errorList) == 0) {
// if ($form->isSubmitted()) {
// if ($form->isValid() && count($errorList) == 0) {
if(count($comerciales) > 0){
for ($i = 0; $i < count($comerciales); ++$i) {
$tracking = new CommercialTracking();
$form = $this->createTrackingCreateForm($tracking);
$form->handleRequest($request);
if (empty($timeEnd)) {
$tracking->setTimeEnd(new \DateTime('00:00:00'));
}
if ($type == 'supplier') {
$supplierID = $form->get('supplierId')->getData();
$tracking->setSupplierId($supplierID->getId());
$tracking->setClientId(0);
} elseif ($type == 'client') {
$client_tracking = $form->get('clientId')->getData();
if (!is_null($client_tracking)) {
$clientId = $client_tracking->getId();
$tracking->setClientId($client_tracking->getId());
$tracking->setSupplierId(0);
}
}
$tracking->setContactId($contactId);
$tracking->setCommercialId($comerciales[$i]->getId());
$tracking->setCreatedId($user_id);
$tracking->setUpdatedId($user_id);
$situation = $tracking->getSituation();
$status = $tracking->getStatus();
if (!empty($situation) and !empty($status)) {
if ($type == 'client') {
$data_client = $em->getRepository(Client::class)->findOneById($clientId);
$status_Client = $data_client->getAction();
if (
$status == "FOLLOW UP" or
$status == "INCIDENCE" or
$status == "RISK/RFP" or
$status == "CLIENT LOST"
) {
$status_Client = "CLIENT";
}
$data_client->setAction($status_Client);
$em->persist($data_client);
}
$data_contact->setSituation($situation);
$data_contact->setStatus($status);
$em->persist($data_contact);
$em->flush();
}
if (!empty($volume) AND !empty($year)) {
$data_control = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'contactId' => $contactId,
'year' => $year,
)
);
if ($tracking->getClientType() == 'client') {
$clientId = $clientId;
} elseif ($tracking->getClientType() == 'supplier') {
$clientId = 0;
}
if (empty($data_control)) {
$breakdowncontrol = new CommercialBreakdownVolumeControl();
$breakdowncontrol->setTrackingId($tracking->getId());
$breakdowncontrol->setClientId($clientId);
$breakdowncontrol->setContactId($contactId);
$breakdowncontrol->setYear($year);
$breakdowncontrol->setVolume($volume);
$breakdowncontrol->setCommercialId($user_id);
$breakdowncontrol->setPayment($payment);
$breakdowncontrol->setCreatedId($user_id);
$breakdowncontrol->setUpdatedId($user_id);
$em->persist($breakdowncontrol);
} else {
$breakdowncontroledit = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneById($data_control->getId());
$breakdowncontroledit->setTrackingId($tracking->getId());
$breakdowncontroledit->setYear($year);
$breakdowncontroledit->setVolume($volume);
$breakdowncontroledit->setCommercialId($user_id);
$breakdowncontroledit->setPayment($payment);
$breakdowncontroledit->setCreatedId($user_id);
$breakdowncontroledit->setUpdatedId($user_id);
$em->persist($breakdowncontroledit);
}
}
$em->persist($tracking);
}
} else {
$tracking = new CommercialTracking();
$form = $this->createTrackingCreateForm($tracking);
$form->handleRequest($request);
if (empty($timeEnd)) { $tracking->setTimeEnd(new \DateTime('00:00:00')); }
$typology = $request->request->get('commercialtracking')['typology'] ?? null;
if ($type == 'supplier') {
$supplierID = $form->get('supplierId')->getData();
$tracking->setSupplierId($supplierID->getId());
$tracking->setClientId(0);
if (!empty($typology) and $supplierID->getTypology() == null) {
$data_supplier = $em->getRepository(Supplier::class)->findOneById($supplierID);
$data_supplier->setTypology($typology);
$em->persist($data_supplier);
}
} elseif ($type == 'client') {
$client_tracking = $form->get('clientId')->getData();
if (!is_null($client_tracking)) {
$clientId = $client_tracking->getId();
$tracking->setClientId($client_tracking->getId());
$tracking->setSupplierId(0);
}
if (!empty($typology) and $client_tracking->getTypology() == null) {
$data_client = $em->getRepository(Client::class)->findOneById($clientId);
$data_client->setTypology($typology);
$em->persist($data_client);
}
}
$tracking->setContactId($contactId);
$tracking->setCommercialId($user_id);
$tracking->setCreatedId($user_id);
$tracking->setUpdatedId($user_id);
// $em->persist($tracking);
$situation = $tracking->getSituation();
$status = $tracking->getStatus();
if (!empty($situation) and !empty($status) and !empty($clientId)) {
if ($type == 'client') {
$data_client = $em->getRepository(Client::class)->findOneById($clientId);
$status_Client = $data_client->getAction();
if (
$status == "FOLLOW UP" or
$status == "INCIDENCE" or
$status == "RISK/RFP" or
$status == "CLIENT LOST"
) {
$status_Client = "CLIENT";
}
$data_client->setAction($status_Client);
$em->persist($data_client);
}
if (!empty($data_contact)) {
$data_contact->setSituation($situation);
$data_contact->setStatus($status);
$em->persist($data_contact);
$em->flush();
}
}
if (!empty($volume) AND !empty($year)) {
$data_control = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'contactId' => $contactId,
'year' => $year,
)
);
if ($tracking->getClientType() == 'client') {
$clientId = $clientId;
} elseif ($tracking->getClientType() == 'supplier') {
$clientId = 0;
}
if (empty($data_control)) {
$breakdowncontrol = new CommercialBreakdownVolumeControl();
$breakdowncontrol->setTrackingId($tracking->getId());
$breakdowncontrol->setClientId($clientId);
$breakdowncontrol->setContactId($contactId);
$breakdowncontrol->setYear($year);
$breakdowncontrol->setVolume($volume);
$breakdowncontrol->setCommercialId($user_id);
$breakdowncontrol->setPayment($payment);
$breakdowncontrol->setCreatedId($user_id);
$breakdowncontrol->setUpdatedId($user_id);
$em->persist($breakdowncontrol);
} else {
$breakdowncontroledit = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneById($data_control->getId());
$breakdowncontroledit->setTrackingId($tracking->getId());
$breakdowncontroledit->setYear($year);
$breakdowncontroledit->setVolume($volume);
$breakdowncontroledit->setCommercialId($user_id);
$breakdowncontroledit->setPayment($payment);
$breakdowncontroledit->setCreatedId($user_id);
$breakdowncontroledit->setUpdatedId($user_id);
$em->persist($breakdowncontroledit);
}
}
$em->persist($tracking);
}
$em->flush();
$event = 'The Commercial Tracking has been created.';
$successMessage = $this->translator->trans($event);
$this->addFlash('mensajetracking', $successMessage);
} else {
$errorMessagebase = $this->translator->trans('Error, some fields are empty');
$errorMessage = $errorMessagebase . ' | ' . $errorMessage_contact;
$this->addFlash('mensajetrackingerror', $errorMessage);
}
return $this->redirectToRoute('commercial_tracking_list');
}
/**
* @Route("/tracking/listdesplegable", name="post_tracking_select")
*/
public function clientSelectAction(Request $request) {
// $idclient = $_POST['client'];
$id = $_POST['client'];
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$em = $this->getDoctrine()->getManager();
$contacts = $em->getRepository(ClientContact::class)->findBy(
array(
'clientId' => $id
)
);
// if($user_role == "ROLE_ADMIN"){
// $contacts = $em->getRepository(ClientContact::class)->findBy(
// array(
// 'clientId' => $id
// )
// );
// }else{
// $contacts = $em->getRepository(ClientContact::class)->findBy(
// array(
// 'clientId' => $id,
// 'assignedAgent' => $user_id,
// )
//
// );
// }
$datos = array();
if (!empty($contacts)){
// $datos = array();
foreach($contacts as $contact){
$datos[] = array(
"idcliente" => $contact->getClientId(),
"id" => $contact->getId(),
"name" => $contact->getName(),
"lastname" => $contact->getLastname(),
"department" => $contact->getDepartment(),
);
$agenteid = $contact->getAssignedAgent();
}
}
// else
// {
// $datos[] = array(
// "idcliente" => '',
// "id" => '',
// "name" => $this->translator->trans('No assigned contact'),
// "lastname" => '',
// "department" => $this->translator->trans('Please add contact'),
// );
//
// }
/* VERIFICAR EL weight DEL USUARIO */
$user_userrol = $user_logueado->getUserrol();
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
if($user_role == "ROLE_ADMIN"){
$disabled = "no";
}else{
if ($agenteid == $user_id){
$disabled = "no";
}else{
$disabled = "yes";
}
}
$return = array(
'contacts' => $datos,
'disabled' => $disabled,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/contactSuppliers", name="tracking_supplier")
*/
public function suppliersSelectAction(Request $request) {
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
// $idclient = $_POST['client'];
$idSupplier = $_POST['idSupplier'];
// $idSupplier = 6;
// $idSupplier = 3;
$em = $this->getDoctrine()->getManager();
$supplierContact = $em->getRepository(SupplierContact::class)->findBySupplierId($idSupplier);
// d($supplierContact); die();
// if($user_role == "ROLE_ADMIN"){
// $contacts = $em->getRepository(ClientContact::class)->findBy(
// array(
// 'clientId' => $idclient
// )
// );
// }else{
// $contacts = $em->getRepository(ClientContact::class)->findBy(
// array(
// 'clientId' => $idclient,
// 'assignedAgent' => $user_id,
// )
//
// );
// }
$datos = array();
if (!empty($supplierContact)){
// $datos = array();
foreach($supplierContact as $contact){
$datos[] = array(
// "idcliente" => $contact->getClientId(),
"id" => $contact->getId(),
"name" => $contact->getName(),
"lastname" => $contact->getLastname(),
// "department" => $contact->getDepartment(),
);
// $agenteid = $contact->getAssignedAgent();
}
}
// d($datos); die();
// else
// {
// $datos[] = array(
// "idcliente" => '',
// "id" => '',
// "name" => $this->translator->trans('No assigned contact'),
// "lastname" => '',
// "department" => $this->translator->trans('Please add contact'),
// );
//
// }
/* VERIFICAR EL weight DEL USUARIO */
$user_userrol = $user_logueado->getUserrol();
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
// if($user_role == "ROLE_ADMIN"){
// $disabled = "no";
// }else{
// if ($agenteid == $user_id){
// $disabled = "no";
// }else{
// $disabled = "yes";
// }
// }
$return = array(
'contacts' => $datos,
// 'disabled' => $disabled,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/contactClients", name="tracking_clients")
*/
public function clientsSelectAction(Request $request) {
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$idClient = $_POST['client'];
$em = $this->getDoctrine()->getManager();
$supplierContact = $em->getRepository(ClientContact::class)->findByClientId($idClient);
$datos = array();
if (!empty($supplierContact)){
// $datos = array();
foreach($supplierContact as $contact){
$datos[] = array(
// "idcliente" => $contact->getClientId(),
"id" => $contact->getId(),
"name" => $contact->getName(),
"lastname" => $contact->getLastname(),
// "department" => $contact->getDepartment(),
);
// $agenteid = $contact->getAssignedAgent();
}
}
/* VERIFICAR EL weight DEL USUARIO */
$user_userrol = $user_logueado->getUserrol();
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
$return = array(
'contacts' => $datos,
// 'disabled' => $disabled,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/contactdepartment", name="get_edit_tracking_select_contact")
*/
// public function clientSelectActionEdit($idclient, $idtracking, Request $request) {
public function clientSelectActionContactEdit(Request $request) {
$id = $_POST['id'];
$em = $this->getDoctrine()->getManager();
$contacts = $em->getRepository(ClientContact::class)->findOneById($id);
$year_now = date('Y');
$datatrakincontrol = $em->getRepository(CommercialBreakdownVolumeControl::class)->findOneBy(
array(
'contactId' => $id,
// 'year' => $year_now,
)
);
if (!empty($datatrakincontrol)){
//$volume
if (is_null($datatrakincontrol->getVolume()) or empty($datatrakincontrol->getVolume())){
$volume = "";
}else{
$volume = $datatrakincontrol->getVolume();
}
//$year
if (is_null($datatrakincontrol->getYear()) or empty($datatrakincontrol->getYear())){
$year = "";
}else{
$year = $datatrakincontrol->getYear();
}
//$payment
if (is_null($datatrakincontrol->getPayment()) or empty($datatrakincontrol->getPayment())){
$payment = "";
}else{
$payment = $datatrakincontrol->getPayment();
}
}else{
$volume = "";
$year = "";
$payment = "";
}
//$department
if (!empty($contacts)){
$department = $contacts->getDepartment();
}else{
$department = $this->translator->trans('Please add contact');
}
$return = array(
'department' => $department,
'volume' => $volume,
'year' => $year,
'payment' => $payment,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/contactName", name="get_edit_tracking_contact")
*/
public function contactNameActionContactEdit(Request $request) {
$client = $_POST['client'];
$em = $this->getDoctrine()->getManager();
$contactCommercial = $em->getRepository(ClientContact::class)->findByClientId($client);
$return = array(
'contacts' => $contactCommercial,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/edit/{id}", name="commercial_tracking_edit")
*/
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$user_role = $user_logueado->getRole();
$user_userrol = $user_logueado->getUserrol();
/* VERIFICAR EL weight DEL USUARIO */
$accesoNivel = $em->getRepository(SettingsRol::class)->findOneById($user_userrol);
$nivelAcceso = $accesoNivel->getWeight();
$tracking = $em->getRepository(CommercialTracking::class)->findOneById($id);
if($tracking->getClientId() == 0){
$contact = $em->getRepository(SupplierContact::class)->findOneBy(array(
'id' => $tracking->getContactId(),
));
// $fullNameContact = $contact->getName().' '.$contact->getLastname();
$departament = null;
if($user_id == $tracking->getCommercialId() || $user_role == "ROLE_ADMIN" || $nivelAcceso <= '2'){
$client = $em->getRepository(Supplier::class)->findOneById($tracking->getSupplierId());
// d($client);
$tracking->setSupplierId($client);
// $tracking->setContactId($contact);
// d($tracking); die();
$form = $this->EditTrackingForm($tracking, $id);
return $this->render('MDS/CommercialBundle/tracking/edit-tracking.html.twig',
array(
'department' => $departament,
'form' => $form->createView()
)
);
}
}else{
$contact = $em->getRepository(ClientContact::class)->findOneBy(array(
'clientId' => $tracking->getClientId(),
'id' => $tracking->getContactId(),
));
$fullNameContact = $contact->getName().' '.$contact->getLastname();
$departament = $contact->getDepartment();
if($user_id == $tracking->getCommercialId() || $user_role == "ROLE_ADMIN" || $nivelAcceso <= '2'){
$client = $em->getRepository(Client::class)->findOneById($tracking->getClientId());
$tracking->setClientId($client);
// $tracking->setContactId($fullNameContact);
$form = $this->EditTrackingForm($tracking, $id);
return $this->render('MDS/CommercialBundle/tracking/edit-tracking.html.twig',
array(
'department' => $departament,
'form' => $form->createView()
)
);
}
}
return $this->redirectToRoute('error_access');
}
private function EditTrackingForm(CommercialTracking $entity, $id)
{
$form = $this->createForm(CommercialTrackingType::class, $entity,
array(
'action' => $this->generateUrl('commercial_tracking_update',
array(
'id' => $id
)
)));
return $form;
}
/**
* @Route("/tracking/update/{id}", name="commercial_tracking_update", methods={"POST"})
*/
public function updateAction($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$tracking = $em->getRepository(CommercialTracking::class)->findOneById($id);
$form = $this->EditTrackingForm($tracking, $id);
$form->handleRequest($request);
if($tracking->getClientType() == 'supplier'){
$client_proposal = $form->get('supplierId')->getData();
$tracking->setSupplierId($client_proposal->getId());
$tracking->setClientId(0);
}else{
$client_proposal = $form->get('clientId')->getData();
$tracking->setClientId($client_proposal->getId());
$tracking->setSupplierId(0);
}
if($form->isValid())
{
if($tracking->getClientType() == 'supplier') {
$data_contact = $em->getRepository(SupplierContact::class)->findOneById($tracking->getContactId());
}else{
$data_contact = $em->getRepository(ClientContact::class)->findOneById($tracking->getContactId());
$situation = $tracking->getSituation();
if (!empty($situation)){
$data_contact->setSituation($situation);
$em->persist($data_contact);
$em->flush();
}
}
/* Obtengo usuario logueado */
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
$tracking->getUpdatedId($user_id);
/* Gestión de eventos en Log */
$user_lastname = $user_logueado->getLastname();
$user_name = $user_logueado->getName();
$user_email = $user_logueado->getEmail();
$user_rol = $user_logueado->getRoles();
$event_url = $request->getPathInfo();
$event_complete = $user_name.' '.$user_lastname.' - '.$user_email.' - '.$user_rol[0].' | '.$event_url;
$em->persist($tracking);
$em->flush();
$event = 'The Tracking has been Updated. Now';
$successMessage = $this->translator->trans($event);
$this->addFlash('mensajetracking', $successMessage);
return $this->redirectToRoute('commercial_tracking_list',
array(
'_fragment' => 's'.$tracking->getId()
)
);
}else{
$errorMessage = $this->translator->trans('Error, some fields are empty');
$this->addFlash('mensajetrackingerror', $errorMessage);
}
return $this->render('MDS/CommercialBundle/tracking/edit-tracking.html.twig', array(
'department' => '',
'form' => $form->createView()
)
);
}
/**
* @Route("/tracking/events", name="get_commercial_tracking_select")
*/
public function TrackingSelectAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$user_logueado = $this->get('security.token_storage')->getToken()->getUser();
$user_id = $user_logueado->getId();
// $trackings = $em->getRepository(CommercialTracking::class)->findBy(
// array('commercialId' => $user_id),
// array('timeStart' => 'ASC')
// );
$parametersA = array(
'commercialId' => $user_id
);
$dql = 'SELECT ct, cl.title, cn.name, cn.lastName, cn.phone, cn.mobile, cn.email
FROM App\MDS\CommercialBundle\Entity\CommercialTracking ct
INNER JOIN App:Client cl WITH cl.id = ct.clientId
INNER JOIN App:ClientContact cn WITH cn.id = ct.contactId
WHERE ct.commercialId = :commercialId
ORDER BY ct.timeStart ASC ';
$query = $em->createQuery($dql)->setParameters($parametersA);;
$trackings = $query->getResult();
$parametersB = array(
'commercialId' => $user_id,
);
$dqlb = 'SELECT ct, cl.title, cn.name, cn.lastName, cn.phone, cn.mobile, cn.email
FROM App\MDS\CommercialBundle\Entity\CommercialTracking ct
INNER JOIN App:Client cl WITH cl.id = ct.clientId
INNER JOIN App:ClientContact cn WITH cn.id = ct.contactId
WHERE ct.commercialId = :commercialId
AND ct.alertAt is not NULL
ORDER BY ct.timeStart ASC ';
$queryb = $em->createQuery($dqlb)->setParameters($parametersB);;
$trackingAlerts = $queryb->getResult();
$datos = array();
if (!empty($trackings) or !empty($trackingAlerts)){
foreach($trackings as $tracking){
if(empty($tracking['0']->getTitle())){
$title = $tracking['0']->getTimeStart()->format('H:i').' | '.$this->translator->trans('Tracking of commercial performance in client');
}else{
$title = $tracking['0']->getTimeStart()->format('H:i').' | '.$tracking['0']->getTitle();
}
$client_tr = $this->translator->trans('Client');
$contact_tr = $this->translator->trans('Contact');
$telephone_tr = $this->translator->trans('Telephone');
$mobile_tr = $this->translator->trans('Mobile');
$tooltip = $title."<br>".$client_tr.": <b>".$tracking['title']."</b><br>
".$contact_tr.": <b>".$tracking['name']." ".$tracking['lastName']."</b><br>
<i class='icon-phone position-left'></i>".$telephone_tr.": ".$tracking['phone']." <br>
<i class='icon-mobile position-left'></i>".$mobile_tr.": ".$tracking['mobile']."<br>
<i class='icon-mail-read position-left'></i>: ".$tracking['email']."<br><br>
".$tracking['0']->getMessage();
$datos[] = array(
"id" => $tracking['0']->getId(),
"title" => $title,
"tooltip" => $tooltip,
"date" => $tracking['0']->getDateAt(),
"start" => $tracking['0']->getTimeStart()->format('H:i'),
"end" => $tracking['0']->getTimeEnd()->format('H:i'),
"color" => '#01DF01',
"url" => "commercial/tracking/details/".$tracking['0']->getId()
);
}
if (!empty($trackingAlerts)){
foreach($trackingAlerts as $trackingAlert){
$reminder_tr = $this->translator->trans('Reminder');
if(empty($trackingAlert['0']->getTitle())){
$titleB = $reminder_tr.': '.$this->translator->trans('Tracking of commercial performance in client');
}else{
$titleB = $reminder_tr.': '.$trackingAlert['0']->getTitle();
}
$client_tr = $this->translator->trans('Client');
$contact_tr = $this->translator->trans('Contact');
$telephone_tr = $this->translator->trans('Telephone');
$mobile_tr = $this->translator->trans('Mobile');
$tooltipB = $reminder_tr.": ".$title."<br>".$client_tr.": <b>".$trackingAlert['title']."</b><br>
".$contact_tr.": <b>".$trackingAlert['name']." ".$trackingAlert['lastName']."</b><br>
<i class='icon-phone position-left'></i>".$telephone_tr.": ".$trackingAlert['phone']." <br>
<i class='icon-mobile position-left'></i>".$mobile_tr.": ".$trackingAlert['mobile']."<br>
<i class='icon-mail-read position-left'></i>: ".$trackingAlert['email']."<br><br>
".$trackingAlert['0']->getMessage();
$datos[] = array(
"id" => $trackingAlert['0']->getId(),
"title" => $titleB,
"tooltip" => $tooltipB,
"date" => $trackingAlert['0']->getAlertAt(),
"start" => $trackingAlert['0']->getTimeStart()->format('H:i'),
"end" => $trackingAlert['0']->getTimeEnd()->format('H:i'),
"color" => '#610B0B',
"url" => "commercial/tracking/details/".$trackingAlert['0']->getId()
);
}
}
}
else
{
$datos = [];
}
$return = array(
'tracking' => $datos,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/statistics/{iduser}/{desde}/{hasta}", name="post_commercial_tracking_statistics")
*/
public function statisticsSelectAction($iduser, $desde, $hasta, Request $request) {
// $iduser = $_POST['iduser'];
$em = $this->getDoctrine()->getManager();
// $commercials = $em->getRepository(CommercialTracking::class)->findByCommercialId($iduser);
// $desde = date_create($desde);
// $hasta = date_create($hasta);
// $desde = Date('now');
// $hasta = Date('now');
$parametersA = array(
'commercialId' => $iduser,
'desde' => $desde,
'hasta' => $hasta,
);
$dql = 'SELECT ct
FROM App\MDS\CommercialBundle\Entity\CommercialTracking ct
WHERE ct.commercialId = :commercialId
AND ct.createdAt >= :desde
AND ct.createdAt <= :hasta
ORDER BY ct.id ASC ';
$query = $em->createQuery($dql)->setParameters($parametersA);;
$commercials = $query->getResult();
// d($commercials);
$stllamada = strtoupper($this->translator->trans('CALL'));
$llamada = 0;
$stalcance = strtoupper($this->translator->trans('SCOPE'));
$alcance = 0;
$stseguimiento = strtoupper($this->translator->trans('TRACING'));
$seguimiento = 0;
$stpresentacion = strtoupper($this->translator->trans('PRESENTATION'));
$presentacion = 0;
$stpresentacionSend = strtoupper($this->translator->trans('PRESENTATION SEND'));
$presentacionSend = 0;
$stofertaPendiente = strtoupper($this->translator->trans('PENDING OFFER'));
$ofertaPendiente = 0;
$stofertaEnviada = strtoupper($this->translator->trans('OFFER SENT'));
$ofertaEnviada = 0;
$stofertaPresentada = strtoupper($this->translator->trans('PRESENTED OFFER'));
$ofertaPresentada= 0;
$stofertaDescartada = strtoupper($this->translator->trans('OFFER DISCARDED'));
$ofertaDescartada = 0;
$stofertaDescartadaSeg = strtoupper($this->translator->trans('OFFERED DISCARDED TRACKING'));
$ofertaDescartadaSeg = 0;
$stcliente = strtoupper($this->translator->trans('CLIENT'));
$cliente= 0;
$stclientePerdido = strtoupper($this->translator->trans('CLIENT LOST'));
$clientePerdido = 0;
foreach($commercials as $commercial){
switch ($commercial->getSituation()) {
case "CALL":
$llamada = $llamada + 1;
break;
case "SCOPE":
$alcance = $alcance + 1;
break;
case "TRACING":
$seguimiento = $seguimiento + 1;
break;
case "PRESENTATION":
$presentacion = $presentacion + 1;
break;
case "PRESENTATION SEND":
$presentacionSend = $presentacionSend + 1;
break;
case "PENDING OFFER":
$ofertaPendiente = $ofertaPendiente + 1;
break;
case "OFFER SENT":
$ofertaEnviada = $ofertaEnviada + 1;
break;
case "PRESENTED OFFER":
$ofertaPresentada = $ofertaPresentada + 1;
break;
case "OFFER DISCARDED":
$ofertaDescartada = $ofertaDescartada + 1;
break;
case "OFFERED DISCARDED TRACKING":
$ofertaDescartadaSeg = $ofertaDescartadaSeg + 1;
break;
case "CLIENT":
$cliente = $cliente + 1;
break;
case "CLIENT LOST":
$clientePerdido = $clientePerdido + 1;
break;
}
}
$datos = array(
"llamada" => array(
'status' => $stllamada,
'value' => $llamada,
),
"alcance" => array(
'status' => $stalcance,
'value' => $alcance,
),
"seguimiento" => array(
'status' => $stseguimiento,
'value' => $seguimiento,
),
"presentacion" => array(
'status' => $stpresentacion,
'value' => $presentacion,
),
"presentacionSend" => array(
'status' => $stpresentacionSend,
'value' => $presentacionSend,
),
"ofertaPendiente" => array(
'status' => $stofertaPendiente,
'value' => $ofertaPendiente,
),
"ofertaEnviada" => array(
'status' => $stofertaEnviada,
'value' => $ofertaEnviada,
),
"ofertaPresentada" => array(
'status' => $stofertaPresentada,
'value' => $ofertaPresentada,
),
"ofertaDescartada" => array(
'status' => $stofertaDescartada,
'value' => $ofertaDescartada,
),
"ofertaDescartadaSeg" => array(
'status' => $stofertaDescartadaSeg,
'value' => $ofertaDescartadaSeg,
),
"cliente" => array(
'status' => $stcliente,
'value' => $cliente,
),
"clientePerdido" => array(
'status' => $stclientePerdido,
'value' => $clientePerdido,
),
);
// $datos = array(
// "llamada" => $llamada,
// "alcance" => $alcance,
// "seguimiento" => $seguimiento,
// "presentacion" => $presentacion,
// "presentacionSend" => $presentacionSend,
// "ofertaPendiente" => $ofertaPendiente,
// "ofertaEnviada" => $ofertaEnviada,
// "ofertaPresentada" => $ofertaPresentada,
// "ofertaDescartada" => $ofertaDescartada,
// "ofertaDescartadaSeg" => $ofertaDescartadaSeg,
// "cliente" => $cliente,
// "clientePerdido" => $clientePerdido,
// );
$return = array(
'datos' => $datos,
);
$response = new JsonResponse($return);
return $response;
}
/**
* @Route("/tracking/user", name="commercial_statistics_tracing_user")
*/
public function CommercialuserAction(Request $request) {
$em = $this->getDoctrine()->getManager();
$tracing_user = $em->getRepository(CommercialTracking::class)->findAll();
foreach($tracing_user as $tracinguser){
$idUserdata[$tracinguser->getCommercialId()] = $tracinguser->getCommercialId();
}
foreach($idUserdata as $idUserdos){
$idUser[] = $idUserdos;
}
$return = array(
'idUser' => $idUser,
'year' => date('2016-01-01'),
'today' => date('Y-m-d')
);
$response = new JsonResponse($return);
return $response;
}
}