<?php
/**
* Created by Mediterranean Develup Solutions
* Date: 02/04/2024
* Time: 15:32
*/
namespace App\Controller;
use App\Entity\HtItem;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\Constraints as Assert;
use App\Repository\HtFileRepository;
use App\MDS\DevelupBundle\Entity\MdvTelegramUser;
use Swift_Mailer;
use Swift_Message;
use Swift_SmtpTransport;
use App\Entity\User;
use DateTimeImmutable;
use IntlDateFormatter;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\HtFile;
use DateTime;
class ScheduledTaskController extends AbstractController
{
/**
* @Route("/alerthtfilechange/", name="alert_ht_file_change")
* Alerta vía email y telegram de las modficaciones de un HtFile en la ultima hora
*/
public function alertHtFileChangeAction(Request $request, HtFileRepository $htFileRepository)
{
$htFiles = $htFileRepository->findByStatus( array('Iniciado', 'Confirmed') );
$oneHourAgo = date('Y-m-d H:i:s', strtotime('-1 hour'));
$oneHourAgo = DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $oneHourAgo);
$actualHour = date('Y-m-d H:i:s');
$actualHour = DateTimeImmutable::createFromFormat("Y-m-d H:i:s", $actualHour);
foreach ($htFiles as $htFile){
if ( $htFile->getUpdatedAt() >= $oneHourAgo and $htFile->getUpdatedAt() <= $actualHour ) {
$this->sendTelegramMail(20, $htFile->getId(),'Orden de Trabajo: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
// $this->sendTelegramMail(113, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
// $this->sendTelegramMail(114, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
} else {
// Se revisan los items hasta encontrar cambio o revisarlos todos
$htItems = $htFile->getHtItems();
foreach ($htItems as $htItem) {
if ($htItem->getUpdatedAt() >= $oneHourAgo and $htItem->getUpdatedAt() <= $actualHour) {
// $this->sendTelegramMail(20, $htFile->getId(), 'Nuevo Expediente: #' . $htFile->getId() . ' - ' . $htFile->getTitle() . ' - DESCRIPCIÓN: ' . $htFile->getDescription());
// $this->sendTelegramMail(113, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
// $this->sendTelegramMail(114, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
break;
} else {
// Se revisa el menu del item
$htMenus = $htItem->getHtMenus();
if(!empty($htMenus)) {
foreach ($htMenus as $htMenu) {
if ($htMenu->getUpdatedAt() >= $oneHourAgo and $htMenu->getUpdatedAt() <= $actualHour) {
// $this->sendTelegramMail(20, $htFile->getId(), 'Nuevo Expediente: #' . $htFile->getId() . ' - ' . $htFile->getTitle() . ' - DESCRIPCIÓN: ' . $htFile->getDescription());
// $this->sendTelegramMail(113, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
// $this->sendTelegramMail(114, $htFile->getId(),'Nuevo Expediente: #'.$htFile->getId(). ' - '.$htFile->getTitle(). ' - DESCRIPCIÓN: ' .$htFile->getDescription());
break;
}
}
}
}
}
}
}
return new JsonResponse('Done');
}
/**
* @Route("/fridaysummarynotify", name="friday_summary_notify", methods={"GET", "POST"})
* Notificaciones de las ordenes de trabajo en los siguientes diez días a partir del viernes
*/
public function notifyHigoTrigoSumarysAction(EntityManagerInterface $em, Request $request)
{
$ignore_dates = $request->request->get('ignore_dates');
$user = $request->request->get('user');
$emailUser = $request->request->get('emailUser');
$emailUserOther = $request->request->get('emailUserOther');
$dateNow = new DateTimeImmutable('now');
$dateNow = $dateNow->setTime(0, 0, 0);
$nunmeroDia = $dateNow->format('w');
if (!($dateNow->format('w') == 1)){ $daysToAdd = 8 - $dateNow->format('w'); $dateNextMonday = $dateNow->modify("+$daysToAdd days"); } else { $dateNextMonday = $dateNow->modify("+7 days"); }
$datePlusTenDays = $dateNextMonday->modify('+7 days');
$message = null;
$messageTelegram = null;
// Si no se ha enviado la señal de ignorar fechas, se verifica si es miercoles. El mensaje solo se debe enviar los miercoles
if (empty($ignore_dates)){ if (!($nunmeroDia == 3)){ return new JsonResponse('Done'); } }
$parameters = array( 'dateStart' => $dateNextMonday, 'dateEnd' => $datePlusTenDays, );
$dql = 'SELECT p
FROM App\Entity\HtItem p
WHERE p.dateStart BETWEEN :dateStart AND :dateEnd';
$query = $em->createQuery($dql)->setParameters($parameters);
$htItems = $query->getResult();
$arrayHtFiles = array();
//Agregamos los HtFiles segun los HtItems
if (!empty($htItems)){ foreach ($htItems as $item){ $arrayHtFiles[$item->getDateStart()->format('YmdHi').str_pad($item->getId(), 6, "0", STR_PAD_LEFT)] = $item; } }
ksort($arrayHtFiles);
if (!empty($arrayHtFiles)) {
$dateGlobalStart = $arrayHtFiles[array_key_first($arrayHtFiles)]->getDateStart();
$saltoLinea = '<br>';
$fecha = new DateTimeImmutable($dateGlobalStart->format('Ymd'));
$formateador = new IntlDateFormatter( 'es_ES', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Madrid', IntlDateFormatter::GREGORIAN, 'EEEE, d \'de\' MMMM \'del\' yyyy' );
$message = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = "
 <b>".$this->ucfirst_utf8($formateador->format($fecha))."</b>";
foreach ($arrayHtFiles as $key => $item) {
if (!($dateGlobalStart->format('Ymd') == $item->getDateStart()->format('Ymd'))) {
$fecha = new DateTimeImmutable($item->getDateStart()->format('Ymd'));
$day = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$message = $message.$day;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = $messageTelegram."
 <b>".$textAdd. "</b>";
$dateGlobalStart = $fecha;
}
$message = $message.$item->getDateStart()->format('H:i').$saltoLinea;
$message = $message.'Evento: '.$item->getHtFile()->getTitle();
$messageTelegram = $messageTelegram."
 ".$item->getDateStart()->format('H:i');
$messageTelegram = $messageTelegram."
 Evento: ".$item->getHtFile()->getTitle();
if (!empty($item->getLoungeGp()) or !empty($item->getLoungeOther())){
$where = empty($item->getLoungeOther()) ? $item->getLoungeGp()->getName() : $item->getLoungeOther();
$message = $message.'Ubicación: '.$where;
$messageTelegram = $messageTelegram."
 Ubicación: ".$where;
}
$message = $message.' <a href="//'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/htexternal/'.$item->getHtFile()->getId().'/summary">( Ver Orden de Trabajo )</a> '.$saltoLinea;
$messageTelegram = $messageTelegram."
 <a href=\"https://" . $_SERVER['HTTP_HOST'] . "/higotrigo/ht/file/htexternal/" . $item->getHtFile()->getId() . "/summary\">Ver Orden de Trabajo</a>";
}
} else {
$message = $messageTelegram = 'No se encontró información para la semana';
}
$arrayUsers = array();
$arrayUsers['elenaaira99@gmail.com'] = 'elenaaira99@gmail.com';
$arrayUsers['marcos.arredondo.jorge@gmail.com'] = 'marcos.arredondo.jorge@gmail.com';
$arrayUsers['pedro.ruiz@higotrigo.com'] = 'pedro.ruiz@higotrigo.com';
$arrayUsers['rafael.guerrero@inout-travel.com'] = 'rafael.guerrero@inout-travel.com';
$arrayUsers['alberto.hernandez@higotrigo.com'] = 'alberto.hernandez@higotrigo.com';
$arrayUsers['alberto.hernandez@higotrigo.com'] = 'alberto.hernandez@higotrigo.com';
$arrayUsers['gabriela.bracho@greenpatio.es'] = 'gabriela.bracho@greenpatio.es';
$arrayUsers['gonzalo.alonso@higotrigo.com'] = 'gonzalo.alonso@higotrigo.com';
$arrayUsers['miguelonlon001@gmail.com'] = 'miguelonlon001@gmail.com';
$arrayUsers['gustavo.ayala@develup.solutions'] = 'gustavo.ayala@develup.solutions';
$arrayMails = array();
$user = $em->getRepository(User::class)->findOneById($user);
$arrayMails[] = $user->getEmail();
if (!empty($emailUser)) { foreach ($emailUser as $key => $item){ if ($item == 'on'){ $arrayMails[] = $key; } } }
$emailUserOther = explode(';', $emailUserOther);
if (!empty($emailUserOther)) { foreach ($emailUserOther as $item){ $arrayMails[] = $item; } }
// ************************************ P R U E B A S **************************************************************************************************************
// $arrayMails = array();
// $arrayMails[] = 'gustavo.ayala@develup.solutions';
// $arrayMails[] = 'gustavoucv@yahoo.com.mx';
// *****************************************************************************************************************************************************************
$this->sendMailCc($user->getId(),$arrayMails,$message, $messageTelegram, $dateNow);
if (!empty($ignore_dates)){ return $this->redirectToRoute('ht_calendar'); }
return new JsonResponse('Done');
}
/**
* @Route("/higotrigo/tendaysahead", name="app_ht_ten_days_ahead")
* Prevision de la proxima semana
*/
public function tenDaysAheadAction(Request $request, EntityManagerInterface $em)
{
$user = $this->getUser();
$dateNow = new DateTimeImmutable('now');
$dateNow = $dateNow->setTime(0, 0, 0);
if (!($dateNow->format('w') == 1)){ $daysToAdd = 8 - $dateNow->format('w'); $dateNextMonday = $dateNow->modify("+$daysToAdd days"); } else { $dateNextMonday = $dateNow->modify("+7 days"); }
$datePlusTenDays = $dateNextMonday->modify('+7 days');
$message = null;
$parameters = array( 'dateStart' => $dateNextMonday, 'dateEnd' => $datePlusTenDays, );
$dql = 'SELECT p
FROM App\Entity\HtItem p
WHERE p.dateStart BETWEEN :dateStart AND :dateEnd';
$query = $em->createQuery($dql)->setParameters($parameters);
$htItems = $query->getResult();
$arrayHtFiles = array();
//Agregamos los HtFiles segun los HtItems
if (!empty($htItems)){
foreach ($htItems as $item){
$arrayHtFiles[$item->getDateStart()->format('YmdHi').str_pad($item->getId(), 6, "0", STR_PAD_LEFT)] = $item;
}
}
ksort($arrayHtFiles);
if (!empty($arrayHtFiles)) {
$dateGlobalStart = $arrayHtFiles[array_key_first($arrayHtFiles)]->getDateStart();
$saltoLinea = '<br>';
$fecha = new DateTimeImmutable($dateGlobalStart->format('Ymd'));
$formateador = new IntlDateFormatter( 'es_ES', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Madrid', IntlDateFormatter::GREGORIAN, 'EEEE, d \'de\' MMMM \'del\' yyyy' );
$message = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
foreach ($arrayHtFiles as $key => $item) {
if (!($dateGlobalStart->format('Ymd') == $item->getDateStart()->format('Ymd'))) {
$fecha = new DateTimeImmutable($item->getDateStart()->format('Ymd'));
$day = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$message = $message.$day;
$dateGlobalStart = $fecha;
}
$message = $message.$item->getDateStart()->format('H:i').$saltoLinea;
$message = $message.'Evento: '.$item->getHtFile()->getTitle();
if (!empty($item->getLoungeGp()) or !empty($item->getLoungeOther())){
$where = empty($item->getLoungeOther()) ? $item->getLoungeGp()->getName() : $item->getLoungeOther();
$message = $message.', Ubicación: '.$where;
}
$message = $message.' <a href="//'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/htexternal/'.$item->getHtFile()->getId().'/summary">( Ver Orden de Trabajo )</a> '.$saltoLinea;
}
} else {
$message = $messageTelegram = 'No se encontró información para la semana';
}
$arrayAgents = array();
$arrayAgents[$user->getEmail()] = array( 'agent' => $user->getName().' '.$user->getLastName(), 'email' => $user->getEmail(),);
$arrayAgents['rafael.guerrero@inout-travel.com'] = array( 'agent' => 'Rafael Guerrero', 'email' => 'rafael.guerrero@inout-travel.com',);
$arrayAgents['gabriela.bracho@greenpatio.es'] = array( 'agent' => 'Gabriela Bracho', 'email' => 'gabriela.bracho@greenpatio.es',);
$arrayAgents['elenaaira99@gmail.com'] = array( 'agent' => 'Elena Aira', 'email' => 'elenaaira99@gmail.com',);
$arrayAgents['alberto.hernandez@higotrigo.com'] = array( 'agent' => 'Alberto Hernández', 'email' => 'alberto.hernandez@higotrigo.com',);
$arrayAgents['gonzalo.alonso@higotrigo.com'] = array( 'agent' => 'Gonzalo Alonso', 'email' => 'gonzalo.alonso@higotrigo.com',);
$arrayAgents['marcos.arredondo.jorge@gmail.com'] = array( 'agent' => 'Marcos Arredondo', 'email' => 'marcos.arredondo.jorge@gmail.com',);
$arrayAgents['miguelonlon001@gmail.com'] = array( 'agent' => 'Miguel Martín', 'email' => 'miguelonlon001@gmail.com',);
$arrayAgents['pedro.ruiz@higotrigo.com'] = array( 'agent' => 'Pedro Ruiz', 'email' => 'pedro.ruiz@higotrigo.com',);
$arrayAgents['gustavo.ayala@develup.solutions'] = array( 'agent' => 'Gustavo Ayala', 'email' => 'gustavo.ayala@develup.solutions',);
return $this->render('higotrigo/ht_file/show-ot-prevision.html.twig', array(
'message' => $message,
'user' => $user,
'arrayAgents' => $arrayAgents,)
);
}
/**
* @Route("/higotrigo/verify", name="app_ht_verify")
* Verificación de ht_files modificados despues de la notificación de " notifyHigoTrigoSumarysAction " y antes del inicio de semana
*/
public function verifyAction(Request $request, EntityManagerInterface $em){
$dateNow = new DateTimeImmutable('now');
$dateNow = $dateNow->setTime(0, 0, 0);
$nunmeroDia = $dateNow->format('w');
// if ($nunmeroDia == 5){
if (true){
// Configurar las fechas de la semana pasada y la semana actual
$lastWednesday = new DateTime('now');
$lastWednesday->modify('last Wednesday'); // Último miércoles de la semana
$lastFriday = clone $lastWednesday;
$lastFriday->modify('+2 days');
$lastFriday->setTime(23, 59, 0);
$firstMonday = new DateTime('next Monday'); // Lunes de la próxima semana
$lastMonday = clone $firstMonday; // Lunes de la última semana
$lastMonday->modify('+7 days');
$parameters = array(
'lastWednesday' => $lastWednesday,
'lastFriday' => $lastFriday,
'thisMonday' => $firstMonday,
'nextMonday' => $lastMonday,
);
$dql = 'SELECT p
FROM App\Entity\HtFile p
WHERE
p.updatedAt BETWEEN :lastWednesday AND :lastFriday AND
p.dateStart > :thisMonday AND
p.dateEnd < :nextMonday AND
p.dateStart < p.dateEnd';
$query = $em->createQuery($dql)->setParameters($parameters);
$htFile = $query->getResult();
$htItems = array();
foreach ($htFile as $item){
$singleItems = $em->getRepository(HtItem::class)->findByHtFile($item->getId());
foreach ($singleItems as $elem){ $htItems[] = $elem; }
}
$arrayHtFiles = array();
//Agregamos los HtFiles segun los HtItems
if (!empty($htItems)){ foreach ($htItems as $item){ $arrayHtFiles[$item->getDateStart()->format('YmdHi').str_pad($item->getId(), 6, "0", STR_PAD_LEFT)] = $item; } }
ksort($arrayHtFiles);
if (!empty($arrayHtFiles)) {
$dateGlobalStart = $arrayHtFiles[array_key_first($arrayHtFiles)]->getDateStart();
$saltoLinea = '<br>';
$fecha = new DateTimeImmutable($dateGlobalStart->format('Ymd'));
$formateador = new IntlDateFormatter( 'es_ES', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Madrid', IntlDateFormatter::GREGORIAN, 'EEEE, d \'de\' MMMM \'del\' yyyy' );
$message = $saltoLinea.'<b>ULTIMAS ACTUALIZACIONES</b><br><b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = "
 <b>".$this->ucfirst_utf8($formateador->format($fecha))."</b>";
foreach ($arrayHtFiles as $key => $item) {
if (!($dateGlobalStart->format('Ymd') == $item->getDateStart()->format('Ymd'))) {
$fecha = new DateTimeImmutable($item->getDateStart()->format('Ymd'));
$day = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$message = $message.$day;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = $messageTelegram."
 <b>".$textAdd. "</b>";
$dateGlobalStart = $fecha;
}
$message = $message.$item->getDateStart()->format('H:i').$saltoLinea;
$message = $message.'Evento: '.$item->getHtFile()->getTitle();
$messageTelegram = $messageTelegram."
 ".$item->getDateStart()->format('H:i');
$messageTelegram = $messageTelegram."
 Evento: ".$item->getHtFile()->getTitle();
if (!empty($item->getLoungeGp()) or !empty($item->getLoungeOther())){
$where = empty($item->getLoungeOther()) ? $item->getLoungeGp()->getName() : $item->getLoungeOther();
$message = $message.'Ubicación: '.$where;
$messageTelegram = $messageTelegram."
 Ubicación: ".$where;
}
$message = $message.' <a href="//'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/htexternal/'.$item->getHtFile()->getId().'/summary">( Ver Orden de Trabajo )</a> '.$saltoLinea;
$messageTelegram = $messageTelegram."
 <a href=\"https://" . $_SERVER['HTTP_HOST'] . "/higotrigo/ht/file/htexternal/" . $item->getHtFile()->getId() . "/summary\">Ver Orden de Trabajo</a>";
}
} else {
$message = $messageTelegram = 'No se encontró información para la semana';
}
$user = $this->getUser();
$arrayAgents = [];
return $this->render('higotrigo/ht_file/show-ot-update.html.twig', array(
'message' => $message,
'user' => $user,
'arrayAgents' => $arrayAgents,)
);
}
}
/**
* @Route("/summarynotifyupdate", name="summary_notify_update", methods={"GET", "POST"})
* Notificaciones de las actualizaciones de las ordenes de trabajo
*/
public function notifyUpdatesHigoTrigoSumarysAction(EntityManagerInterface $em, Request $request)
{
$dateNow = new DateTimeImmutable('now');
$dateNow = $dateNow->setTime(0, 0, 0);
$nunmeroDia = $dateNow->format('w');
// Configurar las fechas de la semana pasada y la semana actual
$lastWednesday = new DateTime('now');
$lastWednesday->modify('last Wednesday'); // Último miércoles de la semana
$lastFriday = clone $lastWednesday;
$lastFriday->modify('+2 days');
$lastFriday->setTime(23, 59, 0);
$firstMonday = new DateTime('next Monday'); // Lunes de la próxima semana
$lastMonday = clone $firstMonday; // Lunes de la última semana
$lastMonday->modify('+7 days');
$parameters = array(
'lastWednesday' => $lastWednesday,
'lastFriday' => $lastFriday,
'thisMonday' => $firstMonday,
'nextMonday' => $lastMonday,
);
$dql = 'SELECT p
FROM App\Entity\HtFile p
WHERE
p.updatedAt BETWEEN :lastWednesday AND :lastFriday AND
p.dateStart > :thisMonday AND
p.dateEnd < :nextMonday AND
p.dateStart < p.dateEnd';
$query = $em->createQuery($dql)->setParameters($parameters);
$htFile = $query->getResult();
$htItems = array();
foreach ($htFile as $item){
$singleItems = $em->getRepository(HtItem::class)->findByHtFile($item->getId());
foreach ($singleItems as $elem){ $htItems[] = $elem; }
}
$arrayHtFiles = array();
//Agregamos los HtFiles segun los HtItems
if (!empty($htItems)){ foreach ($htItems as $item){ $arrayHtFiles[$item->getDateStart()->format('YmdHi').str_pad($item->getId(), 6, "0", STR_PAD_LEFT)] = $item; } }
ksort($arrayHtFiles);
if (!empty($arrayHtFiles)) {
$dateGlobalStart = $arrayHtFiles[array_key_first($arrayHtFiles)]->getDateStart();
$saltoLinea = '<br>';
$fecha = new DateTimeImmutable($dateGlobalStart->format('Ymd'));
$formateador = new IntlDateFormatter( 'es_ES', IntlDateFormatter::FULL, IntlDateFormatter::NONE, 'Europe/Madrid', IntlDateFormatter::GREGORIAN, 'EEEE, d \'de\' MMMM \'del\' yyyy' );
$message = $saltoLinea.'<b>ULTIMAS ACTUALIZACIONES</b><br><b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = "
 <b>".$this->ucfirst_utf8($formateador->format($fecha))."</b>";
foreach ($arrayHtFiles as $key => $item) {
if (!($dateGlobalStart->format('Ymd') == $item->getDateStart()->format('Ymd'))) {
$fecha = new DateTimeImmutable($item->getDateStart()->format('Ymd'));
$day = $saltoLinea.'<b>'.$this->ucfirst_utf8($formateador->format($fecha)).'</b>'.$saltoLinea;
$message = $message.$day;
$textAdd = $this->ucfirst_utf8($formateador->format($fecha));
$messageTelegram = $messageTelegram."
 <b>".$textAdd. "</b>";
$dateGlobalStart = $fecha;
}
$message = $message.$item->getDateStart()->format('H:i').$saltoLinea;
$message = $message.'Evento: '.$item->getHtFile()->getTitle();
$messageTelegram = $messageTelegram."
 ".$item->getDateStart()->format('H:i');
$messageTelegram = $messageTelegram."
 Evento: ".$item->getHtFile()->getTitle();
if (!empty($item->getLoungeGp()) or !empty($item->getLoungeOther())){
$where = empty($item->getLoungeOther()) ? $item->getLoungeGp()->getName() : $item->getLoungeOther();
$message = $message.'Ubicación: '.$where;
$messageTelegram = $messageTelegram."
 Ubicación: ".$where;
}
$message = $message.' <a href="//'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/htexternal/'.$item->getHtFile()->getId().'/summary">( Ver Orden de Trabajo )</a> '.$saltoLinea;
$messageTelegram = $messageTelegram."
 <a href=\"https://" . $_SERVER['HTTP_HOST'] . "/higotrigo/ht/file/htexternal/" . $item->getHtFile()->getId() . "/summary\">Ver Orden de Trabajo</a>";
}
} else {
$message = $messageTelegram = 'No se encontró información para la semana';
}
$user = $this->getUser();
// $arrayUsers = array();
// $arrayUsers['elenaaira99@gmail.com'] = 'elenaaira99@gmail.com';
// $arrayUsers['marcos.arredondo.jorge@gmail.com'] = 'marcos.arredondo.jorge@gmail.com';
// $arrayUsers['pedro.ruiz@higotrigo.com'] = 'pedro.ruiz@higotrigo.com';
// $arrayUsers['rafael.guerrero@inout-travel.com'] = 'rafael.guerrero@inout-travel.com';
// $arrayUsers['alberto.hernandez@higotrigo.com'] = 'alberto.hernandez@higotrigo.com';
// $arrayUsers['alberto.hernandez@higotrigo.com'] = 'alberto.hernandez@higotrigo.com';
// $arrayUsers['gabriela.bracho@greenpatio.es'] = 'gabriela.bracho@greenpatio.es';
// $arrayUsers['gonzalo.alonso@higotrigo.com'] = 'gonzalo.alonso@higotrigo.com';
// $arrayUsers['miguelonlon001@gmail.com'] = 'miguelonlon001@gmail.com';
// $arrayUsers['gustavo.ayala@develup.solutions'] = 'gustavo.ayala@develup.solutions';
// $arrayMails = array();
// $user = $em->getRepository(User::class)->findOneById($user);
// $arrayMails[] = $user->getEmail();
// if (!empty($emailUser)) { foreach ($emailUser as $key => $item){ if ($item == 'on'){ $arrayMails[] = $key; } } }
// $emailUserOther = explode(';', $emailUserOther);
// if (!empty($emailUserOther)) { foreach ($emailUserOther as $item){ $arrayMails[] = $item; } }
// ************************************ P R U E B A S **************************************************************************************************************
$arrayMails = array();
$arrayMails[] = 'gustavo.ayala@develup.solutions';
$arrayMails[] = 'gustavoucv@yahoo.com.mx';
// *****************************************************************************************************************************************************************
$this->sendTelegram($messageTelegram);
if (!empty($ignore_dates)){ return $this->redirectToRoute('ht_calendar'); }
return new JsonResponse('Done');
}
private function sendTelegramMail($id, $idProp, $text )
{
$em = $this->getDoctrine()->getManager();
$telegUser = $em->getRepository(MdvTelegramUser::class)->findOneByUserId($id);
if (empty($telegUser)){ return true; }
$xbody = '<a href="//'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/'.$idProp.'/summary"></a> '.$text;
$text = 'ORDEN DE TRABAJO - '.'https://'.$_SERVER['HTTP_HOST'].'/higotrigo/ht/file/'.$idProp.'/summary';
$parameters = array(
'chat_id' => $telegUser->getChatId(),
'text' => $text,
);
$bot_token = $telegUser->getBotToken();
$url = "https://api.telegram.org/bot$bot_token/sendMessage";
if (!$curl = curl_init()){ exit(); }
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$parameters);
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
$output = curl_exec($curl);
curl_close($curl);
$agent = $em->getRepository(User::class)->findOneById($id);
$agentMail = $agent->getEmail();
$mailAgent = $agentMail;
//Se prepara el correo con los agentes a notificar
$firmGmail = $agent->getFirmGmail();
$data = array(
'body' => $xbody,
'firm' => $firmGmail,
);
// EJECUTAR ENVIO DE ALERTA PARA EL AGENTE
$transporter = new Swift_SmtpTransport();
$transporter->setHost('smtp.gmail.com')
->setEncryption('ssl')//ssl / tls
->setPort(465)// 465 / 587
->setUsername('desarrollo@develup.solutions')
->setPassword('utvh hzoi wfdo ztjs');
$mailer = new Swift_Mailer($transporter);
$message = new Swift_Message();
$message->setSubject('Expediente #' . $idProp. ', Notificación de orden de trabajo')
->setSender($agentMail)
->setFrom(array("desarrollo@develup.solutions" => "System Mante 3.0"))
->setReplyTo($agentMail)
->setTo($mailAgent)
->setBody(
$this->renderView(
'mail/structure-mail.html.twig',
array('data' => $data)
),
'text/html'
);
$mailer->send($message);
return true;
}
private function sendMailCc($id, $arrayMails, $text, $messageTelegram, $dateNow)
{
$em = $this->getDoctrine()->getManager();
// $user = $this->getUser();
// if (($dateNow->format('w') == 3) or ($user->getRoles() == 'ROLE_ADMIN')) { // Solo se enviara un telegram al canal los miercoles o cuando un admin asi lo indique
$telegUser = $em->getRepository(MdvTelegramUser::class)->findOneByUserId(1000); // 1000 es el Id para el canal de Telegram de las Ordenes de Trabajo de Higo&Trigo
// $telegUser = $em->getRepository(MdvTelegramUser::class)->findOneByUserId(20);
$parameters = array(
'chat_id' => $telegUser->getChatId(),
'text' => $messageTelegram,
'parse_mode' => 'HTML',
);
$bot_token = $telegUser->getBotToken();
$url = "https://api.telegram.org/bot$bot_token/sendMessage";
if (!$curl = curl_init()) {
exit();
}
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
// }
$agent = $em->getRepository(User::class)->findOneById($id);
$agentMail = $agent->getEmail();
$data = array(
'body' => $text,
'firm' => null,
);
// EJECUTAR ENVIO DE ALERTA PARA EL AGENTE
$transporter = new Swift_SmtpTransport();
$transporter->setHost('smtp.gmail.com')
->setEncryption('ssl')//ssl / tls
->setPort(465)// 465 / 587
->setUsername('desarrollo@develup.solutions')
->setPassword('utvh hzoi wfdo ztjs');
$mailer = new Swift_Mailer($transporter);
$message = new Swift_Message();
$message->setSubject('Previsión de Servicios')
->setSender($agentMail)
->setFrom(array("desarrollo@develup.solutions" => "System Mante 3.0"))
->setReplyTo($agentMail)
->setTo($arrayMails)
->setBody(
$this->renderView(
'mail/structure-mail.html.twig',
array('data' => $data)
),
'text/html'
);
$mailer->send($message);
return true;
}
private function sendTelegram($messageTelegram)
{
$em = $this->getDoctrine()->getManager();
$telegUser = $em->getRepository(MdvTelegramUser::class)->findOneByUserId(1000); // 1000 es el Id para el canal de Telegram de las Ordenes de Trabajo de Higo&Trigo
$parameters = array(
'chat_id' => $telegUser->getChatId(),
'text' => $messageTelegram,
'parse_mode' => 'HTML',
);
$bot_token = $telegUser->getBotToken();
$url = "https://api.telegram.org/bot$bot_token/sendMessage";
if (!$curl = curl_init()) { exit(); }
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
return true;
}
private function ucfirst_utf8($string) {
$first_char = mb_substr($string, 0, 1, 'UTF-8');
$rest = mb_substr($string, 1, null, 'UTF-8');
return mb_strtoupper($first_char, 'UTF-8') . $rest;
}
}