<?php
namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class AppExtension extends AbstractExtension
{
private $kernel;
private $router;
public function __construct(KernelInterface $kernel,RouterInterface $router,ContainerInterface $container)
{
$this->kernel = $kernel;
$this->router = $router;
$this->container = $container;
}
public function getFilters()
{
return [
new TwigFilter('getTravelScheduleTimes', [$this, 'getTravelScheduleTimes']),
new TwigFilter('getTimeIntervalLogs', [$this, 'getTimeIntervalLogs']),
new TwigFilter('file_get_contents', [$this, 'fileGetContents']),
new TwigFilter('base64_encode', [$this, 'base64Encode']),
];
}
public function fileGetContents($url)
{
return file_get_contents($url);
}
public function base64Encode($string)
{
return base64_encode($string);
}
public function getTimeIntervalLogs($second_date, $first_date){
if(strlen($first_date) > 0){
$fecha1 = new \DateTime($first_date); // Año-mes-día hora:minuto:segundo
$fecha2 = new \DateTime($second_date); // Año-mes-día hora:minuto:segundo
// Calcular la diferencia de tiempo
$diferencia = $fecha2->diff($fecha1);
// Obtener la diferencia en días
$resultado = '';
if ($diferencia->days > 0) {
$resultado .= "$diferencia->days días, ";
}
if ($diferencia->h > 0) {
$resultado .= $diferencia->h . ' horas, ';
}
if ($diferencia->i > 0) {
$resultado .= $diferencia->i . ' minutos y ';
}
if ($diferencia->s > 0) {
$resultado .= $diferencia->s . ' segundos';
}
return $resultado;
}else{
return "";
}
}
public function getTravelScheduleTimes($start_at, $end_at){
if(strlen($start_at) > 0 && strlen($end_at) > 0 ){
$fechaInicio = new \DateTime($start_at);
$fechaFin = new \DateTime($end_at);
$diferencia = $fechaInicio->diff($fechaFin);
$dias = $diferencia->days;
$horas = $diferencia->h;
$minutos = $diferencia->i;
$segundos = $diferencia->s;
if($dias > 0){
$data = $dias . " Dias " . $horas . ":" . $minutos . ":" . $segundos;
}else{
$data = $horas . ":" . $minutos . ":" . $segundos;
}
return $data;
}else{
return "-";
}
return "";
}
}
?>