<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Validator\Constraints\File;
class DefaultController extends AbstractController {
private $em;
private $month = ['Enero' => 1, 'Febrero' => 2, 'Marzo' => 3, 'Abril' => 4, 'Mayo' => 5, 'Junio' => 6, 'Julio' => 7, 'Agosto' => 8,
'Septiembre' => 8, 'Octubre' => 10, 'Noviembre' => 11, 'Diciembre' => 12];
private $year = [];
public function __construct(EntityManagerInterface $entityManager) {
$this->em = $entityManager;
$this->year[date('Y')] = date('Y');
for ($i = 1; $i < 5; $i++) {
$numberYear = (int) date('Y') - $i;
$this->year[$numberYear] = $numberYear;
}
}
#[Route('/homepage', name: 'app_homepage')]
public function index(Request $request): Response {
$session = $request->getSession();
$session->set('mainbreadcrumb', null);
return $this->render('default/homepage.html.twig', [
'controller_name' => 'DefaultController',
]);
}
// #[Route('/manage_breadcrumb', name: 'app_homepage_managebreadcrumb')]
// public function managebreadcrumb(Request $request): Response {
//
// $session = $request->getSession();
// $crumb = $session->get('mainbreadcrumb') == null ? [['intranet' => $this->generateUrl('app_homepage')]] : json_decode($session->get('mainbreadcrumb'), true);
// if ($request->getMethod() == "POST") {
// $agregar = true;
//
// foreach ($crumb as $key => &$value) {
// if ($agregar == false) {
// unset($crumb[$key]);
// }
// if (isset($value[$request->request->get('key')])) {
// $value[$request->request->get('key')] = $request->request->get('value');
// $agregar = false;
// }
// }
//
// $crumb = array_values($crumb);
//
// if ($agregar) {
// $lenght = 5;
// if (count($crumb) > $lenght) {
// unset($crumb[1]);
// $crumb = array_values($crumb);
// }
// $crumb[] = [$request->request->get('key') => $request->request->get('value')];
// }
//
//
//
// $session->set('mainbreadcrumb', json_encode($crumb));
// }
// return new Response(json_encode($crumb));
// //[{intranet: '{{ path('app_homepage') }}'}];
// }
#[Route('/pruebas2', name: 'app_homepage_test')]
public function homepagetest(\Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$entity = $this->em->getRepository(\App\Entity\GHContratacion::class)->find(10);
$usuario = $this->em->getRepository(\App\Entity\SecUser::class)->findOneBy(['username' => '1234567890']);
if ($usuario) {
$mailerCore->notificarUsuario('updateInfo', [$usuario]);
}
//$mailerCore->notificarContratacion('notificar', [$entity]);
//$mailerCore->notificarUsuario('updateInfo', [$this->getUser()]);
return $this->render('default/formexample.html.twig', [
'controller_name' => 'DefaultController',
]);
}
#[Route('/jur/dashboard', name: 'jur_dashboard')]
public function dashboardJuridico(\Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
// $entity = $this->em->getRepository(\App\Entity\GHContratacion::class)->find(10);
// $usuario = $this->em->getRepository(\App\Entity\SecUser::class)->findOneBy(['username' => '1234567890']);
// if ($usuario) {
// $mailerCore->notificarUsuario('updateInfo', [$usuario]);
// }
//$mailerCore->notificarContratacion('notificar', [$entity]);
//$mailerCore->notificarUsuario('updateInfo', [$this->getUser()]);
$entities = $em->getRepository(\App\Entity\JurNorma::class)->getDashboard(5);
$tipoNorma = array_filter(array_unique(array_column($entities, 'tipo_norma', 'id_tipo_norma')));
$procesos = $em->getRepository(\App\Entity\ParProceso::class)->getAll();
$campoAplicacion = $em->getRepository(\App\Entity\ParCampo::class)->findAll();
return $this->render('default/dashboardJuridico.html.twig', [
'controller_name' => 'DefaultController',
'entities' => $entities,
'tipoNorma' => $tipoNorma,
'campoAplicacion' => $campoAplicacion,
'procesos' => $procesos,
]);
}
private function generateExcelAction($archivo, $datos) {
// ask the service for a excel object
$phpExcelObject = new Spreadsheet();
$fecha = new \DateTime('now');
$modificado = isset($archivo['modificado']) ? $archivo['modificado'] : "LOOGIC";
$titulo = isset($archivo['titulo']) ? $archivo['titulo'] : "INFORME_POR_LOOGIC";
$asunto = isset($archivo['asunto']) ? $archivo['asunto'] : "INFORME_LOOGIC";
$descripcion = isset($archivo['descripcion']) ? $archivo['descripcion'] : "INFORME GENERADO POR LOOGIC";
$keyWords = isset($archivo['keyWords']) ? $archivo['keyWords'] : "INFORME LOOGIC";
$categoria = isset($archivo['categoria']) ? $archivo['categoria'] : "LOOGIC";
$nombreArchivo = isset($archivo['nombreArchivo']) ? $archivo['nombreArchivo'] . " {$fecha->format('Y-m-d His')}" : "INFORME_LOOGIC {$fecha->format('Y-m-d His')}";
$phpExcelObject->getProperties()->setCreator("LOOGIC COLOMBIA")
->setLastModifiedBy($modificado)
->setTitle($titulo)
->setSubject($asunto)
->setDescription($descripcion)
->setKeywords($keyWords)
->setCategory($categoria);
$hoja = 0;
$styleEncabezado = array(
'font' => array(
'bold' => true,
//'color' => array('rgb' => 'FF0000'),
'size' => 10,
'name' => 'Verdana'
));
$buffer = 0;
foreach ($datos as $sheetName => $array) {
$col = 'A';
$iteracion = 2;
$cambio = false;
$phpExcelObject->createSheet($hoja);
if (isset($archivo['nombreArchivo']) && $archivo['nombreArchivo'] == 'Matriz de Requisitos Legales') {
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue("A1", mb_strtoupper("Matriz General de Requisitos Legales y Otros Requisitos (GER-FR-077)", 'utf-8'));
}
foreach ($array as $arr => $val) {
foreach ($val as $key => $result) {
if ($iteracion == 2) {
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue($col . $iteracion, mb_strtoupper($key, 'utf-8'));
$phpExcelObject->getActiveSheet()->getStyle($col . $iteracion)->applyFromArray($styleEncabezado);
$phpExcelObject->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue($col . ($iteracion + 1), $result);
} else if ($buffer !== count($val)) {
//$iteracion = $iteracion + 2;
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue($col . ($iteracion + 2), mb_strtoupper($key, 'utf-8'));
$phpExcelObject->getActiveSheet()->getStyle($col . ($iteracion + 2))->applyFromArray($styleEncabezado);
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue($col . ($iteracion + 3), $result);
$cambio = true;
} else {
$phpExcelObject->setActiveSheetIndex($hoja)->setCellValue($col . ($iteracion + 1), $result);
}
$col++;
}
$buffer = count($val);
if ($cambio === true) {
$iteracion = $iteracion + 3; //aumento proporcional de acuerdo a el ultimo valor del encabezado.
$cambio = false;
} else {
$iteracion++;
}
$col = 'A';
}
$phpExcelObject->getActiveSheet()->setTitle($sheetName);
$hoja++;
}
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$phpExcelObject->setActiveSheetIndex(0);
// create the writer
$writer = new Xlsx($phpExcelObject);
ob_start();
// create the response
$writer->save('php://output');
$excelOutput = ob_get_clean();
return new Response(
$excelOutput,
200,
[
'content-type' => 'text/x-csv; charset=windows-1251',
'Content-Disposition' => 'attachment; filename="' . $nombreArchivo . '.xlsx"'
]
);
//return $response;
}
#[Route('/jur/reportes/procesos_legales', name: 'jur_reporte_procesos_legales')]
public function reporteProcesoLegales(Request $request, \Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$defaultData = ['message' => 'Procesos Legales'];
$form = $this->createFormBuilder($defaultData)
->add('empresa', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\TerEmpresa::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.nombre', 'ASC');
}, 'label' => 'Empresa',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('tipificacion', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\ParTipificacionJuridica::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('p')
->orderBy('p.nombre', 'ASC');
}, 'label' => 'Tipificación',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('month', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Mes', 'required' => false, 'choices' => $this->month, 'placeholder' => 'Seleccione una opción'])
->add('year', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Año', 'required' => false, 'choices' => $this->year, 'placeholder' => 'Seleccione una opción'])
->add('consultar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-primary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fa fa-search"></i> Consultar'])
->add('descargar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-secondary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fas fa-cloud-download-alt"></i> Descargar'])
->getForm();
$form->handleRequest($request);
$estadistica = [];
if ($form->isSubmitted() && $form->isValid()) {
if ($form->get('descargar')->isClicked()) {
$data = $em->getRepository(\App\Entity\JurProceso::class)->getAllDescarga();
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
if ($key2 == 'respuesta' || $key2 == 'contraparte' || $key2 == 'motivo') {
$data[$key][$key2] = strip_tags($value2);
}
}
}
$res = $this->generateExcelAction(['nombreArchivo' => 'Procesos Juridicos'], ['Pro_legales' => $data]);
return $res;
}
$empresa = $form->get('empresa')->getData();
$tipificacion = $form->get('tipificacion')->getData();
$fecha = date('Y-m');
if ($form->get('year')->getData()) {
$fecha = $form->get('year')->getData();
if ($form->get('month')->getData() == null) {
$fecha .= "-12";
}
}
if ($form->get('month')->getData()) {
if ($form->get('year')->getData() == null) {
$fecha = date('Y') . "-{$form->get('month')->getData()}";
} else {
$fecha = "{$form->get('year')->getData()}-{$form->get('month')->getData()}";
}
}
$procesoAbierto = $em->getRepository(\App\Entity\JurProceso::class)->findBy(['estado' => 27]);
$procesoCerrado = $em->getRepository(\App\Entity\JurProceso::class)->findBy(['estado' => 28]);
$procesoPagado = $em->getRepository(\App\Entity\JurProceso::class)->findAll();
$procesoTipo = $em->getRepository(\App\Entity\JurProceso::class)->getConsolidoTipo($empresa, $tipificacion);
$procesoVencer = $em->getRepository(\App\Entity\JurProceso::class)->getVencimientos($fecha, $empresa);
$procesosFecha = $em->getRepository(\App\Entity\JurProceso::class)->getConsolidoFecha($empresa);
$procesosEmpresa = $em->getRepository(\App\Entity\JurProceso::class)->getConsolidoEmpresa($empresa);
$estadistica['fecha']['label'] = "";
$estadistica['fecha']['data'] = "";
$estadistica['fecha']['data'] = implode(",", array_column($procesosFecha, 'cantidad'));
$arr = array_column($procesosFecha, 'ano');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['fecha']['label'] = implode(",", $arr);
//ajuste allanamientos
// $estadistica['allanamiento']['label'] = "";
// $estadistica['allanamiento']['data'] = "";
// $estadistica['allanamiento']['data'] = implode(",", array_column($allanamientoFecha, 'cantidad'));
// $arr = array_column($allanamientoFecha, 'mes');
// array_walk($arr, function (&$value, $key) {
// $value = "'{$value}'";
// });
// $estadistica['allanamiento']['label'] = implode(",", $arr);
//torta
$estadistica['empresa']['label'] = "";
$estadistica['empresa']['data'] = "";
$estadistica['empresa']['color'] = "";
$estadistica['empresa']['data'] = implode(",", array_column($procesosEmpresa, 'cantidad'));
$arr = array_column($procesosEmpresa, 'empFil');
$color = [];
array_walk($arr, function (&$value, $key)use ($color) {
$value = "'{$value}'";
$color[] = "#01" . rand(1, 99) . "e8";
});
$estadistica['empresa']['label'] = implode(",", $arr);
$estadistica['empresa']['color'] = implode(",", $color);
//agrupamiento por mes
$year = date('Y');
$estadistica['agrupado']['label'] = "'ENE','FEB','MAR','ABR','MAY','JUN','JUL','AGO','SEP','OCT','NOV','DIC'";
$estadistica['agrupado']['data'][$year] = "";
$estadistica['agrupado']['color'] = "";
$color = [];
for ($i = 0; $i < 2; $i++) {
$year -= $i;
//$allanamientoFecha =
$procesosAgrupado = $em->getRepository(\App\Entity\JurRespuestaProceso::class)->getAllanamientoFecha($empresa, $year); // $em->getRepository(\App\Entity\JurProceso::class)->getConsolidoFechaAno($year, $empresa);
$data = [];
//foreach ($procesosAgrupado as $pg) {
foreach ($procesosAgrupado as $pg) {
$mes = $pg['mes'];
$mesNum = $mes[0] == 0 ? $mes[1] : $pg['mes'];
$data[$mesNum] = $pg['cantidad'];
}
for ($m = 1; $m < 13; $m++) {
if (!isset($data[$m])) {
$data[$m] = 0;
}
}
ksort($data);
//}
$color[] = '"#0' . rand(1, 99999) . '"';
$estadistica['agrupado']['data'][$year] = implode(",", $data);
}
//$estadistica['agrupado']['label'] = implode(",", $arr);
$estadistica['agrupado']['color'] = implode(",", $color);
$pagado = 0;
$riesgo = 10000000;
foreach ($procesoPagado as $pp) {
if ($empresa) {
if ($pp->getEmpresaFilial()->getId() == $empresa->getId()) {
$pagado += $pp->getMonto();
}
} else {
$pagado += $pp->getMonto();
}
}
$estadistica['abierto'] = count($procesoAbierto);
$estadistica['cerrado'] = count($procesoCerrado);
$estadistica['riesgo'] = $riesgo;
$estadistica['pagado'] = $pagado;
$estadistica['tipo'] = $procesoTipo;
$estadistica['vencidos'] = $procesoVencer;
// return $this->redirectToRoute($nextAction);
}
return $this->render('reportes/JurProcesosLegales.html.twig', [
'estadistica' => $estadistica,
'form' => $form->createView(),
]);
}
#[Route('/jur/reportes/operaciones_sospechosas', name: 'jur_reporte_operaciones_sospechosas')]
public function reporteOperacionesSospechosas(Request $request, \Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$defaultData = ['message' => 'Procesos Legales'];
$form = $this->createFormBuilder($defaultData)
->add('empresa', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\TerEmpresa::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.nombre', 'ASC');
}, 'label' => 'Empresa',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('proceso', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\ParProceso::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('p')
->orderBy('p.nombre', 'ASC');
}, 'label' => 'Proceso',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('month', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Mes', 'required' => false, 'choices' => $this->month, 'placeholder' => 'Seleccione una opción'])
->add('year', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Año', 'required' => false, 'choices' => $this->year, 'placeholder' => 'Seleccione una opción'])
->add('consultar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-primary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fa fa-search"></i> Consultar'])
->add('descargar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-secondary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fas fa-cloud-download-alt"></i> Descargar'])
->getForm();
$form->handleRequest($request);
$estadistica = [];
if ($form->isSubmitted() && $form->isValid()) {
//$nextAction = $form->get('consultar')->isClicked() ? 'consultar' : 'descargar';
if ($form->get('descargar')->isClicked()) {
$data = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->getAllDescarga();
$res = $this->generateExcelAction(['nombreArchivo' => 'Operaciones_sospechosas'], ['Op_sospechosas' => $data]);
return $res;
}
$empresa = $form->get('empresa')->getData();
$proceso = $form->get('proceso')->getData();
$fecha = null;
if ($form->get('year')->getData()) {
$fecha = $form->get('year')->getData();
}
if ($form->get('month')->getData()) {
if ($fecha == null) {
$fecha = date('Y') . "-{$form->get('month')->getData()}";
} else {
$fecha .= "-{$form->get('month')->getData()}";
}
}
$porAno = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->operacionFecha("A", $fecha, $empresa);
$porCliente = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->operacionCliente($empresa, $fecha);
$porMotivo = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->operacionMotivo($fecha, $empresa);
$porAlertaCliente = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->operacionMotivoJuridico($fecha, $empresa);
//agrupamiento por mes
$year = date('Y');
$estadistica['mes']['label'] = "'ENE','FEB','MAR','ABR','MAY','JUN','JUL','AGO','SEP','OCT','NOV','DIC'";
$estadistica['mes']['data'][$year] = "";
$estadistica['mes']['color'] = "";
$color = [];
for ($i = 0; $i < 2; $i++) {
$year -= $i;
//$allanamientoFecha =
$procesosAgrupado = $em->getRepository(\App\Entity\JurOperacionSospechosa::class)->operacionFecha("M", $year, $empresa);
//$procesosAgrupado = $em->getRepository(\App\Entity\JurRespuestaProceso::class)->getAllanamientoFecha($empresa, $year); // $em->getRepository(\App\Entity\JurProceso::class)->getConsolidoFechaAno($year, $empresa);
$data = [];
//foreach ($procesosAgrupado as $pg) {
foreach ($procesosAgrupado as $pg) {
$mes = $pg['fecha'];
$mesNum = $mes[0] == 0 ? $mes[1] : $pg['fecha'];
$data[$mesNum] = $pg['cantidad'];
}
for ($m = 1; $m < 13; $m++) {
if (!isset($data[$m])) {
$data[$m] = 0;
}
}
ksort($data);
//}
$color[] = '"#0' . rand(1, 99999) . '"';
$estadistica['mes']['data'][$year] = implode(",", $data);
}
//$estadistica['agrupado']['label'] = implode(",", $arr);
$estadistica['mes']['color'] = implode(",", $color);
// $estadistica['mes']['label'] = "";
// $estadistica['mes']['data'] = "";
/* $estadistica['mes']['data'] = implode(",", array_column($porMes, 'cantidad'));
$arr = array_column($porMes, 'fecha');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['mes']['label'] = implode(",", $arr); */
///
$estadistica['ano']['label'] = "";
$estadistica['ano']['data'] = "";
$estadistica['ano']['data'] = implode(",", array_column($porAno, 'cantidad'));
$arr = array_column($porAno, 'fecha');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['ano']['label'] = implode(",", $arr);
$estadistica['motivo']['label'] = "";
$estadistica['motivo']['data'] = "";
$estadistica['motivo']['data'] = implode(",", array_column($porMotivo, 'cantidad'));
$arr = array_column($porMotivo, 'motivo');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['motivo']['label'] = implode(",", $arr);
$estadistica['cliente'] = $porCliente;
$estadistica['motivoList'] = $porMotivo;
$estadistica['alertaList'] = $porAlertaCliente;
// $estadistica['fecha'] = $porFecha;
}
return $this->render('reportes/JurOperacionesSospechosas.html.twig', [
'estadistica' => $estadistica,
'form' => $form->createView(),
]);
}
#[Route('/jur/reportes/documentos_legales', name: 'jur_reporte_documentos_legales')]
public function reporteDocumentosLegales(Request $request, \Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$defaultData = ['message' => 'Procesos Legales'];
$form = $this->createFormBuilder($defaultData)
->add('empresa', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\TerEmpresa::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.nombre', 'ASC');
}, 'label' => 'Empresa',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
// ->add('proceso', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\ParProceso::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
// return $er->createQueryBuilder('p')
// ->orderBy('p.nombre', 'ASC');
// }, 'label' => 'Proceso',
// 'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
// ])
->add('month', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Mes', 'required' => false, 'choices' => $this->month, 'placeholder' => 'Seleccione una opción'])
->add('year', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Año', 'required' => false, 'choices' => $this->year, 'placeholder' => 'Seleccione una opción'])
->add('consultar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-primary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fa fa-search"></i> Consultar'])
->add('descargar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-secondary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fas fa-cloud-download-alt"></i> Descargar'])
->getForm();
$form->handleRequest($request);
$estadistica = [];
if ($form->isSubmitted() && $form->isValid()) {
//$nextAction = $form->get('consultar')->isClicked() ? 'consultar' : 'descargar';
if ($form->get('descargar')->isClicked()) {
$data = $em->getRepository(\App\Entity\JurDocumentoLegal::class)->getAllDescarga();
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
if ($key2 == 'descripcion') {
$data[$key][$key2] = strip_tags($value2);
}
}
}
$res = $this->generateExcelAction(['nombreArchivo' => 'Documentos Legales'], ['Doc_legal' => $data]);
return $res;
}
$empresa = $form->get('empresa')->getData();
//$proceso = $form->get('proceso')->getData();
$fecha = null;
if ($form->get('year')->getData()) {
$fecha = $form->get('year')->getData();
}
if ($form->get('month')->getData()) {
if ($fecha == null) {
$fecha = date('Y') . "-{$form->get('month')->getData()}";
} else {
$fecha .= "-{$form->get('month')->getData()}";
}
}
$contrato = $em->getRepository(\App\Entity\JurDocumentoLegal::class)->porMes($fecha, [1], $empresa);
$otro = $em->getRepository(\App\Entity\JurDocumentoLegal::class)->porMes($fecha, [2], $empresa);
$now = new \DateTime('now');
$estadistica['contrato'] = null;
$estadistica['otros'] = null;
foreach ($contrato as $td) {
if ($td['fecha_vencimiento']) {
$diff = $now->diff($td['fecha_vencimiento']);
if ($diff->days <= 5 || $now >= $td['fecha_vencimiento']) {
$estadistica['contrato'][] = $td;
}
}
}
foreach ($otro as $td) {
if ($td['fecha_vencimiento']) {
$diff = $now->diff($td['fecha_vencimiento']);
if ($diff->days <= 5 || $now >= $td['fecha_vencimiento']) {
$estadistica['otros'][] = $td;
}
}
}
}
return $this->render('reportes/JurDocumentosLegales.html.twig', [
'estadistica' => $estadistica,
'form' => $form->createView(),
]);
}
#[Route('/jur/reportes/matriz_requisitos_legales', name: 'jur_reporte_matriz_requisitos_legales')]
public function reporteMatrizRequisitosLegales(Request $request, \Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$defaultData = ['message' => 'Procesos Legales'];
$form = $this->createFormBuilder($defaultData)
->add('empresa', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\TerEmpresa::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.nombre', 'ASC');
}, 'label' => 'Empresa',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('proceso', \Symfony\Bridge\Doctrine\Form\Type\EntityType::class, ['required' => false, 'placeholder' => 'selecciones una opcion', 'class' => \App\Entity\ParProceso::class, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('p')
->orderBy('p.nombre', 'ASC');
}, 'label' => 'Proceso',
'attr' => ['class' => 'form-control', 'placeholder' => 'Seleccione una Opción.']
])
->add('month', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Mes', 'required' => false, 'choices' => $this->month, 'placeholder' => 'Seleccione una opción'])
->add('year', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Año', 'required' => false, 'choices' => $this->year, 'placeholder' => 'Seleccione una opción'])
->add('consultar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-primary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fa fa-search"></i> Consultar'])
->add('descargar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-secondary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fas fa-cloud-download-alt"></i> Descargar'])
->getForm();
$form->handleRequest($request);
$estadistica = [];
if ($form->isSubmitted() && $form->isValid()) {
//$nextAction = $form->get('consultar')->isClicked() ? 'consultar' : 'descargar';
if ($form->get('descargar')->isClicked()) {
$data = $em->getRepository(\App\Entity\JurNorma::class)->getDescargable();
foreach ($data as $key => $value) {
foreach ($value as $key2 => $value2) {
if ($key2 == 'descripcion') {
$data[$key][$key2] = strip_tags($value2);
}
}
}
$res = $this->generateExcelAction(['nombreArchivo' => 'Matriz de Requisitos Legales'], ['normatividad' => $data]);
return $res;
}
$empresa = $form->get('empresa')->getData();
$proceso = $form->get('proceso')->getData();
$fecha = null;
if ($form->get('year')->getData()) {
$fecha = $form->get('year')->getData();
}
if ($form->get('month')->getData()) {
if ($fecha == null) {
$fecha = date('Y') . "-{$form->get('month')->getData()}";
} else {
$fecha .= "-{$form->get('month')->getData()}";
}
}
$procesoObj = $em->getRepository(\App\Entity\JurNorma::class)->porProceso($proceso, $fecha);
$estadistica['proceso']['label'] = "";
$estadistica['proceso']['data'] = "";
$estadistica['proceso']['data'] = implode(",", array_column($procesoObj, 'cantidad'));
$arr = array_column($procesoObj, 'procesos');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['proceso']['label'] = implode(",", $arr);
$sancion = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoSancion($proceso, $fecha);
$estadistica['sancion']['label'] = "";
$estadistica['sancion']['data'] = "";
$estadistica['sancion']['data'] = implode(",", array_column($sancion, 'sancion'));
$arr = array_column($sancion, 'procesos');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['sancion']['label'] = implode(",", $arr);
$estadistica['procesoList'] = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoList($proceso, $fecha);
$estadistica['sancionList'] = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoSancionList($proceso, $fecha);
$dataTmp = $em->getRepository(\App\Entity\JurNorma::class)->getDashboard(500);
$keyWords = array_column($dataTmp, 'palabra_clave');
$defKeyWords = array_unique(explode(",", implode(",", $keyWords)));
$estadistica['keywords'] = $defKeyWords;
}
return $this->render('reportes/JurMatrizRequisitosLegales.html.twig', [
'estadistica' => $estadistica,
'form' => $form->createView(),
]);
}
/*
#[Route('/jur/reportes/trimestral_zf', name: 'jur_reporte_trimestral_zf')]
public function reporteTrimestralZF(Request $request, \Doctrine\ORM\EntityManagerInterface $em, \App\Services\MailerCore $mailerCore): Response {
$defaultData = ['message' => 'Procesos Legales'];
$form = $this->createFormBuilder($defaultData)
->add('archivo', FileType::class, [
'label' => 'Archivo de Consulta',
'mapped' => false,
'required' => false,
'multiple' => true
])
->add('trimestre', \Symfony\Component\Form\Extension\Core\Type\ChoiceType::class, ['label' => 'Trimestre', 'choices' => ['1 Trimestre' => '1' , '2 Trimestre' =>'2', '3 Trimestre'=> '3' , '4 Trimestre' => '4']])
->add('fecha', \Symfony\Component\Form\Extension\Core\Type\DateTimeType::class, ['required' => false, 'widget' => 'single_text', 'html5' => false, 'format' => 'yyyy-MM', 'attr' => ['class' => 'fc-datepicker-month']])
->add('consultar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-primary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fa fa-search"></i> Consultar'])
->add('descargar', \Symfony\Component\Form\Extension\Core\Type\SubmitType::class, ['attr' => ['class' => 'btn btn-secondary-light btn-border-end'], 'label_html' => true, 'label' => '<i class="fas fa-cloud-download-alt"></i> Descargar'])
->getForm();
$form->handleRequest($request);
$estadistica = [];
if ($form->isSubmitted() && $form->isValid()) {
$this->addFlash('warning', "Imposible cargar el registro, Data set unlink");
return $this->redirectToRoute('jur_reporte_trimestral_zf');
//$nextAction = $form->get('consultar')->isClicked() ? 'consultar' : 'descargar';
if ($form->get('descargar')->isClicked()) {
$data = $em->getRepository(\App\Entity\JurNorma::class)->getAll();
$res = $this->generateExcelAction([], ['normatividad' => $data]);
return $res;
}
$empresa = $form->get('empresa')->getData();
$proceso = $form->get('proceso')->getData();
$fecha = $form->get('fecha')->getData() != null ? $form->get('fecha')->getData() : new \DateTime('now');
$procesoObj = $em->getRepository(\App\Entity\JurNorma::class)->porProceso($proceso, $fecha);
$estadistica['proceso']['label'] = "";
$estadistica['proceso']['data'] = "";
$estadistica['proceso']['data'] = implode(",", array_column($procesoObj, 'cantidad'));
$arr = array_column($procesoObj, 'procesos');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['proceso']['label'] = implode(",", $arr);
$sancion = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoSancion($proceso, $fecha);
$estadistica['sancion']['label'] = "";
$estadistica['sancion']['data'] = "";
$estadistica['sancion']['data'] = implode(",", array_column($sancion, 'sancion'));
$arr = array_column($sancion, 'procesos');
array_walk($arr, function (&$value, $key) {
$value = "'{$value}'";
});
$estadistica['sancion']['label'] = implode(",", $arr);
$estadistica['procesoList'] = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoList($proceso, $fecha);
$estadistica['sancionList'] = $em->getRepository(\App\Entity\JurNorma::class)->porProcesoSancionList($proceso, $fecha);
$dataTmp = $em->getRepository(\App\Entity\JurNorma::class)->getDashboard(500);
$keyWords = array_column($dataTmp, 'palabra_clave');
$defKeyWords = array_unique(explode(",", implode(",", $keyWords)));
$estadistica['keywords'] = $defKeyWords;
}
return $this->render('reportes/JurTrimestralZF.html.twig', [
'estadistica' => $estadistica,
'form' => $form->createView(),
]);
} */
}