src/Controller/ChatController.php line 651

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ZAPP\HistorialMensajesWhatsapp;
  4. use App\Service\Utils;
  5. use App\Service\UtilsGestion;
  6. use App\Service\UtilsTools;
  7. use App\Service\UtilsZAPP;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use stdClass;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class ChatController extends AbstractController
  15. {
  16.     /**
  17.      * @Route("/chat/{afiliadoId}/{whabaId}", name="chat")
  18.      */
  19.     public function chat(
  20.         Request $request,
  21.         ManagerRegistry $managerRegistry,
  22.         Utils $utils,
  23.         $afiliadoId '',
  24.         $whabaId ''
  25.     ) {
  26.         $oEm $managerRegistry->getManager();
  27.         $oCentro $oEm->getRepository('App\Entity\ZAPP\Centros')
  28.             ->findOneBy(['idAfiliado' => $afiliadoId]);
  29.         if ($afiliadoId == 620) {
  30.             dd();
  31.         }
  32.         $oConfiguracion $oEm->getRepository('App\Entity\ZAPP\Configuracion')
  33.             ->findOneBy([
  34.                 'keyIdentificador' => 'whaba_id',
  35.                 'centroId' => $oCentro->getIdCentro(),
  36.                 'valor' => $whabaId
  37.             ]);
  38.         $valorWhabaId '';
  39.         if (!is_null($oConfiguracion)) {
  40.             $valorWhabaId $oConfiguracion->getValor();
  41.         } else {
  42.             $valorWhabaId $whabaId;
  43.         }
  44.         $oConversaciones $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  45.             ->getConversationsByPhoneOrigen($valorWhabaId$oCentro->getIdCentro(), 20);
  46.         $aConversaciones = [];
  47.         foreach ($oConversaciones as $conversacion) {
  48.             $numTelefono = ($conversacion['whabaDestinoId'] === $valorWhabaId) ? $conversacion['whabaOrigenId'] : $conversacion['whabaDestinoId'];
  49.             if ((strpos($numTelefono"34") === 0)) {
  50.                 $numTelefono substr($numTelefono2);
  51.             }
  52.             if (strpos($numTelefono"+34") === 0) {
  53.                 $numTelefono substr($numTelefono3);
  54.             }
  55.             if (strpos($numTelefono"4") === 0) {
  56.                 $numTelefono substr($numTelefono1);
  57.             }
  58.             $aTotalNotificaciones $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  59.                 ->getTotalNotificaciones($numTelefono$conversacion['centroId'], $valorWhabaId);
  60.             $oPacientesVC = [];
  61.             $pacienteVc '';
  62.             $oTelefonosPacienteVC $oEm->getRepository('App\Entity\ZAPP\TelefonosPacienteVc')->findBy(array('numeroTelefono' => $numTelefono));
  63.             foreach ($oTelefonosPacienteVC as $numTelefonoPacienteVc) {
  64.                 $pacienteVc $numTelefonoPacienteVc->getPacienteVc();
  65.                 if ($pacienteVc->getCentroId() == $oCentro->getIdCentro()) {
  66.                     array_push($oPacientesVC$pacienteVc);
  67.                 }
  68.             }
  69.             $aPacientesPorConversacion = [];
  70.             $imagen '';
  71.             //Quitamos duplicados...
  72.             $oPacientesVC array_map('serialize'$oPacientesVC);
  73.             $oPacientesVC array_unique($oPacientesVCSORT_REGULAR);
  74.             $oPacientesVC array_map('unserialize'$oPacientesVC);
  75.             foreach ($oPacientesVC as $pacienteVc) {
  76.                 if (!is_null($pacienteVc)) {
  77.                     $imagen $pacienteVc->getFoto();
  78.                     if ((strpos($imagen'phpPerfil') === false) && (strpos($imagen'phppaciente') === false)) {
  79.                         $imagen '';
  80.                     }
  81.                 }
  82.                 array_push(
  83.                     $aPacientesPorConversacion,
  84.                     [
  85.                         'vcId' => $pacienteVc->getIdVc(), //Array de VCIDs
  86.                         'nombre_familia' => ucwords(strtolower((!is_null($pacienteVc)) ? $pacienteVc->getApellidos() : $pacienteVc->getIdVc())),
  87.                         'nombre_paciente' => ucwords(strtolower((!is_null($pacienteVc)) ? $pacienteVc->getNombre() : '')),
  88.                         'imagen' => $imagen,
  89.                     ]
  90.                 );
  91.             }
  92.             if (!isset($aConversaciones[$numTelefono]) || $conversacion['maxFechaCreacion'] > $aConversaciones[$numTelefono]['fecha_creacion']) {
  93.                 $aConversaciones[$numTelefono] = [
  94.                     'centroId' => $oCentro->getIdCentro(),
  95.                     'pacientes' => $aPacientesPorConversacion,
  96.                     'num_telefono' => $numTelefono,
  97.                     'total_notificaciones' => $aTotalNotificaciones[0]['totalLeido'],
  98.                     'fecha_creacion' => $conversacion['maxFechaCreacion']
  99.                 ];
  100.             }
  101.         }
  102.         //sort($aConversaciones);
  103.         $column array_column($aConversaciones'total_notificaciones');
  104.         $columnFechaCreacion array_column($aConversaciones'fecha_creacion');
  105.         array_multisort($columnSORT_DESC$columnFechaCreacionSORT_DESC$aConversaciones);
  106.         //array_multisort($column, SORT_DESC, $aConversaciones);
  107.         $aConversaciones array_slice($aConversaciones020);
  108.         $data = [
  109.             'aConversaciones' => $aConversaciones,
  110.             'whabaOrigen' => $valorWhabaId,
  111.             'afiliadoId' => $afiliadoId,
  112.             'centroId' => $oCentro->getIdCentro()
  113.         ];
  114.         return $this->render('chat/base_chat.html.twig'$data);
  115.         /*         foreach ($aConversaciones as $keyNumTelefono => $valueNumTelfono) {
  116.             foreach ($valueNumTelfono as $keyVcId => $valueConversacion) {
  117.                 $aConversacionesTemp[] = [
  118.                     'centroId' => $valueConversacion['centroId'],
  119.                     'vcId' => $valueConversacion['vcId'],
  120.                     'num_telefono' => $valueConversacion['num_telefono'],
  121.                     'nombre_familia' => $valueConversacion['nombre_familia'],
  122.                     'nombre_paciente' => $valueConversacion['nombre_paciente'],
  123.                     'imagen' => $valueConversacion['imagen'],
  124.                     'total_notificaciones' => $valueConversacion['total_notificaciones'],
  125.                     'fecha_creacion' => $valueConversacion['fecha_creacion']
  126.                 ];
  127.             }
  128.         } */
  129.         /* $oPacienteVC = $oEm->getRepository('App\Entity\ZAPP\PacienteVc')
  130.                 ->findOneBy(['idVc' => $conversacion['vcId'], 'centroId' => $conversacion['centroId']]); */
  131.     }
  132.     /**
  133.      * @Route("/consulta-consumos/{afiliadoId}/", name="consulta_consumos")
  134.      */
  135.     public function consultaConsumos(
  136.         Request $request,
  137.         ManagerRegistry $managerRegistry,
  138.         UtilsTools $utilsTools,
  139.         Utils $utils,
  140.         $afiliadoId ''
  141.     ) {
  142.         $oEm $managerRegistry->getManager();
  143.         $oCentro $oEm->getRepository('App\Entity\ZAPP\Centros')
  144.             ->findOneBy(['idAfiliado' => $afiliadoId]);
  145.         $dbItem $utilsTools->getWhabaCentroId($oCentro->getIdCentro());
  146.         $whaba $dbItem["whaba_id"];
  147.         $messageCounts = [];
  148.         // Get the current date
  149.         $currentDate = new \DateTime();
  150.         // Iterate over the last three months
  151.         for ($i 0$i 3$i++) {
  152.             // Clone the current date and subtract months
  153.             $date = clone $currentDate;
  154.             $date->modify("-$i months");
  155.             // Extract year and month
  156.             $year $date->format('Y');
  157.             $month $date->format('m');
  158.             // Call the function and store the result in the array
  159.             $messageCounts["$year-$month"] = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  160.                 ->countMessagesByWhabaIdAndMonth($whaba$month$year);
  161.         }
  162.         $messageCounts["centro"] = $oCentro->getNombreCentro();
  163.         dd($messageCounts);
  164.     }
  165.     /**
  166.      * @Route("/get-listado-conversaciones/{whabaOrigen}/{numTelefonoSelected}", name="get_listado_conversaciones")
  167.      */
  168.     public function getListadoConversaciones(
  169.         Request $request,
  170.         ManagerRegistry $managerRegistry,
  171.         UtilsTools $utilsTools,
  172.         Utils $utils,
  173.         $whabaOrigen '',
  174.         $numTelefonoSelected ''
  175.     ) {
  176.         $oEm $managerRegistry->getManager();
  177.         $oConfiguracion $oEm->getRepository('App\Entity\ZAPP\Configuracion')
  178.             ->findOneBy(['valor' => $whabaOrigen]);
  179.         $centroId '';
  180.         if (!is_null($oConfiguracion)) {
  181.             $centroId $oConfiguracion->getCentroId();
  182.         } else {
  183.             $objConfUserWhaba $utilsTools->getConfiguracionUserTelefonoByWhabaId($whabaOrigen);
  184.             $centroId $objConfUserWhaba->centro_id;
  185.         }
  186.         $oCentro $oEm->getRepository('App\Entity\ZAPP\Centros')
  187.             ->findOneBy(['idCentro' => $centroId]);
  188.         $oConversaciones $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  189.             ->getConversationsByPhoneOrigen($whabaOrigen$centroId100);
  190.         $aConversaciones = [];
  191.         foreach ($oConversaciones as $conversacion) {
  192.             $numTelefono = ($conversacion['whabaDestinoId'] === $whabaOrigen) ? $conversacion['whabaOrigenId'] : $conversacion['whabaDestinoId'];
  193.             if ($numTelefono == "" || $numTelefono === null) {
  194.                 continue;
  195.             }
  196.             if ((strpos($numTelefono"34") === 0)) {
  197.                 $numTelefono substr($numTelefono2);
  198.             }
  199.             if (strpos($numTelefono"+34") === 0) {
  200.                 $numTelefono substr($numTelefono3);
  201.             }
  202.             if (strpos($numTelefono"4") === 0) {
  203.                 $numTelefono substr($numTelefono1);
  204.             }
  205.             $aTotalNotificaciones $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  206.                 ->getTotalNotificaciones($numTelefono$conversacion['centroId'], $whabaOrigen);
  207.             $oPacientesVC = [];
  208.             $pacienteVc '';
  209.             $oTelefonosPacienteVC $oEm->getRepository('App\Entity\ZAPP\TelefonosPacienteVc')->findBy(array('numeroTelefono' => $numTelefono));
  210.             foreach ($oTelefonosPacienteVC as $numTelefonoPacienteVc) {
  211.                 $pacienteVc $numTelefonoPacienteVc->getPacienteVc();
  212.                 if ($pacienteVc->getCentroId() == $oCentro->getIdCentro()) {
  213.                     array_push($oPacientesVC$pacienteVc);
  214.                 }
  215.             }
  216.             $aPacientesPorConversacion = [];
  217.             $imagen '';
  218.             //Quitamos duplicados...
  219.             $oPacientesVC array_map('serialize'$oPacientesVC);
  220.             $oPacientesVC array_unique($oPacientesVCSORT_REGULAR);
  221.             $oPacientesVC array_map('unserialize'$oPacientesVC);
  222.             foreach ($oPacientesVC as $pacienteVc) {
  223.                 if (!is_null($pacienteVc)) {
  224.                     $imagen $pacienteVc->getFoto();
  225.                     if ((strpos($imagen'phpPerfil') === false) && (strpos($imagen'phppaciente') === false)) {
  226.                         $imagen '';
  227.                     }
  228.                 }
  229.                 array_push(
  230.                     $aPacientesPorConversacion,
  231.                     [
  232.                         'vcId' => $pacienteVc->getIdVc(), //Array de VCIDs
  233.                         'nombre_familia' => ucwords(strtolower((!is_null($pacienteVc)) ? $pacienteVc->getApellidos() : $pacienteVc->getIdVc())),
  234.                         'nombre_paciente' => ucwords(strtolower((!is_null($pacienteVc)) ? $pacienteVc->getNombre() : '')),
  235.                         'imagen' => $imagen,
  236.                     ]
  237.                 );
  238.             }
  239.             if (!isset($aConversaciones[$numTelefono]) || $conversacion['maxFechaCreacion'] > $aConversaciones[$numTelefono]['fecha_creacion']) {
  240.                 $aConversaciones[$numTelefono] = [
  241.                     'centroId' => $oCentro->getIdCentro(),
  242.                     'pacientes' => $aPacientesPorConversacion,
  243.                     'num_telefono' => $numTelefono,
  244.                     'total_notificaciones' => $aTotalNotificaciones[0]['totalLeido'],
  245.                     'fecha_creacion' => $conversacion['maxFechaCreacion']
  246.                 ];
  247.             }
  248.         }
  249.         $column array_column($aConversaciones'total_notificaciones');
  250.         $columnFechaCreacion array_column($aConversaciones'fecha_creacion');
  251.         array_multisort($columnSORT_DESC$columnFechaCreacionSORT_DESC$aConversaciones);
  252.         $datos = [
  253.             'aConversaciones' => $aConversaciones,
  254.             'numTelefonoSelected' => $numTelefonoSelected
  255.         ];
  256.         return $this->render('chat/listado-chat.html.twig'$datos);
  257.         /*         foreach ($oConversaciones as $conversacion) {
  258.             $oPacienteVC = $oEm->getRepository('App\Entity\ZAPP\PacienteVc')
  259.                 ->findOneBy(['idVc' => $conversacion['vcId'], 'centroId' => $conversacion['centroId']]);
  260.             $aTotalNotificaciones = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  261.                 ->getTotalNotificaciones($conversacion['vcId'], $conversacion['centroId']);
  262.             $numTelefono = ($conversacion['whabaDestinoId'] === $whabaOrigen) ? $conversacion['whabaOrigenId'] : $conversacion['whabaDestinoId'];
  263.             $imagen = '';
  264.             if (!is_null($oPacienteVC)) {
  265.                 $imagen = $oPacienteVC->getFoto();
  266.                 if ((strpos($imagen, 'phpPerfil') === false) && (strpos($imagen, 'phppaciente') === false)) {
  267.                     $imagen = '';
  268.                 }
  269.             }
  270.             if ((strpos($numTelefono, "34") !== false) || (strpos($numTelefono, "+34") !== false)) {
  271.                 $numTelefono = substr($numTelefono, "2");
  272.             }
  273.             $aConversaciones[$numTelefono][$conversacion['vcId']] = [
  274.                 'centroId' => $conversacion['centroId'],
  275.                 'vcId' => $conversacion['vcId'],
  276.                 'num_telefono' => $numTelefono,
  277.                 'nombre_familia' => (!is_null($oPacienteVC)) ? $oPacienteVC->getApellidos() : $conversacion['vcId'],
  278.                 'nombre_paciente' => (!is_null($oPacienteVC)) ? $oPacienteVC->getNombre() : '',
  279.                 'imagen' => $imagen,
  280.                 'total_notificaciones' => $aTotalNotificaciones[0]['totalLeido'],
  281.                 'fecha_creacion' => $conversacion['fechaCreacion']
  282.             ];
  283.         }
  284.         $aConversacionesTmp = [];
  285.         foreach ($aConversaciones as $keyNumTelefono => $valueNumTelfono) {
  286.             $aVCIDsNumTlf = [];
  287.             foreach ($valueNumTelfono as $keyVcId => $valueConversacion) {
  288.                 array_push($aVCIDsNumTlf, [
  289.                     'vcId_paciente' => $valueConversacion['vcId'],
  290.                     'nombre_paciente' => ucwords(strtolower($valueConversacion['nombre_paciente'])),
  291.                     'nombre_familia_paciente' => ucwords(strtolower($valueConversacion['nombre_familia']))
  292.                 ]);
  293.             }
  294.             $aConversacionesTmp[] = [
  295.                 'centroId' => $valueConversacion['centroId'],
  296.                 'pacientes' => $aVCIDsNumTlf,
  297.                 'num_telefono' => $valueConversacion['num_telefono'],
  298.                 'imagen' => $valueConversacion['imagen'],
  299.                 'total_notificaciones' => $valueConversacion['total_notificaciones'],
  300.                 'fecha_creacion' => $valueConversacion['fecha_creacion']
  301.             ];
  302.         } */
  303.         /*        foreach ($aConversaciones as $keyNumTelefono => $valueNumTelefono) {
  304.             foreach ($valueNumTelefono as $keyVcId => $value) {
  305.                 $aConversacionesTmp[] = [
  306.                     'centroId' => $value['centroId'],
  307.                     'vcId' => $value['vcId'],
  308.                     'num_telefono' => $value['num_telefono'],
  309.                     'nombre_familia' => $value['nombre_familia'],
  310.                     'nombre_paciente' => $value['nombre_paciente'],
  311.                     'imagen' => $value['imagen'],
  312.                     'total_notificaciones' => $value['total_notificaciones'],
  313.                     'fecha_creacion' => $value['fecha_creacion']
  314.                 ];
  315.             }
  316.         } */
  317.     }
  318.     /**
  319.      * @Route("/get-conversacion/{whabaOrigenId}/{numTelefono}/{centroId}", name="get_conversacion")
  320.      */
  321.     public function getConversacion(
  322.         Request $request,
  323.         ManagerRegistry $managerRegistry,
  324.         Utils $utils,
  325.         UtilsZAPP $utilsZAPP,
  326.         $whabaOrigenId '',
  327.         $vcId '',
  328.         $numTelefono '',
  329.         $centroId ''
  330.     ) {
  331.         $oEm $managerRegistry->getManager();
  332.         $aTelefonoPaciente = [];
  333.         $oHistorialMensajes $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  334.             ->getConversacionByPhone($numTelefono$centroId$whabaOrigenId);
  335.         $oTelefonosPacientes $oEm->getRepository('App\Entity\ZAPP\TelefonosPacienteVc')
  336.             ->findBy(['numeroTelefono' => $numTelefono]);
  337.         $oPacientesVC = [];
  338.         $aPacientesVCIDs = [];
  339.         $aTelefonoPaciente = [];
  340.         foreach ($oTelefonosPacientes as $telefonoPaciente) {
  341.             $pacienteVc $telefonoPaciente->getPacienteVc();
  342.             if ($pacienteVc->getCentroId() == $centroId) {
  343.                 array_push($oPacientesVC$pacienteVc);
  344.                 array_push($aPacientesVCIDs$pacienteVc->getIdVc());
  345.                 array_push($aTelefonoPaciente$telefonoPaciente->getTipoTelefono());
  346.             }
  347.         }
  348.         //Quitamos duplicados...
  349.         $oPacientesVC array_map('serialize'$oPacientesVC);
  350.         $oPacientesVC array_unique($oPacientesVCSORT_REGULAR);
  351.         $oPacientesVC array_map('unserialize'$oPacientesVC);
  352.         if ($oPacientesVC === []) {
  353.             $array = array("numerotelefonodesconocido" => $numTelefono);
  354.             $oPacientesVC = array(json_decode(json_encode($array)));
  355.         }
  356.         //Pretendía dar la señal para crear el nuevo pacienteVC de filemaker pero no tengo su id...
  357.         /* if (is_null($aPacientesVCID)) {
  358.             foreach ($aPacientesVCID as $pacienteVC) {
  359.                 $utilsZAPP->createUpdatePacienteMySQL($vcId, $centroId);
  360.             }
  361.         } */
  362.         //Aqui scaa el numero de telefono si no lo conoce. Pero doy por hecho que todo lo que salga en la lista de chats está OK
  363.         /* if (empty($oTelefonosPacientes)) {
  364.             $utilsZAPP->createTelefonoPacienteMySQL($oPacienteVc, $vcId, $centroId);
  365.             $oPacienteTelefonos = $oEm->getRepository('App\Entity\ZAPP\TelefonosPacienteVc')
  366.                 ->findBy(['pacienteVc' => $oPacienteVc]);
  367.         } */
  368.         /*         dd($o)
  369.         foreach ($oTelefonosPacientes as $pacienteTelefono) {
  370.             
  371.         } */
  372.         //Marcamos como leidas las notificaciones TODO- Ver si esto ya puede funcionar sin ID!!!
  373.         $oHistorialMensajesNotificaciones $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  374.             ->getMessageIsOrNotRead($numTelefono$centroId);
  375.         foreach ($oHistorialMensajesNotificaciones as $historialMensajesNotificacione) {
  376.             $historialMensajesNotificacione->setIsRead(true);
  377.             $historialMensajesNotificacione->setFechaRead(new \DateTime('now'));
  378.             $oEm->persist($historialMensajesNotificacione);
  379.             $oEm->flush();
  380.         }
  381.         //Comparamos si ha pasado mas de 48 horas, para cargar la plantilla generica
  382.         $oLastMessage $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  383.             ->getLastMessage($numTelefono$centroId$whabaOrigenId);
  384.         $isTemplateSend false;
  385.         if (!is_null($oLastMessage)) {
  386.             $fechaActual = new \DateTime('now');
  387.             $horaDiferencia $fechaActual->diff($oLastMessage->getFechaCreacion());
  388.             if ($horaDiferencia->days >= 1) {
  389.                 $isTemplateSend true;
  390.             }
  391.         } else {
  392.             $isTemplateSend true;
  393.         }
  394.         $datos = [
  395.             'oHistorialMensajes' => $oHistorialMensajes,
  396.             'oPacienteVc' => $oPacientesVC,
  397.             'whabaOrigenId' => $whabaOrigenId,
  398.             'vcId' => $aPacientesVCIDs,
  399.             'centroId' => $centroId,
  400.             'aTelefonosPaciente' => $aTelefonoPaciente,
  401.             'numTelefono' => $numTelefono
  402.         ];
  403.         $viewCabecera $this->renderView('chat/conversacion-header.html.twig'$datos);
  404.         $viewConversacion $this->renderView('chat/conversacion.html.twig'$datos);
  405.         return new JsonResponse([
  406.             'viewCabecera' => $viewCabecera,
  407.             'viewConversacion' => $viewConversacion,
  408.             'isTemplateSend' => $isTemplateSend
  409.         ]);
  410.     }
  411.     /**
  412.      * @Route("/force-database-update/{numTelefono}/{centroId}", name="force_database_update")
  413.      */
  414.     public function forceDatabaseUpdate(
  415.         Request $request,
  416.         ManagerRegistry $managerRegistry,
  417.         Utils $utils,
  418.         UtilsZAPP $utilsZAPP,
  419.         $numTelefono '',
  420.         $centroId ''
  421.     ) {
  422.         //Llamada a la api para que haga lo suyo
  423.         $EstadoActualizacion = new JsonResponse(json_decode($utils->connectToAPI('force-database-update/' $numTelefono'GET', ['idCentroConnection' => $centroId])));
  424.         return $EstadoActualizacion;
  425.     }
  426.     /**
  427.      * @Route("/send-mensaje", name="send_mensaje")
  428.      */
  429.     public function sendMessage(Request $requestManagerRegistry $managerRegistryUtils $utils)
  430.     {
  431.         $oEm $managerRegistry->getManager();
  432.         $viewMessage '';
  433.         try {
  434.             $whabaOrigen $request->request->get('whabaOrigen');
  435.             /* $vcId = $request->request->get('vcId'); */
  436.             $centroId $request->request->get('centroid');
  437.             $type $request->request->get('typeSend');
  438.             $telefonoDestino '';
  439.             if ($request->request->get('telefonoDestino')) {
  440.                 $telefonoDestino $request->request->get('telefonoDestino');
  441.             }
  442.             /* $oHistorialMensajesPreview = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  443.                 ->findOneBy(['centroId' => $centroId, 'vcId' => $vcId]); */
  444.             $aContenido = [];
  445.             $oHistorialMensaje = new HistorialMensajesWhatsapp();
  446.             $oHistorialMensaje->setIsRead(1);
  447.             $oHistorialMensaje->setFechaRead(new \DateTime('now'));
  448.             $oHistorialMensaje->setFechaActualizacion(new \DateTime('now'));
  449.             $oHistorialMensaje->setFechaCreacion(new \DateTime('now'));
  450.             $oHistorialMensaje->setCentroId($centroId);
  451.             $oHistorialMensaje->setVcId(null);
  452.             $oHistorialMensaje->setWhabaOrigenId($whabaOrigen);
  453.             /*$oHistorialMensaje->setWhabaDestinoId(($telefonoDestino !== '') ? $telefonoDestino
  454.                 : $oHistorialMensajesPreview->getWhabaDestinoId());*/
  455.             $oHistorialMensaje->setWhabaDestinoId($telefonoDestino);
  456.             $oHistorialMensaje->setTemplate('');
  457.             /* $aDatos['vcId'] = $vcId; */
  458.             $aDatos['centroId'] = $centroId;
  459.             if ($telefonoDestino !== '') {
  460.                 $aDatos['telefonoDestino'] = $telefonoDestino;
  461.             }
  462.             $messsage $request->request->get('texto');
  463.             $aDatos['message'] = $messsage;
  464.             if ($type === 'text') {
  465.                 //$aContenido = $this->buildMessage($aDatos, $oEm);
  466.                 $aContenido $this->buildTemplateEstandard($aDatos$oEm);
  467.                 $oHistorialMensaje->setTemplate('plantilla_mensaje');
  468.             } else if ($type === 'template') {
  469.                 $aContenido $this->buildTemplateGenerico($aDatos$oEm);
  470.                 $oHistorialMensaje->setTemplate('mensaje_estandard');
  471.             } else {
  472.                 $aDatos['message'] = $messsage;
  473.                 if ($request->request->get('linkFile')) {
  474.                     $aDatos['linkFile'] = $request->request->get('linkFile');
  475.                     $aTipoArchivoImagen = ['jpg' => 'image/jpg''png' => 'image/png'];
  476.                     $aTipoArchivoDoc = ['pdf' => 'application/pdf'];
  477.                     $aTipoArchivoVideo = ['mp4' => 'video/mp4'];
  478.                     $aTipoArchivoAudio = ['ogg' => 'audio/ogg; codecs=opus'];
  479.                     $extension pathinfo($request->request->get('linkFile'), PATHINFO_EXTENSION);
  480.                     $oHistorialMensaje->setFileMedia($request->request->get('linkFile'));
  481.                     if (isset($aTipoArchivoImagen[$extension]) && !empty($aTipoArchivoImagen[$extension])) {
  482.                         $oHistorialMensaje->setFileType($aTipoArchivoImagen[$extension]);
  483.                     }
  484.                     if (isset($aTipoArchivoDoc[$extension]) && !empty($aTipoArchivoDoc[$extension])) {
  485.                         $oHistorialMensaje->setFileType($aTipoArchivoDoc[$extension]);
  486.                     }
  487.                     if (isset($aTipoArchivoVideo[$extension]) && !empty($aTipoArchivoVideo[$extension])) {
  488.                         $oHistorialMensaje->setFileType($aTipoArchivoVideo[$extension]);
  489.                     }
  490.                     if (isset($aTipoArchivoAudio[$extension]) && !empty($aTipoArchivoAudio[$extension])) {
  491.                         $oHistorialMensaje->setFileType($aTipoArchivoAudio[$extension]);
  492.                     }
  493.                     $oHistorialMensaje->setDownloadFile($request->request->get('linkFile'));
  494.                     $oHistorialMensaje->setDownloadDate(new \DateTime('now'));
  495.                 }
  496.                 $aContenido $this->{$type}($aDatos$oEm);
  497.                 //si es una plantilla definida, entonces guardamos el contenido
  498.                 $oHistorialMensaje->setTemplate($type);
  499.                 $mensajeFinal $this->getTemplatesDefinidos($type$messsage);
  500.                 if ($mensajeFinal !== '') {
  501.                     $messsage $mensajeFinal;
  502.                 }
  503.             }
  504.             $oHistorialMensaje->setMensaje($messsage);
  505.             $aResultado $utils->sendMessageWhatsapp($aContenido$whabaOrigen);
  506.             //Guardamos en la db lo enviado
  507.             $oEm->persist($oHistorialMensaje);
  508.             $oEm->flush();
  509.             $viewMessage $this->buildLastMessage($oEm$oHistorialMensaje$centroId$whabaOrigen);
  510.         } catch (\Exception $exception) {
  511.             dump($exception->getMessage() . "-" $exception->getLine());
  512.             exit;
  513.         }
  514.         return new JsonResponse(['view' => $viewMessage]);
  515.     }
  516.     /**
  517.      * @Route("/get-last-message-chat/{numTlf}/{centroId}", name="get_last_message_chat")
  518.      */
  519.     public function getLastMessageChat(Request $requestManagerRegistry $managerRegistry$numTlf ''$centroId '')
  520.     {
  521.         $oEm $managerRegistry->getManager();
  522.         $qb $oEm->createQueryBuilder();
  523.         $whabaId $request->request->get('whabaid');
  524.         /* $oHistorialMensaje = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  525.             ->findOneBy(['centroId' => $centroId, 'vcId' => $vcId, 'isRead' => 0], ['fechaCreacion' => 'ASC']); */
  526.         $oHistorialMensaje $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  527.             ->createQueryBuilder('hmw')
  528.             ->where('hmw.centroId = :centroId')
  529.             ->andWhere('hmw.isRead = :isRead')
  530.             ->andWhere(
  531.                 $qb->expr()->orX(
  532.                     'hmw.whabaDestinoId = :numTlf',
  533.                     'hmw.whabaOrigenId = :numTlf'
  534.                 )
  535.             )
  536.             ->orderBy('hmw.fechaCreacion''ASC')
  537.             ->setParameters([
  538.                 'centroId' => $centroId,
  539.                 'numTlf' => $numTlf,
  540.                 'isRead' => 0
  541.             ])
  542.             ->getQuery()
  543.             ->getOneOrNullResult();
  544.         /* $oPacienteVc = $oEm->getRepository('App\Entity\ZAPP\PacienteVc')
  545.             ->findOneBy(['idVc' => $numTlf, 'centroId' => $centroId]); */
  546.         /* $oTotalHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  547.             ->findBy(['centroId' => $centroId, 'vcId' => $numTlf, 'isRead' => 0]); */
  548.         $oTotalHistorialMensajes $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  549.             ->createQueryBuilder('hmw')
  550.             ->where('hmw.centroId = :centroId')
  551.             ->andWhere('hmw.isRead = :isRead')
  552.             ->andWhere(
  553.                 $qb->expr()->orX(
  554.                     'hmw.whabaDestinoId = :numTlf',
  555.                     'hmw.whabaOrigenId = :numTlf'
  556.                 )
  557.             )
  558.             ->setParameters([
  559.                 'centroId' => $centroId,
  560.                 'numTlf' => $numTlf,
  561.                 'isRead' => 0
  562.             ])
  563.             ->getQuery()
  564.             ->getResult();
  565.         $datos = [
  566.             'oMensaje' => $oHistorialMensaje,
  567.             /* 'oPacienteVc' => $oPacienteVc */
  568.             'whabaOrigenId' => $whabaId
  569.         ];
  570.         $view $this->renderView('chat/componentes/detalle-linea.html.twig'$datos);
  571.         //Marcamos el historial del mensaje a leido
  572.         if (!is_null($oHistorialMensaje)) {
  573.             $oHistorialMensaje->setIsRead(true);
  574.             $oHistorialMensaje->setFechaRead(new \DateTime('now'));
  575.             $oEm->persist($oHistorialMensaje);
  576.             $oEm->flush();
  577.         }
  578.         return new JsonResponse(['view' => $view'totalItems' => count($oTotalHistorialMensajes)]);
  579.     }
  580.     /**
  581.      * @Route("/get-datos-paciente/{centroId}/{idVc}", name="get_datos_paciente")
  582.      */
  583.     public function getDatosPaciente(
  584.         Request $request,
  585.         ManagerRegistry $managerRegistry,
  586.         Utils $utils,
  587.         $centroId '',
  588.         $idVc ''
  589.     ) {
  590.         $oEm $managerRegistry->getManager();
  591.         $oPaciente $oEm->getRepository('App\Entity\ZAPP\PacienteVc')
  592.             ->findOneBy(['idVc' => $idVc'centroId' => $centroId]);
  593.         $oPacienteApiTel json_decode($utils->connectToAPI('get-paciente-telefonos/' $idVc'GET', ['idCentroConnection' => $centroId]));
  594.         $aTelefonos = [];
  595.         if (isset($oPacienteApiTel->telefonos) && !empty($oPacienteApiTel->telefonos)) {
  596.             $aTelefonos $oPacienteApiTel->telefonos;
  597.         }
  598.         $datos = [
  599.             'oPaciente' => $oPaciente,
  600.             'oPacienteTelefono' => $aTelefonos
  601.         ];
  602.         return $this->render('chat/componentes/detalle-paciente.html.twig'$datos);
  603.     }
  604.     /**
  605.      * @Route("/get-content-media/{conversacionId}", name="get_content_media")
  606.      */
  607.     public function getContentMedia(
  608.         Request $request,
  609.         ManagerRegistry $managerRegistry,
  610.         Utils $utils,
  611.         $conversacionId ''
  612.     ) {
  613.         $oEm $managerRegistry->getManager();
  614.         $urlMedia '';
  615.         $oConversacion $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  616.             ->findOneBy(['id' => $conversacionId]);
  617.         if (!is_null($oConversacion->getFileMedia())) {
  618.             $urlMedia $utils->getDownloadImage($utils->getImageWhatsapp($oConversacion->getFileMedia()), $conversacionId);
  619.         }
  620.         return new JsonResponse(['urlMedia' => $urlMedia]);
  621.     }
  622.     /**
  623.      * @Route("/get-search-pacientes", name="get_search_pacientes")
  624.      */
  625.     public function getSearchPacientes(Request $requestManagerRegistry $managerRegistryUtils $utils)
  626.     {
  627.         $pacienteSearchNombre $request->request->get('pacienteNombre');
  628.         $pacienteSearchApellido $request->request->get('pacienteApellido');
  629.         $centroId $request->request->get('centroId');
  630.         $aPacientes = [];
  631.         $objPacientes json_decode($utils->connectToAPI(
  632.             'get-filtro-paciente/1',
  633.             'POST',
  634.             ['name' => $pacienteSearchNombre'apellido' => $pacienteSearchApellido'idCentroConnection' => $centroId]
  635.         ));
  636.         //dump($objPacientes->aPacientes);exit;
  637.         for ($i 0$i count($objPacientes->aPacientes); $i++) {
  638.             $oPaciente $objPacientes->aPacientes[$i];
  639.             for ($j 0$j count($oPaciente); $j++) {
  640.                 if (isset($oPaciente[$j]) && !empty($oPaciente[$j])) {
  641.                     $aPacientes[] = [
  642.                         'id' => $oPaciente[$j]->id,
  643.                         'nombre' => $oPaciente[$j]->nombre,
  644.                         'apellidos' => $oPaciente[$j]->apellidos,
  645.                         'telefono' => $oPaciente[$j]->telefonos,
  646.                         'categoryTelefono' => $oPaciente[$j]->categoryTelefono
  647.                     ];
  648.                 }
  649.             }
  650.         }
  651.         // $aPacientes = $objPacientes['aPacientes'];
  652.         return new JsonResponse(['aPacientes' => $aPacientes]);
  653.     }
  654.     /**
  655.      * @Route("/upload-file-and-send", name="upload_file_and_send")
  656.      */
  657.     public function uploadFileAndSend(
  658.         Request $request,
  659.         ManagerRegistry $managerRegistry,
  660.         Utils $utils
  661.     ) {
  662.         $oEm $managerRegistry->getManager();
  663.         $status false;
  664.         $message '';
  665.         $viewMessage '';
  666.         try {
  667.             if (isset($_FILES['file']) && !empty($_FILES['file'])) {
  668.                 $typeFile $request->request->get('typeFile');
  669.                 $fileExtensionType $request->request->get('fileExtensionType');
  670.                 $whabaDestino $request->request->get('whabadestino');
  671.                 /* $vcId = $request->request->get('vcId'); */
  672.                 $centroId $request->request->get('centroId');
  673.                 $numTelefono $request->request->get('numtelefono');
  674.                 $result $utils->uploadImageAWS($_FILES['file'], true);
  675.                 if ($result) {
  676.                     $directory getcwd() . '/assets/chat/' $_FILES['file']['name'];
  677.                     move_uploaded_file($_FILES['file']['tmp_name'], $directory);
  678.                     //Guardamos el media descargado en la bd
  679.                     $full_url $result->get('ObjectURL');
  680.                     $last_slash strrpos($full_url'/') + 1;
  681.                     $url substr($full_url$last_slash);
  682.                     $oHistorialMensaje = new HistorialMensajesWhatsapp();
  683.                     $oHistorialMensaje->setWhabaOrigenId($whabaDestino);
  684.                     $oHistorialMensaje->setWhabaDestinoId($numTelefono);
  685.                     $oHistorialMensaje->setFechaCreacion(new \DateTime('now'));
  686.                     $oHistorialMensaje->setFechaActualizacion(new \DateTime('now'));
  687.                     $oHistorialMensaje->setMensaje('');
  688.                     $oHistorialMensaje->setCentroId($centroId);
  689.                     $oHistorialMensaje->setVcId(null);
  690.                     $oHistorialMensaje->setIsRead(true);
  691.                     $oHistorialMensaje->setTemplate('');
  692.                     $oHistorialMensaje->setFechaRead(new \DateTime('now'));
  693.                     $oHistorialMensaje->setFileMedia($url);
  694.                     $oHistorialMensaje->setFileType($fileExtensionType);
  695.                     $oHistorialMensaje->setDownloadFile($url);
  696.                     $oHistorialMensaje->setDownloadDate(new \DateTime('now'));
  697.                     $oEm->persist($oHistorialMensaje);
  698.                     $oEm->flush();
  699.                     /*$message = $utils->buildContentSendImageDocAndSend($aParams);*/
  700.                     $aDatos = [
  701.                         'centroId' => $centroId,
  702.                         'nameFile' => $url,
  703.                         'type' => $typeFile,
  704.                         'linkFile' => 'https://comunicacionprueba.ziving.com/assets/chat/' $_FILES['file']['name'],
  705.                         'telefonoDestino' => $numTelefono,
  706.                         'whabaOrigen' => $whabaDestino
  707.                     ];
  708.                     $aContenido = [];
  709.                     if ($typeFile === 'image') {
  710.                         $aContenido $this->estandard_imagen($aDatos$oEm);
  711.                     } else if ($typeFile === 'video') {
  712.                         $aContenido $this->estandard_video($aDatos$oEm);
  713.                     } else if ($typeFile === 'document') {
  714.                         $aContenido $this->estandard_documentos($aDatos$oEm);
  715.                     }
  716.                     $aResultado $utils->sendMessageWhatsapp($aContenido$whabaDestino);
  717.                     //unlink($directory);
  718.                     $status true;
  719.                     $viewMessage $this->buildLastMessage($oEm$oHistorialMensaje$centroId$whabaDestino);
  720.                 }
  721.             }
  722.         } catch (\Exception $exception) {
  723.             $status false;
  724.             $message $exception->getMessage();
  725.         }
  726.         return new JsonResponse(['status' => $status'message' => $message'view' => $viewMessage]);
  727.     }
  728.     /**
  729.      * @Route("/validar-waba-webhook", name="validar_waba_webhook")
  730.      */
  731.     public function validarWabaWebhook(Utils $utils)
  732.     {
  733.         //Esta funcion sirve para suscribir al campo mensajes un id de waba concreto
  734.         $response $utils->registerPhoneNumber();
  735.         dd($response);
  736.     }
  737.     /**
  738.      * @Route("/verificar-numeros-asociados", name="verificar_numeros_asociados")
  739.      */
  740.     public function verificarNumerosAsociados(Utils $utils)
  741.     {
  742.         //Esta funcion sirve para cambiar el nombre de visualización de un telefono concreto
  743.         //Previa aprobación en la web de FB
  744.         $response $utils->getPhonesAssociated();
  745.         dd($response);
  746.     }
  747.     /**
  748.      * @Route("/cambiar-nombre-waba", name="cambiar_nombre_waba")
  749.      */
  750.     public function cambiarNombreWaba(Utils $utils)
  751.     {
  752.         //Esta funcion sirve para cambiar el nombre de visualización de un telefono concreto
  753.         //Previa aprobación en la web de FB
  754.         $response $utils->changeWabaName();
  755.         dd($response);
  756.     }
  757.     /**
  758.      * @Route("/check-phone-status", name="check_phone_status")
  759.      */
  760.     public function checkPhoneStatus(Utils $utils)
  761.     {
  762.         //Esta funcion sirve para cambiar el nombre de visualización de un telefono concreto
  763.         //Previa aprobación en la web de FB
  764.         $response $utils->checkPhoneStatus();
  765.         dd($response);
  766.     }
  767.     private function buildLastMessage($oEm$oHistorialMensaje$centroId$whabaOrigenId)
  768.     {
  769.         /* $oPacienteVc = $oEm->getRepository('App\Entity\ZAPP\PacienteVc')
  770.             ->findOneBy(['idVc' => $vcId, 'centroId' => $centroId]); */
  771.         $datos = [
  772.             'oMensaje' => $oHistorialMensaje,
  773.             'whabaOrigenId' => $whabaOrigenId
  774.         ];
  775.         return $this->renderView('chat/componentes/detalle-linea.html.twig'$datos);
  776.     }
  777.     private function buildMessage($aDatos$oEm)
  778.     {
  779.         $oHistorialMensajes $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  780.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]);
  781.         $whabaDestino '';
  782.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  783.             $whabaDestino $aDatos['telefonoDestino'];
  784.         } else {
  785.             $whabaDestino $oHistorialMensajes->getWhabaDestinoId();
  786.         }
  787.         $textoFinal trim(preg_replace('/\t+/'' '$aDatos['message']));
  788.         $textoFinal trim(preg_replace('/\n+/'' '$textoFinal));
  789.         $aMessage = [
  790.             'messaging_product' => 'whatsapp',
  791.             'preview_url' => false,
  792.             'recipient_type' => 'individual',
  793.             'to' => $whabaDestino,
  794.             //'to' => '+34670493258',
  795.             'type' => 'text',
  796.             'text' => [
  797.                 'body' => $textoFinal
  798.             ]
  799.         ];
  800.         return $aMessage;
  801.     }
  802.     private function buildTemplateEstandard($aDatos$oEm)
  803.     {
  804.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  805.             ->findOneBy(['centroId' => $aDatos['centroId'], 'whaba_origen_id' => $aDatos['vcId']]); */
  806.         $whabaDestino '';
  807.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  808.             $whabaDestino $aDatos['telefonoDestino'];
  809.         } else {
  810.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  811.         }
  812.         $textoFinal $aDatos['message'];
  813.         //$textoFinal = str_replace("Hola", "", $aDatos['message']);
  814.         $textoFinal trim(preg_replace('/\t+/'' '$textoFinal));
  815.         $textoFinal trim(preg_replace('/\n+/'' '$textoFinal));
  816.         $aParametersBody = [
  817.             'type' => 'text',
  818.             'text' => $textoFinal
  819.         ];
  820.         $aContenido[] = [
  821.             'type' => 'body',
  822.             'parameters' => [
  823.                 $aParametersBody
  824.             ]
  825.         ];
  826.         //$whabaDestino = 670493258;
  827.         $aWhatsAppContent = [
  828.             'messaging_product' => 'whatsapp',
  829.             'recipient_type' => 'individual',
  830.             'to' => $whabaDestino,
  831.             'type' => 'template',
  832.             'template' => [
  833.                 'name' => 'plantilla_mensaje',
  834.                 'language' => [
  835.                     'code' => 'es'
  836.                 ],
  837.                 'components' => $aContenido
  838.             ]
  839.         ];
  840.         return $aWhatsAppContent;
  841.     }
  842.     private function buildTemplateGenerico($aDatos$oEm)
  843.     {
  844.         $oHistorialMensajes $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  845.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]);
  846.         $whabaDestino '';
  847.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  848.             $whabaDestino $aDatos['telefonoDestino'];
  849.         } else {
  850.             $whabaDestino $oHistorialMensajes->getWhabaDestinoId();
  851.         }
  852.         $textoFinal str_replace("Hola"""$aDatos['message']);
  853.         $textoFinal trim(preg_replace('/\t+/'' '$textoFinal));
  854.         $textoFinal trim(preg_replace('/\n+/'' '$textoFinal));
  855.         $aParametersBody = [
  856.             'type' => 'text',
  857.             'text' => $textoFinal
  858.         ];
  859.         $aContenido[] = [
  860.             'type' => 'body',
  861.             'parameters' => [
  862.                 $aParametersBody
  863.             ]
  864.         ];
  865.         //$whabaDestino = 670493258;
  866.         $aWhatsAppContent = [
  867.             'messaging_product' => 'whatsapp',
  868.             'recipient_type' => 'individual',
  869.             'to' => $whabaDestino,
  870.             'type' => 'template',
  871.             'template' => [
  872.                 'name' => 'mensaje_estandard',
  873.                 'language' => [
  874.                     'code' => 'es'
  875.                 ],
  876.                 'components' => $aContenido
  877.             ]
  878.         ];
  879.         return $aWhatsAppContent;
  880.     }
  881.     private function estandard_imagen($aDatos$oEm)
  882.     {
  883.         $aContenidoFinal = [];
  884.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  885.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]); */
  886.         $whabaDestino '';
  887.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  888.             $whabaDestino $aDatos['telefonoDestino'];
  889.         } else {
  890.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  891.         }
  892.         $aParametersHeader = [
  893.             'type' => 'image',
  894.             'image' => [
  895.                 'link' => $aDatos['linkFile']
  896.             ]
  897.         ];
  898.         $aContenidoHeader = [
  899.             'type' => 'header',
  900.             'parameters' => [
  901.                 $aParametersHeader
  902.             ]
  903.         ];
  904.         $aContenidoFinal = [
  905.             $aContenidoHeader
  906.         ];
  907.         // $whabaDestino = 670493258;
  908.         $aWhatsAppContent = [
  909.             'messaging_product' => 'whatsapp',
  910.             'recipient_type' => 'individual',
  911.             'to' => $whabaDestino,
  912.             'type' => 'template',
  913.             'template' => [
  914.                 'name' => 'plantilla_imagen',
  915.                 'language' => [
  916.                     'code' => 'es'
  917.                 ],
  918.                 'components' => $aContenidoFinal
  919.             ]
  920.         ];
  921.         return $aWhatsAppContent;
  922.     }
  923.     private function estandard_video($aDatos$oEm)
  924.     {
  925.         $aContenidoFinal = [];
  926.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  927.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]); */
  928.         $whabaDestino '';
  929.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  930.             $whabaDestino $aDatos['telefonoDestino'];
  931.         } else {
  932.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  933.         }
  934.         $aParametersHeader = [
  935.             'type' => 'video',
  936.             'video' => [
  937.                 'link' => $aDatos['linkFile']
  938.             ]
  939.         ];
  940.         $aContenidoHeader = [
  941.             'type' => 'header',
  942.             'parameters' => [
  943.                 $aParametersHeader
  944.             ]
  945.         ];
  946.         $aContenidoFinal = [
  947.             $aContenidoHeader
  948.         ];
  949.         // $whabaDestino = 670493258;
  950.         $aWhatsAppContent = [
  951.             'messaging_product' => 'whatsapp',
  952.             'recipient_type' => 'individual',
  953.             'to' => $whabaDestino,
  954.             'type' => 'template',
  955.             'template' => [
  956.                 'name' => 'plantilla_video',
  957.                 'language' => [
  958.                     'code' => 'es'
  959.                 ],
  960.                 'components' => $aContenidoFinal
  961.             ]
  962.         ];
  963.         return $aWhatsAppContent;
  964.     }
  965.     private function estandard_documentos($aDatos$oEm)
  966.     {
  967.         $aContenidoFinal = [];
  968.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  969.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]); */
  970.         $whabaDestino '';
  971.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  972.             $whabaDestino $aDatos['telefonoDestino'];
  973.         } else {
  974.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  975.         }
  976.         $aParametersHeader = [
  977.             'type' => 'document',
  978.             'document' => [
  979.                 'link' => $aDatos['linkFile'],
  980.                 'filename' => $aDatos['nameFile']
  981.             ]
  982.         ];
  983.         $aContenidoHeader = [
  984.             'type' => 'header',
  985.             'parameters' => [
  986.                 $aParametersHeader
  987.             ]
  988.         ];
  989.         $aContenidoFinal = [
  990.             $aContenidoHeader
  991.         ];
  992.         // $whabaDestino = 670493258;
  993.         $aWhatsAppContent = [
  994.             'messaging_product' => 'whatsapp',
  995.             'recipient_type' => 'individual',
  996.             'to' => $whabaDestino,
  997.             'type' => 'template',
  998.             'template' => [
  999.                 'name' => 'plantilla_documento',
  1000.                 'language' => [
  1001.                     'code' => 'es'
  1002.                 ],
  1003.                 'components' => $aContenidoFinal
  1004.             ]
  1005.         ];
  1006.         return $aWhatsAppContent;
  1007.     }
  1008.     private function estandard_archivos($aDatos$oEm)
  1009.     {
  1010.         $aContenidoFinal = [];
  1011.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  1012.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]); */
  1013.         $whabaDestino '';
  1014.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  1015.             $whabaDestino $aDatos['telefonoDestino'];
  1016.         } else {
  1017.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  1018.         }
  1019.         $aParametersHeader = [
  1020.             'type' => 'image',
  1021.             'image' => [
  1022.                 'link' => $aDatos['linkFile']
  1023.             ]
  1024.         ];
  1025.         $aContenidoHeader = [
  1026.             'type' => 'header',
  1027.             'parameters' => [
  1028.                 $aParametersHeader
  1029.             ]
  1030.         ];
  1031.         $textoFinal trim(preg_replace('/\t+/'''$aDatos['message']));
  1032.         $textoFinal trim(preg_replace('/\n+/'' '$textoFinal));
  1033.         $aParametersBody = [
  1034.             'type' => 'text',
  1035.             'text' => $textoFinal
  1036.         ];
  1037.         $aContenido = [
  1038.             'type' => 'body',
  1039.             'parameters' => [
  1040.                 $aParametersBody
  1041.             ]
  1042.         ];
  1043.         $aContenidoFinal = [
  1044.             $aContenidoHeader,
  1045.             $aContenido
  1046.         ];
  1047.         // $whabaDestino = 670493258;
  1048.         $aWhatsAppContent = [
  1049.             'messaging_product' => 'whatsapp',
  1050.             'recipient_type' => 'individual',
  1051.             'to' => $whabaDestino,
  1052.             'type' => 'template',
  1053.             'template' => [
  1054.                 'name' => 'archivos_texto',
  1055.                 'language' => [
  1056.                     'code' => 'es'
  1057.                 ],
  1058.                 'components' => $aContenidoFinal
  1059.             ]
  1060.         ];
  1061.         return $aWhatsAppContent;
  1062.     }
  1063.     private function plantilla_invitaamigo($aDatos$oEm)
  1064.     {
  1065.         /* $oHistorialMensajes = $oEm->getRepository('App\Entity\ZAPP\HistorialMensajesWhatsapp')
  1066.             ->findOneBy(['centroId' => $aDatos['centroId'], 'vcId' => $aDatos['vcId']]); */
  1067.         $whabaDestino '';
  1068.         if (isset($aDatos['telefonoDestino']) && !empty($aDatos['telefonoDestino'])) {
  1069.             $whabaDestino $aDatos['telefonoDestino'];
  1070.         } else {
  1071.             /* $whabaDestino = $oHistorialMensajes->getWhabaDestinoId(); */
  1072.         }
  1073.         $textoFinal $aDatos['message'];
  1074.         //$textoFinal = str_replace("Hola", "", $aDatos['message']);
  1075.         $textoFinal trim(preg_replace('/\t+/'' '$textoFinal));
  1076.         $textoFinal trim(preg_replace('/\n+/'' '$textoFinal));
  1077.         $aParametersBody = [
  1078.             'type' => 'text',
  1079.             'text' => $textoFinal
  1080.         ];
  1081.         $aContenido[] = [
  1082.             'type' => 'body',
  1083.             'parameters' => [
  1084.                 $aParametersBody
  1085.             ]
  1086.         ];
  1087.         //$whabaDestino = 670493258;
  1088.         $aWhatsAppContent = [
  1089.             'messaging_product' => 'whatsapp',
  1090.             'recipient_type' => 'individual',
  1091.             'to' => $whabaDestino,
  1092.             'type' => 'template',
  1093.             'template' => [
  1094.                 'name' => 'plantilla_invitaamigo',
  1095.                 'language' => [
  1096.                     'code' => 'es'
  1097.                 ],
  1098.                 'components' => $aContenido
  1099.             ]
  1100.         ];
  1101.         return $aWhatsAppContent;
  1102.     }
  1103.     private function getTemplatesDefinidos($template$contenido)
  1104.     {
  1105.         $mensaje '';
  1106.         switch ($template) {
  1107.             case 'plantilla_invitaamigo':
  1108.                 $mensaje 'Esta es vuestra Tarjeta Invita amigos para que podáis invitar a familiares y amigos a conocernos 💚💚💚
  1109.                 Después también el link de google reviews para que me recomendéis.
  1110.                 Es muy importante para mí que estéis a gusto con nosotros y nos ayudéis a crecer 😍' PHP_EOL $contenido;
  1111.                 break;
  1112.         }
  1113.         return $mensaje;
  1114.     }
  1115. }