<?php
namespace App\Controller;
use App\Entity\Agenda;
use App\Entity\Especialidad;
use App\Entity\AgendaArchivos;
use App\Entity\ExamenOrden;
use App\Entity\ExamenDetalle;
use App\Entity\HistoriaClinica;
use App\Entity\LogAgenda;
use App\Entity\PacienteReferencia;
use App\Entity\Unidad;
use App\Entity\Preparacion;
use App\Entity\Procedimientos;
use App\Entity\User;
use App\Entity\AgendaProcedimiento;
use App\Entity\OrdenVentaDetalle;
use App\Form\AgendaType;
use App\Form\AgendaReunionType;
use App\Form\PacienteReferenciaType;
use App\Form\CotizacionType;
use App\Form\ExamenOrdenTypeRecepcion;
use App\Form\ExamenDetalleType;
use App\Form\ExamenDetalleCotizacionType;
use App\Form\AgendaTypeEdit;
use App\Form\AgendaTypeConfirm;
use App\Form\AgendaTypeAdmision;
use App\Form\AgendaProcedimientoType;
use App\Repository\AgendaRepository;
use App\Repository\PacienteReferenciaRepository;
use App\Repository\ProcedimientosRepository;
use App\Repository\OrdenVentaRepository;
use App\Repository\HistoriaClinicaRepository;
use App\Repository\ExamenOrdenRepository;
use App\Repository\PreparacionRepository;
use App\Form\BuscaPreparacionType_pac_rpt_anuladas;
use App\Repository\UserRepository;
use App\Repository\TipoUsuarioRepository;
use App\Repository\SeguroPrivadoRepository;
use App\Repository\EmpresaRepository;
use App\Repository\LabProtocoloRepository;
use App\Repository\UnidadRepository;//RECUERDA QUE ES LA MISMA QUE LA ESPECIALIDAD
use App\Repository\EspecialidadRepository;
use App\Repository\RecetaRepository;
use App\Repository\TurnoRepository;
use App\Repository\PacienteRepository;
use App\Repository\SalaRepository;
use App\Repository\FormaPagoRepository;
use App\Repository\MaestroDocumentosRepository;
use App\Repository\AgendaArchivosRepository;
use App\Repository\LogAgendaRepository;
use App\Repository\OrdenVentaDetalleRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Filesystem\Filesystem;
use Knp\Component\Pager\PaginatorInterface;
use App\Form\BuscaPreparacionType;
use App\Form\BuscaPreparacionType_pac;
use App\Form\BuscaPreparacionType_pac_rpt;
use App\Form\BuscaPreparacionType_pac_rpt_laboratorio;
use App\Form\AgendaTypeEditReunion;
use App\Form\BuscaPreparacionType_seguros;
use App\Form\BuscaPreparacionType_segurosCorte;
use Dompdf\Dompdf;
use Dompdf\Options;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
use Symfony\Component\HttpFoundation\JsonResponse;
$ordenVentaRepository;
/**
* @Route("/agenda")
*/
class AgendaController extends AbstractController
{
/**
* @var Security
*/
private $security;
public function __construct(Security $security)
{
date_default_timezone_set("America/Guayaquil");
$this->security = $security;
}
/**
* @Route("/", name="agenda_index", methods={"GET"})
*/
public function index(AgendaRepository $agendaRepository, SalaRepository $salaRepository, Request $request, UnidadRepository $unidadRepository, TurnoRepository $turnoRepository): Response
{
//$salas = $salaRepository->findBy(['estado' => '1']);
$unidades = $unidadRepository->findBy(['estado' => '1']);
$session = $request->getSession();
$session->set('fecha_pos',date("Y-m-d"));
$turno = $turnoRepository->find(1);
return $this->render('agenda/index.html.twig', [
'unidades' => $unidades,
'turno' => $turno
]);
}
/**
* @Route("/gastro/procs", name="agenda_index_gastro", methods={"GET"})
*/
public function index_gastro(AgendaRepository $agendaRepository, SalaRepository $salaRepository, Request $request, UnidadRepository $unidadRepository, TurnoRepository $turnoRepository): Response
{
//$salas = $salaRepository->findBy(['estado' => '1']);
$unidades = $unidadRepository->findBy(['nombre' => 'PROCEDIMIENTOS ENDOSCOPICOS']);
$session = $request->getSession();
$session->set('fecha_pos',date("Y-m-d"));
$turno = $turnoRepository->find(1);
return $this->render('agenda/index.html.twig', [
'unidades' => $unidades,
'turno' => $turno
]);
}
/**
* @Route("/quirofano/procs", name="agenda_index_quirofano", methods={"GET"})
*/
public function index_quirofano(AgendaRepository $agendaRepository, SalaRepository $salaRepository, Request $request, UnidadRepository $unidadRepository, TurnoRepository $turnoRepository): Response
{
//$salas = $salaRepository->findBy(['estado' => '1']);
$unidades = $unidadRepository->findBy(['nombre' => 'HOSPITAL DEL DIA']);
$session = $request->getSession();
$session->set('fecha_pos',date("Y-m-d"));
$turno = $turnoRepository->find(1);
return $this->render('agenda/index.html.twig', [
'unidades' => $unidades,
'turno' => $turno
]);
}
/**
* @Route("/calendar/{id_sala}", name="agenda_calendar", methods={"GET"})
*/
public function calendar($id_sala, Request $request, EmpresaRepository $empresaRepository, SalaRepository $salaRepository): Response
{
$session = $request->getSession();
$session->set('tipo_cal','0');
$session->set('id_sala',$id_sala);
$empresa = $empresaRepository->find(1);
$sala = $salaRepository->find($id_sala);
return $this->render('agenda/calendar.html.twig',['id_sala' => $id_sala, 'empresa' => $empresa, 'sala' => $sala]);
}
/**
* @Route("/calendar/unidad/{id}", name="agenda_calendar_unidad", methods={"GET"})
*/
public function calendar_unidad(Request $request, EmpresaRepository $empresaRepository, Unidad $unidad): Response
{
$session = $request->getSession();
$session->set('tipo_cal',$unidad->getId());
$empresa = $empresaRepository->find(1);
if($unidad->getId()=='1'){
$id_sala = '20';
}else{
$id_sala = '33';
}
$user = $this->security->getUser();
if($user->getId() == '2'){
//$id_sala = '1';
}
if($user->getId() == '12'){
//$id_sala = '11';
}
$session->set('id_sala',$id_sala);
$session->set('fecha_pos',date("Y-m-d"));
return $this->render('agenda/calendar_unidad.html.twig',['unidad' => $unidad, 'tipo' => null]);
}
/**
* @Route("/calendar/unidad/tipo/{id}", name="agenda_calendar_unidad_tipo", methods={"GET"})
*/
public function calendar_unidad_tipo(Request $request, EmpresaRepository $empresaRepository, Unidad $unidad): Response
{
$session = $request->getSession();
$session->set('tipo_cal',$unidad->getId());
$empresa = $empresaRepository->find(1);
if($unidad->getId()=='1'){
$id_sala = '20';
}else{
$id_sala = '33';
}
$user = $this->security->getUser();
if($user->getId() == '2'){
//$id_sala = '1';
}
if($user->getId() == '12'){
//$id_sala = '11';
}
$session->set('id_sala',$id_sala);
$session->set('fecha_pos',date("Y-m-d"));
return $this->render('agenda/calendar_unidad.html.twig',['unidad' => $unidad, 'tipo' => 'privado']);
}
/**
* @Route("/new", name="agenda_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
$agenda = new Agenda();
$form = $this->createForm(AgendaType::class, $agenda);
$form->handleRequest($request);
//dd($agenda);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agenda);
$entityManager->flush();
return $this->redirectToRoute('agenda_index');
}
//dd($form->createView());
return $this->render('agenda/new.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
]);
}
/**
* @Route("/new_modal", name="agenda_new_modal", methods={"GET"})
*/
public function new_modal(Request $request, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, UserRepository $userRepository, EspecialidadRepository $especialidadRepository): Response
{
$agenda = new Agenda();
$session = $request->getSession();
//dd($session->get('tipo_cal'), $session->get('id_sala'));
if($session->get('tipo_cal') == '0'){//VIENE POR MEDICO
}
$id_sala = $session->get('id_sala');
$id_paciente = $session->get('id_paciente');
$paciente = $pacienteRepository->find($id_paciente);
$sala = $salaRepository->find($id_sala);//dd($sala);
$sala_doctor = 0;$especialidad = null; $nunidad = null;
$nunidad = $sala->getUnidad()->getNombre();
$doctor = null;
if($sala->getIdDoctor()!=null){//dd($sala->getIdDoctor());
$sala_doctor = $sala->getIdDoctor();
$doctor = $userRepository->find($sala_doctor);//dd($doctor);
$especialidad = $doctor->getEspecialidad();
}else{
if($sala->getUnidad()->getId()=='1'){
$especialidad = $especialidadRepository->find('1');
}else{
$especialidad = $especialidadRepository->find('17');
}
}
//dd($nunidad, $sala_doctor,$doctor,$especialidad->getNombre());
$agenda->setEspecialidad($especialidad);
$agenda->setSeguro($paciente->getSeguro());
//dd($sala->getUnidad(),$sala_doctor, $especialidad, $nunidad);
if($sala->getUnidad()->getId()== '1' and $doctor == null){
$doctor = $userRepository->find(2);//dd($doctor);
$agenda->setDoctor($doctor);
$especialidad = $doctor->getEspecialidad();
$agenda->setEspecialidad($especialidad);
}
if($sala->getUnidad()->getId()== '2' and $doctor == null){
$doctor = $userRepository->find(12);//dd($doctor);
$agenda->setDoctor($doctor);
$especialidad = $doctor->getEspecialidad();
$agenda->setEspecialidad($especialidad);
//dd($especialidad);
}
//dd($agenda);
$form = $this->createForm(AgendaType::class, $agenda, ['doctor' => $sala_doctor, 'especialidad' => $especialidad->getId(), 'unidad' => $nunidad, 'paciente' => $paciente ]);
//dd($form);
$form->handleRequest($request);
/*if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agenda);
$entityManager->flush();
return $this->redirectToRoute('agenda_index');
}*/
return $this->render('agenda/new_modal.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
'paciente' => $paciente,
'sala' => $sala
]);
}
/**
* @Route("/new_modal/storage", name="agenda_new_modal_storage", methods={"POST"})
*/
public function new_modal_storage(Request $request, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository, EspecialidadRepository $especialidadRepository): Response
{
$hoy = new \DateTime("now");
$logagenda = new LogAgenda();
$ip = $request->getClientIp();
$agenda = new Agenda();
$session = $request->getSession();
$id_sala = $session->get('id_sala');
$id_paciente = $session->get('id_paciente');
$paciente = $pacienteRepository->find($id_paciente);
$sala = $salaRepository->find($id_sala);
$sala_doctor = 0;$especialidad = null; $nunidad = null;
$nunidad = $sala->getUnidad()->getNombre();
if($sala->getIdDoctor()!=null){
$sala_doctor = $sala->getIdDoctor();
$doctor = $userRepository->find($sala_doctor);
$especialidad = $doctor->getEspecialidad();
}else{
if($sala->getUnidad()->getId()=='1'){
$especialidad = $especialidadRepository->find('1');
}else{
$especialidad = $especialidadRepository->find('17');
}
}
$agenda->setEspecialidad($especialidad);
$form = $this->createForm(AgendaType::class, $agenda, ['doctor' => $sala_doctor, 'especialidad' => $especialidad, 'unidad' => $nunidad, 'paciente' => $paciente ]);
$form->handleRequest($request);
if($id_sala == '20' || $id_sala == '33'){
$sala = $salaRepository->findOneBy(['id_doctor' => $agenda->getDoctor()->getId()]);
$session->set('id_sala',$sala->getId());
}
$session = $request->getSession();
$fecha_pos = date_format($form->get('inicio')->getData(),'Y-m-d');
$hoy = date_format($hoy,'Y-m-d');
$session->set('fecha_pos',$fecha_pos);
$user = $this->security->getUser();
//dd($form->getErrors(true));
if ($form->isSubmitted() && $form->isValid()) {
//dd($form->get('procedimiento')->getData());
$xprocedimientos = $form->get('procedimiento')->getData();
$inicio = $form->get('inicio')->getData();
// ✅ Validación de duplicados
$agendaExistente = $this->getDoctrine()->getManager()
->getRepository(Agenda::class)
->findOneBy([
'sala' => $sala,
'paciente' => $paciente,
'inicio' => $inicio,
'estado' => '1'
]);
$adm = 'no';
if ($agendaExistente) {
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId(), 'admision' => $adm, 'msn' => 'Ya existe una agenda para este paciente']);
}
$entityManager = $this->getDoctrine()->getManager();
$agenda->setEstado(1);
$agenda->setPaciente($paciente);
$agenda->setSala($sala);
$agenda->setIpCrea($ip);
$agenda->setIpModifica($ip);
if($fecha_pos<=$hoy){
$agenda->setEstadoAgenda(2);
$adm = 'ok';
}else{
$agenda->setEstadoAgenda(2);
$adm = 'no';
}
//dd($adm);
$agenda->setUserCrea($user->getId());
$agenda->setUserModifica($user->getId());
//$logagenda = $agenda->getLogAgendas();
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setEstadoAgenda(2);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $form->get('inicio')->getData();
$fin = $form->get('fin')->getData();
$observacion = $form->get('observacion')->getData();
$descripcion = 'CREAR AGENDA';
$id_seguro = $form->get('seguro')->getData();
$seguro = $seguroRepository->find($id_seguro);
$id_especialidad = $form->get('especialidad')->getData();
$especialidad = $unidadRepository->find($id_especialidad);
$id_doctor = $form->get('doctor')->getData();
$doctor = $userRepository->find($id_doctor);
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$paciente->setSeguro($seguro);
$xcont = 0;
foreach($xprocedimientos as $xp){
if($xcont == 0){
$agenda->setProcedimiento($xp);
}
$xcont ++;
}
$entityManager->persist($agenda);
//dd($agenda, $adm);
//$xcont = 0;
/*foreach($xprocedimientos as $xp){
if($xcont > 0){
$agendaProcedimiento = new AgendaProcedimiento();
$agendaProcedimiento->setAgenda($agenda);
$agendaProcedimiento->setProcedimiento($xp);
$agendaProcedimiento->setIpCrea($ip);
$agendaProcedimiento->setIpModifica($ip);
$agendaProcedimiento->setUserCrea($user->getId());
$agendaProcedimiento->setUserModifica($user->getId());
$entityManager->persist($agendaProcedimiento);
}
$xcont ++;
}*/
$entityManager->persist($logagenda);
$entityManager->persist($paciente);
$entityManager->flush();
///////////////////
/*$preparacion = $agenda->getPreparacion();
if($preparacion==null){
$preparacion = new Preparacion();
$entityManager = $this->getDoctrine()->getManager();
$preparacion->setEstado('2');
$preparacion->setIpCrea($ip);
$preparacion->setIpModifica($ip);
$preparacion->setEstatura(1);
$preparacion->setPeso(1);
$preparacion->setUserCrea($user->getId());
$preparacion->setUserModifica($user->getId());
$preparacion->setFrecuenciaRespiratoria('0');
$preparacion->setSaturacionDeOxigeno('0');
$preparacion->setAgenda($agenda);
$entityManager->persist($preparacion);
$entityManager->flush();
} */
/////////////////////
$xcont = 0;
// Tomamos la hora base
$inicioBase = clone $agenda->getInicio();
$finBase = clone $agenda->getFin();
foreach ($xprocedimientos as $xp) {
if ($xcont == 0) {
$agenda->setReferencia($agenda);
$entityManager->persist($agenda);
$entityManager->flush();
} else {
// 👉 Calcular nuevo horario (+30 min por cada procedimiento)
$inicioNuevo = (clone $inicioBase)->modify('+' . (30 * $xcont) . ' minutes');
$finNuevo = (clone $finBase)->modify('+' . (30 * $xcont) . ' minutes');
$agendaNueva = new Agenda();
$agendaNueva->setInicio($inicioNuevo);
$agendaNueva->setFin($finNuevo);
$agendaNueva->setPaciente($agenda->getPaciente());
$agendaNueva->setSala($agenda->getSala());
$agendaNueva->setDoctor($agenda->getDoctor());
$agendaNueva->setEspecialidad($agenda->getEspecialidad());
$agendaNueva->setSeguro($agenda->getSeguro());
$agendaNueva->setProcedimiento($xp);
$agendaNueva->setEstado($agenda->getEstado());
$agendaNueva->setEstadoAgenda($agenda->getEstadoAgenda());
$agendaNueva->setIpCrea($ip);
$agendaNueva->setIpModifica($ip);
$agendaNueva->setUserCrea($user->getId());
$agendaNueva->setUserModifica($user->getId());
$agendaNueva->setReferencia($agenda);
$entityManager->persist($agendaNueva);
// 🔹 Log por cada agenda creada
$logagendaNuevo = new LogAgenda();
$logagendaNuevo->setAgenda($agendaNueva);
$logagendaNuevo->setSala($agendaNueva->getSala());
$logagendaNuevo->setInicio($inicioNuevo);
$logagendaNuevo->setFin($finNuevo);
$logagendaNuevo->setSeguro($agendaNueva->getSeguro());
$logagendaNuevo->setEspecialidad($agendaNueva->getEspecialidad());
$logagendaNuevo->setDoctor($agendaNueva->getDoctor());
$logagendaNuevo->setDescripcion('CREAR AGENDA (PROCEDIMIENTO ADICIONAL)');
$logagendaNuevo->setEstadoAgenda(2);
$logagendaNuevo->setIpCrea($ip);
$logagendaNuevo->setIpModifica($ip);
$logagendaNuevo->setUserCrea($user->getId());
$logagendaNuevo->setUserModifica($user->getId());
$entityManager->persist($logagendaNuevo);
$entityManager->flush();
}
$xcont++;
}
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId(), 'admision' => $adm, 'msn' => 'Agenda Guardada con exito']);
}else{
//dd($this->getFormErrors($form));
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId(), 'admision' => $adm, 'msn' => 'No guardado con error']);
}
/**
* @Route("reunion/new_modal/storage", name="agenda_reunion_modal_storage", methods={"POST"})
*/
public function agenda_reunion_modal_storage(Request $request, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository, EspecialidadRepository $especialidadRepository, ProcedimientosRepository $procedimientosRepository): Response
{
$hoy = new \DateTime("now");
$logagenda = new LogAgenda();
$ip = $request->getClientIp();
$agenda = new Agenda();
$session = $request->getSession();
$id_sala = $session->get('id_sala');
$paciente = $pacienteRepository->findOneBy(['cedula' => 'REUNION' ]);
$procedimiento = $procedimientosRepository->findOneBy(['nombre'=>'REUNION']);
$sala = $salaRepository->find($id_sala);
$sala_doctor = 0;$especialidad = null; $nunidad = null;
$nunidad = $sala->getUnidad()->getNombre();
if($sala->getIdDoctor()!=null){
$sala_doctor = $sala->getIdDoctor();
$doctor = $userRepository->find($sala_doctor);
$especialidad = $doctor->getEspecialidad();
}else{
if($sala->getUnidad()->getId()=='1'){
$especialidad = $especialidadRepository->find('1');
}else{
$especialidad = $especialidadRepository->find('17');
}
}
$agenda->setEspecialidad($especialidad);
$seguro = $seguroRepository->find(1);
$form = $this->createForm(AgendaReunionType::class, $agenda, ['doctor' => $sala_doctor, 'especialidad' => $especialidad, 'unidad' => $nunidad ]);
$form->handleRequest($request);
$session = $request->getSession();
$fecha_pos = date_format($form->get('inicio')->getData(),'Y-m-d');
$hoy = date_format($hoy,'Y-m-d');
$session->set('fecha_pos',$fecha_pos);
$user = $this->security->getUser();
//dd($form->getErrors(true));
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$agenda->setEstado(2);
$agenda->setPaciente($paciente);
$agenda->setSeguro($seguro);
//$agenda->setSala($sala);
$agenda->setIpCrea($ip);
$agenda->setIpModifica($ip);
$agenda->setProcedimiento($procedimiento);
if($fecha_pos<=$hoy){
$agenda->setEstadoAgenda(1);
$adm = 'ok';
}else{
$agenda->setEstadoAgenda(0);
$adm = 'no';
}
$agenda->setUserCrea($user->getId());
$agenda->setUserModifica($user->getId());
//$logagenda = $agenda->getLogAgendas();
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setEstadoAgenda(0);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $form->get('inicio')->getData();
$fin = $form->get('fin')->getData();
$observacion = $form->get('observacion')->getData();
$descripcion = 'CREAR AGENDA';
$id_doctor = $form->get('doctor')->getData();
$doctor = $userRepository->find($id_doctor);
$sala = $salaRepository->findOneBy(['id_doctor' => $id_doctor]);
$agenda->setSala($sala);//dd($agenda);
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$entityManager->persist($agenda);
$entityManager->persist($logagenda);
$entityManager->flush();
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId(), 'admision' => $adm]);
}else{
dd($this->getFormErrors($form));
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId(), 'admision' => $adm]);
}
private function getFormErrors($form)
{
$errors = [];
foreach ($form->getErrors(true, true) as $error) {
// Obtén el nombre del campo que causó el error.
$fieldName = $error->getOrigin()->getName();
// Obtén el mensaje de error.
$errorMessage = $error->getMessage();
// Almacena el error junto con el nombre del campo.
$errors[$fieldName] = $errorMessage;
}
return $errors;
}
/**
* @Route("/{id}", name="agenda_show", methods={"GET"})
*/
public function show(Agenda $agenda): Response
{
return $this->render('agenda/show.html.twig', [
'agenda' => $agenda,
]);
}
/**
* @Route("/{id}/edit", name="agenda_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Agenda $agenda, UserRepository $userRepository, PacienteReferenciaRepository $pacienteReferenciaRepository, SessionInterface $session): Response
{
//dd($agenda->getPaciente()->getRegion());
$pacienteReferencia = new PacienteReferencia();
$form_referencia = $this->createForm(PacienteReferenciaType::class, $pacienteReferencia);
$form_referencia->handleRequest($request);
$agendaProcedimiento = new AgendaProcedimiento();
$form_ap = $this->createForm(AgendaProcedimientoType::class, $agendaProcedimiento);
$form_ap->handleRequest($request);
// Obtén la URL actual
$currentUrl = $request->getRequestUri();
// Guarda la URL actual en la sesión
$session->set('previous_url', $currentUrl);
$logs = [];$i = 0;
foreach ($agenda->getLogAgendas() as $value) {
$i++;
$user = $userRepository->find($value->getUserCrea());
$logs[$i] = [
'usuario' => $user->getUserName(),
'observacion' => $value->getObservacion(),
'fecha' => $value->getCreatedAt(),
'descripcion' => $value->getDescripcion(),
'seguro' => $value->getSeguro()->getNombre(),
'inicio' => $value->getInicio(),
];
}
//dd($logs[1]['usuario']);
$procedimientoPrincipal = $agenda->getProcedimiento(); // el principal
$procedimientosSecundarios = $agenda->getAgendaProcedimientos();
// Construimos un array con los IDs
$procedimientosSeleccionados = [];
if ($procedimientoPrincipal) {
$procedimientosSeleccionados[] = $procedimientoPrincipal;
}
foreach ($procedimientosSecundarios as $ap) {
$procedimientosSeleccionados[] = $ap->getProcedimiento();
}
//dd($procedimientosSeleccionados);
/////
$nunidad = $agenda->getSala()->getUnidad()->getNombre();
$form = $this->createForm(AgendaTypeEdit::class, $agenda,[ 'unidad' => $nunidad, 'procedimientos_seleccionados' => $procedimientosSeleccionados ]);
$form->handleRequest($request);
//////RECOMENDADO Y RED SOCIAL
$paciente = $agenda->getPaciente();
$recomen = $agenda->getRecomendado();//dd($recomen);
if($recomen == null){
$recomen = $paciente->getRecomendado();//dd($recomen);
$form->get('recomendado')->setData($recomen);
}
$red = $agenda->getRedsocial();
if($red == null){
$red = $paciente->getRedsocial();
$form->get('redsocial')->setData($red);
}
//////////////SALUD
/*$saludProducto = $agenda->getSaludProducto();
if($saludProducto == null){
$saludProducto = $paciente->getSaludProducto();
$form->get('salud_producto')->setData($saludProducto);
}
$saludNropersona = $agenda->getSaludNropersona();
if($saludNropersona == null){
$saludNropersona = $paciente->getSaludNropersona();
$form->get('salud_nropersona')->setData($saludNropersona);
}
$saludNivel = $agenda->getSaludNivel();
if($saludNivel == null){
$saludNivel = $paciente->getSaludNivel();
$form->get('salud_nivel')->setData($saludNivel);
}*/
//////////////////////////////
/*$form->get('contrato')->setData($agenda->getPaciente()->getContrato());
$form->get('region')->setData($agenda->getPaciente()->getRegion());*/
$form->get('fecha_nacimiento')->setData($agenda->getPaciente()->getFechaNacimiento());
$form->get('sexo')->setData($agenda->getPaciente()->getSexo());
if($agenda->getPaciente()->getEstadoCivil() != null){
$form->get('estado_civil')->setData($agenda->getPaciente()->getEstadoCivil());
}else{
$form->get('estado_civil')->setData('Soltero');
}
$form->get('hijos')->setData($agenda->getPaciente()->getHijos());
$form->get('telefono')->setData($agenda->getPaciente()->getTelefono());
$form->get('ciudad')->setData($agenda->getPaciente()->getCiudad());
$form->get('email')->setData($agenda->getPaciente()->getEmail());
$form->get('recomendacion')->setData($agenda->getPaciente()->getRecomendacion());
$form->get('alias')->setData($agenda->getPaciente()->getAlias());
$form->get('observacion_paciente')->setData($agenda->getPaciente()->getObservacion());
//$form->get('paciente_endoscopias')->setData($agenda->getPaciente()->getPacienteEndoscopias());
//$form->get('paciente_bariatrico')->setData($agenda->getPaciente()->getPacienteBariatrico());
$referencias = $pacienteReferenciaRepository->findBy(['paciente' => $agenda->getPaciente()]);
/*if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('agenda_index');
}*/
return $this->render('agenda/edit.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
'logs' => $logs,
'form_referencia' => $form_referencia->createView(),
'referencias' => $referencias,
'form_ap' => $form_ap->createView(),
]);
}
/**
* @Route("/reunion/{id}/edit", name="agenda_reunion_edit", methods={"GET"})
*/
public function reunion_edit(Request $request, Agenda $agenda, UserRepository $userRepository, PacienteReferenciaRepository $pacienteReferenciaRepository, SessionInterface $session): Response
{
$pacienteReferencia = new PacienteReferencia();
$form_referencia = $this->createForm(PacienteReferenciaType::class, $pacienteReferencia);
$form_referencia->handleRequest($request);
// Obtén la URL actual
$currentUrl = $request->getRequestUri();
// Guarda la URL actual en la sesión
$session->set('previous_url', $currentUrl);
$logs = [];$i = 0;
foreach ($agenda->getLogAgendas() as $value) {
$i++;
$user = $userRepository->find($value->getUserCrea());
$logs[$i] = [
'usuario' => $user->getUserName(),
'observacion' => $value->getObservacion(),
'fecha' => $value->getCreatedAt(),
'descripcion' => $value->getDescripcion(),
'seguro' => $value->getSeguro()->getNombre(),
];
}
//dd($logs[1]['usuario']);
$nunidad = $agenda->getSala()->getUnidad()->getNombre();
$form = $this->createForm(AgendaTypeEditReunion::class, $agenda,[ 'unidad' => $nunidad ]);
$form->handleRequest($request);
$referencias = $pacienteReferenciaRepository->findBy(['paciente' => $agenda->getPaciente()]);
/*if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('agenda_index');
}*/
return $this->render('agenda/reunion_edit.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
'logs' => $logs,
'form_referencia' => $form_referencia->createView(),
'referencias' => $referencias,
]);
}
/**
* @Route("/{id}/edit/update", name="agenda_update", methods={"GET","POST"})
*/
public function update(Request $request, Agenda $agenda, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository, OrdenVentaRepository $ordenVentaRepository, OrdenVentaDetalleRepository $ordenVentaDetalleRepository): Response
{
$confirma_anterior = $agenda->getConfirma();
$nunidad = $agenda->getSala()->getUnidad()->getNombre();
//return $this->json(['form' => $form]);
$ip = $request->getClientIp();
$user = $this->security->getUser();
$form = $this->createForm(AgendaTypeEdit::class, $agenda, ['unidad' => $nunidad, 'procedimientos_seleccionados' => [] ]);
$form->handleRequest($request);
$logagenda = new LogAgenda();
if ($form->isSubmitted() && $form->isValid()) {
////
$entityManager = $this->getDoctrine()->getManager();
$procedimientosSecundarios = $agenda->getAgendaProcedimientos();
foreach($procedimientosSecundarios as $xp){
$entityManager->remove($xp);
}
$entityManager->flush();
////
$id_sala = $form->get('sala')->getData();
$sala = $salaRepository->find($id_sala);
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setEstadoAgenda(0);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $form->get('inicio')->getData();
$fin = $form->get('fin')->getData();
$observacion = $form->get('observacion')->getData();
$descripcion = 'ACTUALIZACION';
//dd($agenda->getConfirma(), $confirma_anterior);
if(! $agenda->getConfirma() ){
if( $confirma_anterior ){
$descripcion .= ' QUITA CONFIRMACION';
//dd($descripcion);
}
}
if( $agenda->getConfirma() ){
if( ! $confirma_anterior ){
$descripcion .= ' CONFIRMA';
//dd($descripcion);
}
}
$id_seguro = $form->get('seguro')->getData();
$seguro = $seguroRepository->find($id_seguro);
$id_especialidad = $form->get('especialidad')->getData();
$especialidad = $unidadRepository->find($id_especialidad);
$id_doctor = $form->get('doctor')->getData();
$doctor = $userRepository->find($id_doctor);
//$region = $form->get('region')->getData();
$region = null;
//$contrato = $form->get('contrato')->getData();
$contrato = null;
/*$saludProducto = $form->get('salud_producto')->getData();
$saludNropersona = $form->get('salud_nropersona')->getData();
$saludNivel = $form->get('salud_nivel')->getData();*/
$saludProducto = null;
$saludNropersona = null;
$saludNivel = null;
//dd($region);
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$paciente = $agenda->getPaciente();
$paciente->setSeguro($seguro);
$paciente->setContrato($contrato);
$paciente->setRegion($region);
$paciente->setSaludProducto($saludProducto);
$paciente->setSaludNropersona($saludNropersona);
$paciente->setSaludNivel($saludNivel);
$fechaNacimiento = $form->get('fecha_nacimiento')->getData();
$sexo = $form->get('sexo')->getData();
$estadoCivil = $form->get('estado_civil')->getData();
$hijos = $form->get('hijos')->getData();
$telefono = $form->get('telefono')->getData();
$ciudad = $form->get('ciudad')->getData();
$email = $form->get('email')->getData();
$recomendacion = $form->get('recomendacion')->getData();
$alias = $form->get('alias')->getData();
$recomendado = $form->get('recomendado')->getData();
$redsocial = $form->get('redsocial')->getData();
$observacion_paciente = $form->get('observacion_paciente')->getData();
$paciente_endoscopias = null;
$paciente_bariatrico = null;
/*$paciente_endoscopias = $form->get('paciente_endoscopias')->getData();
$paciente_bariatrico = $form->get('paciente_bariatrico')->getData();*/
$paciente->setFechaNacimiento($fechaNacimiento);
$paciente->setSexo($sexo);
$paciente->setEstadoCivil($estadoCivil);
$paciente->setHijos($hijos);
$paciente->setTelefono($telefono);
$paciente->setCiudad($ciudad);
$paciente->setEmail($email);
$paciente->setRecomendacion($recomendacion);
$paciente->setAlias($alias);
$paciente->setRecomendado($recomendado);
$paciente->setRedsocial($redsocial);
$paciente->setObservacion($observacion_paciente);
$paciente->setPacienteEndoscopias($paciente_endoscopias);
$paciente->setPacienteBariatrico($paciente_bariatrico);
//////////////////
$xprocedimientos = $form->get('procedimiento')->getData();
$xcont = 0;
foreach($xprocedimientos as $xp){
if($xcont == 0){
$agenda->setProcedimiento($xp);
}
$xcont ++;
}
$xcont = 0;
foreach($xprocedimientos as $xp){
if($xcont > 0){
$agendaProcedimiento = new AgendaProcedimiento();
$agendaProcedimiento->setAgenda($agenda);
$agendaProcedimiento->setProcedimiento($xp);
$agendaProcedimiento->setIpCrea($ip);
$agendaProcedimiento->setIpModifica($ip);
$agendaProcedimiento->setUserCrea($user->getId());
$agendaProcedimiento->setUserModifica($user->getId());
$entityManager->persist($agendaProcedimiento);
}
$xcont ++;
}
////////////
$entityManager->persist($logagenda);
$entityManager->persist($paciente);
$entityManager->flush();
///////////////////
$preparacion = $agenda->getPreparacion();
if($preparacion==null){
$preparacion = new Preparacion();
$entityManager = $this->getDoctrine()->getManager();
$preparacion->setEstado('2');
$preparacion->setIpCrea($ip);
$preparacion->setIpModifica($ip);
$preparacion->setEstatura(1);
$preparacion->setPeso(1);
$preparacion->setUserCrea($user->getId());
$preparacion->setUserModifica($user->getId());
$preparacion->setFrecuenciaRespiratoria('0');
$preparacion->setSaturacionDeOxigeno('0');
$preparacion->setAgenda($agenda);
$entityManager->persist($preparacion);
$entityManager->flush();
}
/////////////////////
$productos = [];
$xcant = 0;
$orden = $ordenVentaRepository->findOneBy(['id_agenda' => $agenda->getId(), 'tipo' => 'AGENDA']);
//dd($orden);
if($orden != null){
//////
foreach($xprocedimientos as $xp){
if($xp->getProducto() != null){
$productos[$xcant] = $xp->getProducto();
$xcant++;
}
}
}//dd($productos);
$t = 0;
foreach($productos as $producto){$t++;
$existe_detalle = $ordenVentaDetalleRepository->findOneBy(['producto' => $producto, 'orden_venta' => $orden]);
//if($t>1){ dd($productos, $t, $producto, $existe_detalle); }
if($existe_detalle == null){
$detalle = new OrdenVentaDetalle();
$detalle->setDescripcion($producto->getNombre());
$detalle->setCantidad(1);
$detalle->setPrecio($producto->getPrecio());
$detalle->setIva(0);
$detalle->setValorIva(0);
$detalle->setEstado(1);
$detalle->setIpCrea($ip);
$detalle->setIpModifica($ip);
$detalle->setUserCrea($user->getId());
$detalle->setUserModifica($user->getId());
$detalle->setProducto($producto);
$detalle->setDescuento(0);
$detalle->setOrdenVenta($orden);
$valor_subtotal = $producto->getPrecio();
$detalle->setsubtotal($valor_subtotal);
$detalle->setPctOda(0);
$detalle->setOda(0);
$entityManager->persist($detalle);
$entityManager->flush();
}
}
///////////////////////
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId()]);
}
else{
dd($this->getFormErrors($form));
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId()]);
}
/**
* @Route("/reunion/{id}/edit/update", name="agenda_reunion_update", methods={"GET","POST"})
*/
public function agenda_reunion_update(Request $request, Agenda $agenda, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository): Response
{
$nunidad = $agenda->getSala()->getUnidad()->getNombre();
//return $this->json(['form' => $form]);
$ip = $request->getClientIp();
$user = $this->security->getUser();
$form = $this->createForm(AgendaTypeEditReunion::class, $agenda, ['unidad' => $nunidad ]);
$form->handleRequest($request);
$logagenda = new LogAgenda();
if ($form->isSubmitted() && $form->isValid()) {
$id_sala = $form->get('sala')->getData();
$sala = $salaRepository->find($id_sala);
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setEstadoAgenda(0);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $form->get('inicio')->getData();
$fin = $form->get('fin')->getData();
$observacion = $form->get('observacion')->getData();
$descripcion = 'ACTUALIZACION';
//$id_seguro = $form->get('seguro')->getData();
//$seguro = $seguroRepository->find($id_seguro);
$id_doctor = $form->get('doctor')->getData();
$doctor = $userRepository->find($id_doctor);
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($agenda->getSeguro());
$logagenda->setEspecialidad($agenda->getEspecialidad());
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($logagenda);
$entityManager->flush();
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId()]);
}
else{
dd($this->getFormErrors($form));
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId()]);
}
/**
* @Route("new_modal/{id}/edit", name="agenda_modal_edit", methods={"GET","POST"})
*/
public function edit_modal(Request $request, Agenda $agenda): Response
{
$form = $this->createForm(AgendaType::class, $agenda);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('agenda_index');
}
return $this->render('agenda/edit_modal.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}", name="agenda_delete", methods={"DELETE"})
*/
public function delete(Request $request, Agenda $agenda): Response
{
if ($this->isCsrfTokenValid('delete'.$agenda->getId(), $request->request->get('_token'))) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($agenda);
$entityManager->flush();
}
return $this->redirectToRoute('agenda_index');
}
/**
* @Route("/confirmar/edit/{id}", name="agenda_confirmar", methods={"GET","POST"})
*/
public function confirmar(Request $request, Agenda $agenda): Response
{
$form = $this->createForm(AgendaTypeConfirm::class, $agenda);
//dd($form);
$form->handleRequest($request);
/*if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agenda);
$entityManager->flush();
return $this->redirectToRoute('agenda_index');
}*/
return $this->render('agenda/edit_confirm.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
]);
}
/**
* @Route("/confirmar/edit/{id}/update", name="agenda_confirmar_update", methods={"GET","POST"})
*/
public function confirmar_update(Request $request, Agenda $agenda, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$form = $this->createForm(AgendaTypeConfirm::class, $agenda);
$form->handleRequest($request);
$logagenda = new LogAgenda();
//dd($form->isValid());
if ($form->isSubmitted() && $form->isValid()) {
$sala = $agenda->getSala();
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$agenda->setEstadoAgenda(2);
$logagenda->setEstadoAgenda(2);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $agenda->getInicio();
$fin = $agenda->getFin();
$observacion = $form->get('observacion')->getData();
$descripcion = 'CONFIRMACION';
$seguro = $agenda->getSeguro();
$especialidad = $agenda->getEspecialidad();
$doctor = $agenda->getDoctor();
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($logagenda);
$entityManager->flush();
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId()]);
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId()]);
}
/**
* @Route("/admision/edit/{id}", name="agenda_admision", methods={"GET","POST"})
*/
public function admision(Request $request, Agenda $agenda, PreparacionRepository $preparacionRepository ): Response
{
$preparaciones = $preparacionRepository->buscaPreparacionxPaciente($agenda->getPaciente()->getId())->getResult();
$form = $this->createForm(AgendaTypeAdmision::class, $agenda);
//dd($form);
$form->handleRequest($request);
$estadocivil = $agenda->getPaciente()->getEstadoCivil();
$form->get('estado_civil')->setData($estadocivil);
$ciudad = $agenda->getPaciente()->getCiudad();
$form->get('ciudad')->setData($ciudad);
$lugar_nacimiento = $agenda->getPaciente()->getLugarNacimiento();
$form->get('lugar_nacimiento')->setData($lugar_nacimiento);
/*$referido = $agenda->getPaciente()->getReferido();
$form->get('referido')->setData($referido);*/
$recomendacion = $agenda->getPaciente()->getRecomendacion();
$peso = 0;$talla = 0;$peso = 0;
if($agenda->getPreparacion() != null){
$peso = $agenda->getPreparacion()->getPeso();
$talla = $agenda->getPreparacion()->getEstatura();
}
$form->get('recomendacion')->setData($recomendacion);
$form->get('peso')->setData($peso);
$form->get('estatura')->setData($talla);
if($peso == '1'){
if(isset($preparaciones[1])){
$peso = $preparaciones[1]['peso'];
$talla = $preparaciones[1]['estatura'];
if($peso > '1'){
$form->get('peso')->setData($peso);
$form->get('estatura')->setData($talla);
}
}
}
$cedula_familiar = $agenda->getPaciente()->getCedulaFamiliar();
$form->get('cedula_familiar')->setData($cedula_familiar);
$parentesco = $agenda->getPaciente()->getParentesco();
$form->get('parentesco')->setData($parentesco);
$nombres_familiar = $agenda->getPaciente()->getNombresFamiliar();
$form->get('nombres_familiar')->setData($nombres_familiar);
$telefono_familiar = $agenda->getPaciente()->getTelefonoFamiliar();
$form->get('telefono_familiar')->setData($telefono_familiar);
$pais = $agenda->getPaciente()->getPais();
if($pais==null){
$pais = 'ECUADOR';
}
$form->get('pais')->setData($pais);
$parroquia_residencia = $agenda->getPaciente()->getParroquiaResidencia();
$form->get('parroquia_residencia')->setData($parroquia_residencia);
$provincia_residencia = $agenda->getPaciente()->getProvinciaresidencia();
$form->get('provincia_residencia')->setData($provincia_residencia);
$telefono = $agenda->getPaciente()->getTelefono();
$form->get('telefono')->setData($telefono);
$direccion = $agenda->getPaciente()->getDireccion();
$form->get('direccion')->setData($direccion);
$ocupacion = $agenda->getPaciente()->getOcupacion();
$form->get('ocupacion')->setData($ocupacion);
/*if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agenda);
$entityManager->flush();
return $this->redirectToRoute('agenda_index');
}*/
return $this->render('agenda/edit_admision.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
]);
}
/**
* @Route("/admin/edit/{id}/update", name="agenda_admin_update", methods={"GET","POST"})
*/
public function admin_update(Request $request, Agenda $agenda, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroRepository, EspecialidadRepository $unidadRepository, UserRepository $userRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$form = $this->createForm(AgendaTypeAdmision::class, $agenda);
$form->handleRequest($request);
$logagenda = new LogAgenda();
if ($form->isSubmitted() && $form->isValid()) {
$sala = $agenda->getSala();
/*$brochureFile = $form->get('cedula_paciente')->getData();
if ($brochureFile) {
$originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME);
$cedula = $agenda->getPaciente()->getCedula();
// this is needed to safely include the file name as part of the URL
//$safeFilename = $slugger->slug($originalFilename);
$safeFilename ='cedula_'.$cedula.'_'.date("YmdHis");
//$newFilename = $safeFilename.'-'.uniqid().'.'.$brochureFile->guessExtension();
$newFilename = $safeFilename.'.'.$brochureFile->guessExtension();
// Move the file to the directory where brochures are stored
try {
$brochureFile->move(
$this->getParameter('brochures_directory'),
$newFilename
);
} catch (FileException $e) {
// ... handle exception if something happens during file upload
}
// updates the 'brochureFilename' property to store the PDF file name
// instead of its contents
$agenda->getPaciente()->setCopiaCedula($newFilename);
//$product->setBrochureFilename($newFilename);
} */
//$brochureFile = $form->get('archivo053')->getData();
/*if ($brochureFile) {
$originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME);
$cedula = $agenda->getPaciente()->getCedula();
// this is needed to safely include the file name as part of the URL
//$safeFilename = $slugger->slug($originalFilename);
$safeFilename ='f053_'.$cedula;
//$newFilename = $safeFilename.'-'.uniqid().'.'.$brochureFile->guessExtension();
$newFilename = $safeFilename.'.'.$brochureFile->guessExtension();
// Move the file to the directory where brochures are stored
try {
$brochureFile->move(
$this->getParameter('brochures_directory'),
$newFilename
);
} catch (FileException $e) {
// ... handle exception if something happens during file upload
}
// updates the 'brochureFilename' property to store the PDF file name
// instead of its contents
$agenda->setArchivo053($newFilename);
//$product->setBrochureFilename($newFilename);
} */
///////////////////
$preparacion = $agenda->getPreparacion();
if($preparacion==null){
$preparacion = new Preparacion();
$entityManager = $this->getDoctrine()->getManager();
$preparacion->setEstado('2');
$preparacion->setIpCrea($ip);
$preparacion->setIpModifica($ip);
$preparacion->setEstatura(1);
$preparacion->setPeso(1);
$preparacion->setUserCrea($user->getId());
$preparacion->setUserModifica($user->getId());
$preparacion->setFrecuenciaRespiratoria('0');
$preparacion->setSaturacionDeOxigeno('0');
$preparacion->setAgenda($agenda);
$entityManager->persist($preparacion);
$entityManager->flush();
}
/////////////////////
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$agenda->setEstadoAgenda(2);
$logagenda->setEstadoAgenda(2);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $agenda->getInicio();
$fin = $agenda->getFin();
$observacion = $form->get('observacion')->getData();
$descripcion = 'ADMISION';
$seguro = $agenda->getSeguro();
$especialidad = $agenda->getEspecialidad();
$doctor = $agenda->getDoctor();
$estadocivil = $form->get('estado_civil')->getData();
$ciudad = $form->get('ciudad')->getData();
$pais = $form->get('pais')->getData();
$parroquia_residencia = $form->get('parroquia_residencia')->getData();
$provincia_residencia = $form->get('provincia_residencia')->getData();
$telefono = $form->get('telefono')->getData();
$direccion = $form->get('direccion')->getData();
$lugarnacimiento = $form->get('lugar_nacimiento')->getData();
$ocupacion = $form->get('ocupacion')->getData();
//$referido = $form->get('referido')->getData();
$recomendacion = $form->get('recomendacion')->getData();
$peso = $form->get('peso')->getData();
$talla = $form->get('estatura')->getData();
$cedulafamiliar = $form->get('cedula_familiar')->getData();
$parentesco = $form->get('parentesco')->getData();
$nombresfamiliar = $form->get('nombres_familiar')->getData();
$telefonofamiliar= $form->get('telefono_familiar')->getData();
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
$agenda->getPaciente()->setEstadoCivil($estadocivil);
$agenda->getPaciente()->setCiudad(strtoupper($ciudad));
$agenda->getPaciente()->setOcupacion(strtoupper($ocupacion));
$agenda->getPaciente()->setLugarNacimiento(strtoupper($lugarnacimiento));
//$agenda->getPaciente()->setReferido(strtoupper($referido));
$agenda->getPaciente()->setCedulaFamiliar(strtoupper($cedulafamiliar));
$agenda->getPaciente()->setParentesco(strtoupper($parentesco));
$agenda->getPaciente()->setNombresFamiliar(strtoupper($nombresfamiliar));
$agenda->getPaciente()->setTelefonoFamiliar(strtoupper($telefonofamiliar));
$agenda->getPaciente()->setPais(strtoupper($pais));
$agenda->getPaciente()->setParroquiaResidencia(strtoupper($parroquia_residencia));
$agenda->getPaciente()->setProvinciaResidencia(strtoupper($provincia_residencia));
$agenda->getPaciente()->setDireccion(strtoupper($direccion));
$agenda->getPaciente()->setTelefono($telefono);
$agenda->getPaciente()->setRecomendacion($recomendacion);
if($agenda->getPreparacion() != null){
$agenda->getPreparacion()->setPeso($peso);
$agenda->getPreparacion()->setEstatura($talla);
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($logagenda);
//$entityManager->persist($agenda);
//$entityManager->persist($agenda->getPaciente());
$entityManager->flush();
return $this->json(['estado' => 'ok', 'agenda' => $agenda->getId()]);
}
return $this->json(['estado' => 'no', 'agenda' => $agenda->getId()]);
}
/**
* @Route("/pantalla/control", name="agenda_control", methods={"GET","POST"})
*/
public function index_control(HistoriaClinicaRepository $historiaClinicaRepository, AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, TurnoRepository $turnoRepository): Response
{
$turno = $turnoRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType::class,$agenda);
$form->handleRequest($request);
$fecha = $form->get('inicio')->getData();
$session = $request->getSession();
$session->set('paciente',null);
if($fecha==null){
$fecha = new \DateTime("now");
$form->get('inicio')->setData($fecha);
}
$query = $agendaRepository->findByAdmisionadas(date_format($fecha,'Y-m-d'),date_format($fecha,'Y-m-d'));
//dd($query->getResult());
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
30
);
return $this->render('historia_clinica/index_control.html.twig', [ 'agendas' => $agendas, 'form' => $form->createView(), 'turno' => $turno ]);
}
/**
* @Route("/recepcion/agenda/listado/dia", name="agenda_listado", methods={"GET","POST"})
*/
public function index_listado(AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, FormaPagoRepository $formaPagoRepository): Response
{
$empresa = $empresaRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType_pac_rpt::class,$agenda);
$form->handleRequest($request);
$seguro = $form->get('seguro')->getData();
$unidad = $form->get('unidad')->getData();
$fecha = $form->get('inicio')->getData();
$hasta = $form->get('hasta')->getData();
$paciente = $form->get('paciente')->getData();
$doctor = $form->get('doctor')->getData();
$session = $request->getSession();
$session->set('paciente',null);
if($form->isSubmitted()){
if($fecha!=null){
//$session = $request->getSession();
$session->set('fecha_busqueda', $fecha);
}
if($hasta!=null){
//$session = $request->getSession();
$session->set('fecha_hasta', $hasta);
}
if($fecha==null){
$fecha = new \DateTime("now");
$form->get('inicio')->setData($fecha);
$session->set('fecha_busqueda', $fecha);
}
if($hasta==null){
$hasta = new \DateTime("now");
$form->get('hasta')->setData($hasta);
$session->set('fecha_hasta', $hasta);
}
}else{
$fecha = $session->get('fecha_busqueda');
if($fecha==null){
$fecha = new \DateTime("now");
}
$form->get('inicio')->setData($fecha);
$hasta = $session->get('fecha_hasta');
if($hasta==null){
$hasta = new \DateTime("now");
}
$form->get('hasta')->setData($hasta);
}
//$query = $agendaRepository->findByAdmisionadas_paciente(date_format($fecha,'Y-m-d'),date_format($fecha,'Y-m-d'),$paciente);
$query = $agendaRepository->findByAdmisionadas_rpt(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente,$unidad,$doctor);
$query2 = $agendaRepository->findByAnuladas(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente);
$query_doc = $agendaRepository->findByEstadistico_Doctor($unidad, date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'))->getResult();//dd($query_doc);
$query_doc2 = $agendaRepository->findByEstadistico_Doctor_2($unidad, date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'))->getResult();//dd($query_doc, $query_doc2);
$qSalud = $agendaRepository->findByAdmisionadas_Salud(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente,$unidad,$doctor);
$arr_doc = [];$arr_fp = [];$arr_final = [];
foreach($query_doc2 as $doc){
$arr_doc[$doc['nombres']] = ['valor' => $doc['valor'] , 'color' => $doc['color']];
}
foreach($query_doc as $doc){
$arr_fp[$doc['forma_pago']] = '1';
//$arr_doc[$doc['nombres']] = '1';
$arr_final[$doc['nombres']][$doc['forma_pago']] = $doc['valor'];
}
//dd($arr_doc, $arr_fp, $arr_final);
//dd($query->getResult());
if ($form->getClickedButton() === $form->get('Reporte')){
return $this->reporte_xls( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
if ($form->getClickedButton() === $form->get('Reporte_Admin')){
return $this->reporte_xls_admi( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
if ($form->getClickedButton() === $form->get('Anuladas')){
return $this->reporte_xls2( $query2, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
if ($form->getClickedButton() === $form->get('SALUDSA')){
return $this->reporteSaludSA( $qSalud, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
100
);
return $this->render('historia_clinica/index_listado.html.twig', [ 'agendas' => $agendas, 'form' => $form->createView(), 'empresa' => $empresa, 'fecha' => $fecha, 'hasta' => $hasta, 'arr_doc' => $arr_doc, 'arr_fp' => $arr_fp, 'arr_final' => $arr_final, 'unidad' => $unidad ]);
}
/**
* @Route("/recepcion/agenda/listado/dia/cop", name="agenda_listado_cop", methods={"GET","POST"})
*/
public function index_listado_cop(AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, FormaPagoRepository $formaPagoRepository): Response
{
$empresa = $empresaRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType_pac_rpt::class,$agenda);
$form->handleRequest($request);
$seguro = $form->get('seguro')->getData();
$unidad = $form->get('unidad')->getData();
$fecha = $form->get('inicio')->getData();
$hasta = $form->get('hasta')->getData();
$paciente = $form->get('paciente')->getData();
$doctor = $form->get('doctor')->getData();
$session = $request->getSession();
$session->set('paciente',null);
if($form->isSubmitted()){
if($fecha!=null){
//$session = $request->getSession();
$session->set('fecha_busqueda', $fecha);
}
if($hasta!=null){
//$session = $request->getSession();
$session->set('fecha_hasta', $hasta);
}
if($fecha==null){
$fecha = new \DateTime("now");
$form->get('inicio')->setData($fecha);
$session->set('fecha_busqueda', $fecha);
}
if($hasta==null){
$hasta = new \DateTime("now");
$form->get('hasta')->setData($hasta);
$session->set('fecha_hasta', $hasta);
}
}else{
$fecha = $session->get('fecha_busqueda');
if($fecha==null){
$fecha = new \DateTime("now");
}
$form->get('inicio')->setData($fecha);
$hasta = $session->get('fecha_hasta');
if($hasta==null){
$hasta = new \DateTime("now");
}
$form->get('hasta')->setData($hasta);
}
//$query = $agendaRepository->findByAdmisionadas_paciente(date_format($fecha,'Y-m-d'),date_format($fecha,'Y-m-d'),$paciente);
$query = $agendaRepository->findByAdmisionadas_rpt(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente,$unidad,$doctor);
$query2 = $agendaRepository->findByAnuladas(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente);
$query_doc = $agendaRepository->findByEstadistico_Doctor($unidad, date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'))->getResult();//dd($query_doc);
$query_doc2 = $agendaRepository->findByEstadistico_Doctor_2($unidad, date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'))->getResult();//dd($query_doc);
$arr_doc = [];$arr_fp = [];$arr_final = [];
foreach($query_doc2 as $doc){
$arr_doc[$doc['nombres']] = ['valor' => $doc['valor'] , 'color' => $doc['color']];
}
foreach($query_doc as $doc){
$arr_fp[$doc['forma_pago']] = '1';
//$arr_doc[$doc['nombres']] = '1';
$arr_final[$doc['nombres']][$doc['forma_pago']] = $doc['valor'];
}
//dd($arr_doc, $arr_fp, $arr_final);
//dd($query->getResult());
if ($form->getClickedButton() === $form->get('Reporte')){
return $this->reporte_xls( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
if ($form->getClickedButton() === $form->get('Reporte_Admin')){
return $this->reporte_xls_admi( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
if ($form->getClickedButton() === $form->get('Anuladas')){
return $this->reporte_xls2( $query2, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
100
);
return $this->render('historia_clinica/index_listado_cop.html.twig', [ 'agendas' => $agendas, 'form' => $form->createView(), 'empresa' => $empresa, 'fecha' => $fecha, 'hasta' => $hasta, 'arr_doc' => $arr_doc, 'arr_fp' => $arr_fp, 'arr_final' => $arr_final, 'unidad' => $unidad ]);
}
/**
* @Route("/recepcion/agenda/listado/dia/anuladas", name="agenda_listado_anuladas", methods={"GET","POST"})
*/
public function index_listado_anuladas(AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, FormaPagoRepository $formaPagoRepository, LogAgendaRepository $logAgendaRepository, UserRepository $userRepository): Response
{
$empresa = $empresaRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType_pac_rpt_anuladas::class,$agenda);
$form->handleRequest($request);
$seguro = $form->get('seguro')->getData();
$fecha = $form->get('inicio')->getData();
$hasta = $form->get('hasta')->getData();
$paciente = $form->get('paciente')->getData();
$session = $request->getSession();
$session->set('paciente',null);
if($form->isSubmitted()){
if($fecha!=null){
//$session = $request->getSession();
$session->set('fecha_busqueda', $fecha);
}
if($hasta!=null){
//$session = $request->getSession();
$session->set('fecha_hasta', $hasta);
}
if($fecha==null){
$fecha = new \DateTime("now");
$form->get('inicio')->setData($fecha);
$session->set('fecha_busqueda', $fecha);
}
if($hasta==null){
$hasta = new \DateTime("now");
$form->get('hasta')->setData($hasta);
$session->set('fecha_hasta', $hasta);
}
}else{
$fecha = $session->get('fecha_busqueda');
if($fecha==null){
$fecha = new \DateTime("now");
}
$form->get('inicio')->setData($fecha);
$hasta = $session->get('fecha_hasta');
if($hasta==null){
$hasta = new \DateTime("now");
}
$form->get('hasta')->setData($hasta);
}
$query = $agendaRepository->findByAnuladas(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente);
if ($form->getClickedButton() === $form->get('Anuladas')){
return $this->reporte_xls2( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa );
}
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
100
);
return $this->render('historia_clinica/index_listado_anuladas.html.twig', [ 'agendas' => $agendas, 'form' => $form->createView(), 'empresa' => $empresa, 'fecha' => $fecha, 'hasta' => $hasta, 'userRepository' => $userRepository ]);
}
public function reporte_xls( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa ){
$agendas = $query->getResult();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$formas_pago = $formaPagoRepository->findAll();
$sheet->setTitle("Atenciones del día");
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
$sheet->getStyle('A1:J3')->getFont()->setBold(true);
$sheet->setCellValue('A3', 'FECHA');
//$sheet->setCellValue('B3', 'HORA');
$sheet->setCellValue('B3', 'CEDULA');
$sheet->setCellValue('C3', 'PACIENTE');
$sheet->setCellValue('D3', 'TIPO DE SERVICIO');
$sheet->setCellValue('E3', 'DOCTOR');
$sheet->setCellValue('F3', 'ESPECIALIDAD');
//$sheet->setCellValue('H3', 'ESTADO');
$sheet->setCellValue('G3', 'SEGURO');
$sheet->setCellValue('H3', 'OBSERVACION');
$sheet->setCellValue('I3', 'SUBTOTAL');
$sheet->setCellValue('J3', 'FEE');
$sheet->setCellValue('K3', 'DESCUENTO');
$sheet->setCellValue('L3', 'TOTAL FACTURA');
$sheet->setCellValue('M3', 'DETALLE');
$sheet->setCellValue('N3', 'BANCO');
$sheet->setCellValue('O3', 'DETALLE PAGO');
$arr = ['P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS'];$it = 0;
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].'3', $fp->getNombre());
$it ++;
}
$sheet->setCellValue($arr[$it].'3', 'ODA');$it ++;
$sheet->getStyle('A3:'.$arr[$it+3].'3')->getFont()->setBold(true);
//$sheet->setCellValue($arr[$it].'3', 'TELEFONOS');$it ++;
//$sheet->setCellValue($arr[$it].'3', 'DIRECCION');$it ++;
//$sheet->setCellValue($arr[$it].'3', 'MAIL');
$sheet->setCellValue($arr[$it].'3', 'RETENCION');$it++;
$i = 4;$arr_pago = [];$total_oda = 0;
foreach($formas_pago as $fp){
$arr_pago[$fp->getId()] = 0;
}
foreach ($agendas as $value) {
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
$pagos = [];
if(!is_null($orden)){
$pagos = $orden->getOrdenVentaDetallePagos();
}
$subtotal = 0; $descuento = 0; $total = 0;$odetalle = "";$fi = 0;
if(!is_null($orden)){
$subtotal = $orden->getSubtotal();
$descuento = $orden->getDescuento();
$fi = $orden->getFi();
$total = $orden->getTotal();
$ov_detalles = $orden->getOrdenVentaDetalles();
foreach($ov_detalles as $od){
$odetalle.= $od->getDescripcion().'--';
}
}
//dd($orden);
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m/Y'));
//$sheet->setCellValue('B'.$i, date_format($value['inicio'], 'H:i:s'));
$sheet->setCellValue('B'.$i, $value['agenda']->getPaciente()->getCedula());
$sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->setCellValue('C'.$i, $value['paciente']);
$sheet->setCellValue('D'.$i, $value['agenda']->getProcedimiento()->getNombre());
$sheet->setCellValue('E'.$i, $value['doctor']);
if($value['agenda']->getPreparacion()==null){
if($value['agenda']->getEstadoAgenda() < 2){
$estado = 'NO ADMISIONADA';
}else{
$estado = 'PENDIENTE PREPARACION';
}
}else{
if($value['agenda']->getPreparacion()->getEstado()==1){
$estado = 'PASE A PREPARACION';
}elseif($value['agenda']->getPreparacion()->getEstado()==2){
if($value['agenda']->getHistoriaClinica()==null){
$estado = 'PREPARACION LISTA';
}else{
if($value['agenda']->getHistoriaClinica()->getEstado()==1){
$estado = 'PASAR A CONSULTA';
}else{
$estado = 'ATENDIDO';
}
}
}
}
$sheet->setCellValue('F'.$i, $value['agenda']->getEspecialidad());
//$sheet->setCellValue('H'.$i, $estado);
$sheet->setCellValue('G'.$i, $value['agenda']->getSeguro());
$sheet->setCellValue('H'.$i, $value['agenda']->getObservacion());
$sheet->setCellValue('I'.$i, $subtotal);
$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('J'.$i, $fi);
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('K'.$i, $descuento);
$sheet->getStyle('K'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('L'.$i, $total);
$sheet->getStyle('L'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('M'.$i, $odetalle);
$txt_pagos = '';$it = 0;$bancos = ' ';$detalle_pago = ' ';
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].$i, 0);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$total_pago = 0;
if(!is_null($orden)){
$pagos = $orden->pagos_por_forma($fp);
foreach($pagos as $pago){
if($pago->getBanco() != null){
$bancos = $bancos.' '.$pago->getBanco()->getNombre();
}
if($pago->getNumTransaccion() != null){
$detalle_pago = $detalle_pago.' '.$pago->getNumTransaccion();
}
$total_pago += $pago->getValor() + $pago->getValorFi();
}
}
$arr_pago[$fp->getId()] += $total_pago;
$sheet->setCellValue($arr[$it].$i, $total_pago);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$it++;
}
$sheet->setCellValue('N'.$i, $bancos);
$sheet->setCellValue('O'.$i, $detalle_pago);
$oda = 0;
if(!is_null($orden)){
$total_oda += $orden->getOda();
$oda = $orden->getOda();
$sheet->setCellValue($arr[$it].$i, $orden->getOda() );
}else{
$sheet->setCellValue($arr[$it].$i, 0 );
}
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getTelefono() );$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getDireccion());$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getEmail());
if($oda > 0){
$sheet->setCellValue($arr[$it].$i, $subtotal * 0.275);
}else{
$sheet->setCellValue($arr[$it].$i, 0);
}
$i++;
}
$it = 0;
$sheet->setCellValue('M'.$i, "TOTAL");
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].$i, $arr_pago[$fp->getId()]);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$it++;
}
$sheet->setCellValue($arr[$it].$i, $total_oda);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('M'.$i.':'.$arr[$it].$i)->getFont()->setBold(true);
$it = 0;
foreach($formas_pago as $fp){
$it ++;
}
$sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$sheet->getPageSetup()->setFitToWidth(1);
$sheet->getPageSetup()->setFitToHeight(1);
$highestColumn = $sheet->getHighestColumn(); // Última columna con datos
$highestRow = $sheet->getHighestRow(); // Última fila con datos
$printArea = 'A1:' . $highestColumn . $highestRow;
$sheet->getPageSetup()->setPrintArea($printArea);
// Ajustar tamaño de columnas automáticamente
foreach (range('A', $highestColumn) as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
// Configurar márgenes mínimos para maximizar el espacio
$sheet->getPageMargins()->setTop(0.2);
$sheet->getPageMargins()->setRight(0.2);
$sheet->getPageMargins()->setLeft(0.2);
$sheet->getPageMargins()->setBottom(0.2);
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA_'.date('Y-m-d').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
if (ob_get_length()) {
ob_end_clean();
}
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function reporte_xls_admi( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa ){
$agendas = $query->getResult();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$formas_pago = $formaPagoRepository->findBy(['ip_crea'=>'RP'],['user_crea'=>'ASC']);
$sheet->setTitle("Atenciones del día");
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
$sheet->getStyle('A1:J3')->getFont()->setBold(true);
$sheet->setCellValue('A3', 'FECHA');
//$sheet->setCellValue('B3', 'HORA');
$sheet->setCellValue('B3', 'PACIENTE');
$sheet->setCellValue('C3', 'TIPO DE SERVICIO');
$sheet->setCellValue('D3', 'DOCTOR');
$sheet->setCellValue('E3', 'SEGURO');
$sheet->setCellValue('F3', 'DETALLE');
$sheet->setCellValue('G3', 'OBSERVACION');
$sheet->setCellValue('H3', 'SUBTOTAL');
$sheet->setCellValue('I3', 'TOTAL FACTURA');
$sheet->setCellValue('J3', 'BANCO');
//$sheet->setCellValue('K3', 'DETALLE TRANSACCION');
$arr = ['K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN'];$it = 0;
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].'3', $fp->getNombre());
$it ++;
}
$sheet->setCellValue($arr[$it].'3', 'ODA');$it ++;
$sheet->getStyle('A3:'.$arr[$it+3].'3')->getFont()->setBold(true);
$i = 4;$arr_pago = [];$total_oda = 0;
foreach($formas_pago as $fp){
$arr_pago[$fp->getId()] = 0;
}
//$it++;
$sheet->setCellValue($arr[$it].'3', 'DERIVADO');$it ++;
$sheet->setCellValue($arr[$it].'3', 'RED/SEG');$it ++;
$sheet->setCellValue($arr[$it].'3', 'RECOMENDACION');$it ++;
$stotal = 0; $ttotal = 0;
foreach ($agendas as $value) {
$pxs = $value['agenda']->getAgendaProcedimientos();
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
$pagos = [];
if(!is_null($orden)){
$pagos = $orden->getOrdenVentaDetallePagos();
}
$subtotal = 0; $descuento = 0; $total = 0;$odetalle = "";$fi = 0;
if(!is_null($orden)){
$subtotal = $orden->getSubtotal();
$descuento = $orden->getDescuento();
$fi = $orden->getFi();
$total = $orden->getTotal();
$ov_detalles = $orden->getOrdenVentaDetalles();
foreach($ov_detalles as $od){
$odetalle.= $od->getDescripcion().'--';
}
}
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m'));
//$sheet->setCellValue('B'.$i, date_format($value['inicio'], 'H:i:s'));
//$sheet->getStyle('B'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->setCellValue('B'.$i, $value['paciente']);
$txt_proc = $value['agenda']->getProcedimiento()->getNombre()."-> ";
foreach($pxs as $px){
$txt_proc .= $px->getProcedimiento()->getNombre()."-> ";
}
$sheet->setCellValue('C'.$i, $txt_proc);
$sheet->setCellValue('D'.$i, $value['doctor']);
$txt_color = $value['agenda']->getDoctor()->getColor();
$txt_color = substr($txt_color,1);
$sheet->getStyle('D'.$i)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF'.$txt_color); // Color hexadecimal (azul)
if($value['agenda']->getPreparacion()==null){
if($value['agenda']->getEstadoAgenda() < 2){
$estado = 'NO ADMISIONADA';
}else{
$estado = 'PENDIENTE PREPARACION';
}
}else{
if($value['agenda']->getPreparacion()->getEstado()==1){
$estado = 'PASE A PREPARACION';
}elseif($value['agenda']->getPreparacion()->getEstado()==2){
if($value['agenda']->getHistoriaClinica()==null){
$estado = 'PREPARACION LISTA';
}else{
if($value['agenda']->getHistoriaClinica()->getEstado()==1){
$estado = 'PASAR A CONSULTA';
}else{
$estado = 'ATENDIDO';
}
}
}
}
$sheet->setCellValue('E'.$i, $value['agenda']->getSeguro());
$sheet->setCellValue('F'.$i, $odetalle);
$sheet->setCellValue('G'.$i, $value['agenda']->getObservacion());
$sheet->setCellValue('H'.$i, $subtotal);$stotal += $subtotal;
$sheet->setCellValue('I'.$i, $total);$ttotal += $total;
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$txt_pagos = '';$it = 0;$bancos = ' ';$detalle_txt = ' ';
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].$i, 0);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$total_pago = 0;
if(!is_null($orden)){
$pagos = $orden->pagos_por_forma($fp);
foreach($pagos as $pago){
if($pago->getBanco() != null){
$bancos = $bancos.' '.$pago->getBanco()->getNombre();
}
if($pago->getNumTransaccion() != null){
$detalle_txt = $detalle_txt.' '.$pago->getNumTransaccion();
}
$total_pago += $pago->getValor() + $pago->getValorFi();
}
}
$arr_pago[$fp->getId()] += $total_pago;
$sheet->setCellValue($arr[$it].$i, $total_pago);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$it++;
}
$sheet->setCellValue('J'.$i, $bancos);
//$sheet->setCellValue('K'.$i, $detalle_txt);
$oda = 0;
if(!is_null($orden)){
$total_oda += $orden->getOda();
$oda = $orden->getOda();
$sheet->setCellValue($arr[$it].$i, $orden->getOda() );
}else{
$sheet->setCellValue($arr[$it].$i, 0 );
}
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getTelefono() );$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getDireccion());$it ++;
//$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getEmail());
if($oda > 0){
//$sheet->setCellValue($arr[$it].$i, $subtotal * 0.275);
}else{
//$sheet->setCellValue($arr[$it].$i, 0);
}
if($value['agenda']->getCobrado() == '1'){
//$sheet->setCellValue($arr[$it].$i, 'COBRAD' );
}//$it++;
$deri = "";
if( $value['agenda']->getRecomendado() != null){
$deri = $value['agenda']->getRecomendado()->getDr()." ".$value['agenda']->getRecomendado()->getNombre1()." ".$value['agenda']->getRecomendado()->getNombre2()." ".$value['agenda']->getRecomendado()->getApellido1()." ".$value['agenda']->getRecomendado()->getApellido2();
}
$sheet->setCellValue($arr[$it].$i, $deri );
$it++;$red = ' ';
if($value['agenda']->getRedsocial() != null){
$red = $value['agenda']->getRedsocial()->getNombre();
}
$sheet->setCellValue($arr[$it].$i, $red );
$it++;
$sheet->setCellValue($arr[$it].$i, $value['agenda']->getPaciente()->getRecomendacion() );
$it++;
$i++;
}
$it = 0;
$sheet->setCellValue('G'.$i, "TOTAL");
$sheet->setCellValue('H'.$i, $stotal);
$sheet->setCellValue('I'.$i, $ttotal);
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$acum_fp = 0;
foreach($formas_pago as $fp){
$acum_fp += $arr_pago[$fp->getId()];
$sheet->setCellValue($arr[$it].$i, $arr_pago[$fp->getId()]);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$it++;
}
$sheet->setCellValue($arr[$it].$i, $total_oda);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('H'.$i.':'.$arr[$it].$i)->getFont()->setBold(true);
$sheet->getStyle('I'.$i.':'.$arr[$it].$i)->getFont()->setBold(true);
$sheet->getStyle('A1:'.$arr[$it + 3].$i)->getFont()->setSize(7);
$it++;
$acum_fp += $total_oda;
//$sheet->setCellValue($arr[$it].$i, $acum_fp);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('I'.$i.':'.$arr[$it].$i)->getFont()->setBold(true);
$sheet->getStyle('A'.$i.':'.$arr[$it + 3].$i)->getFont()->setSize(9);
/*$sheet->getColumnDimension('A')->setWidth(7);
$sheet->getColumnDimension('B')->setWidth(7);
$sheet->getColumnDimension('C')->setWidth(20);
$sheet->getColumnDimension('D')->setWidth(20);
$sheet->getColumnDimension('E')->setWidth(7);
$sheet->getColumnDimension('F')->setWidth(7);
$sheet->getColumnDimension('G')->setWidth(25);
$sheet->getColumnDimension('H')->setWidth(8);
$sheet->getColumnDimension('I')->setWidth(8);
$sheet->getColumnDimension('J')->setWidth(7);
$sheet->getColumnDimension('K')->setWidth(7);
$sheet->getColumnDimension('L')->setWidth(7);
$sheet->getColumnDimension('M')->setWidth(7);
$sheet->getColumnDimension('N')->setWidth(7);
$sheet->getColumnDimension('O')->setWidth(7);*/
$it = 0;
foreach($formas_pago as $fp){
//$sheet->getColumnDimension($arr[$it])->setWidth(7);
$it ++;
}
//$sheet->getColumnDimension($arr[$it])->setWidth(7);$it ++;
//$sheet->getColumnDimension($arr[$it])->setWidth(7);$it ++;
//$sheet->getColumnDimension($arr[$it])->setWidth(40);
$sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$sheet->getPageSetup()->setFitToWidth(1);
$sheet->getPageSetup()->setFitToHeight(1);
// Definir un área de impresión automática basada en los datos
$highestColumn = $sheet->getHighestColumn(); // Última columna con datos
$highestRow = $sheet->getHighestRow(); // Última fila con datos
$printArea = 'A1:' . $highestColumn . $highestRow;
$sheet->getPageSetup()->setPrintArea($printArea);
// Ajustar tamaño de columnas automáticamente
foreach (range('A', $highestColumn) as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
// Configurar márgenes mínimos para maximizar el espacio
$sheet->getPageMargins()->setTop(0.2);
$sheet->getPageMargins()->setRight(0.2);
$sheet->getPageMargins()->setLeft(0.2);
$sheet->getPageMargins()->setBottom(0.2);
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA_'.date('Y-m-d').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function reporte_xls2( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa ){
$agendas = $query->getResult();
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$formas_pago = $formaPagoRepository->findAll();
$sheet->setTitle("Atenciones del día");
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS ANULADOS DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->setCellValue('A2', $titulo )->mergeCells('A1:J1');
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
$sheet->getStyle('A1:K3')->getFont()->setBold(true);
$sheet->getStyle('A1:J2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A3', 'FECHA');
$sheet->setCellValue('B3', 'HORA');
$sheet->setCellValue('C3', 'CEDULA');
$sheet->setCellValue('D3', 'PACIENTE');
$sheet->setCellValue('E3', 'TIPO DE SERVICIO');
$sheet->setCellValue('F3', 'DOCTOR');
$sheet->setCellValue('G3', 'ESTADO');
$sheet->setCellValue('H3', 'OBSERVACION');
$sheet->setCellValue('I3', 'TELEFONOS');
$sheet->setCellValue('J3', 'DIRECCION');
$sheet->setCellValue('K3', 'MAIL');
/*$sheet->setCellValue('H2', 'TOTAL');
$sheet->setCellValue('I2', 'DESCUENTO');
$sheet->setCellValue('J2', 'FACTURADO');
$arr = ['K','L','M','N','O','P','Q'];$it = 0;
foreach($formas_pago as $fp){
$sheet->setCellValue($arr[$it].'2', $fp->getNombre());
$it ++;
}
$sheet->getStyle('A2:'.$arr[$it].'2')->getFont()->setBold(true);*/
$i = 4;
foreach ($agendas as $value) {
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
$pagos = [];
if(!is_null($orden)){
$pagos = $orden->getOrdenVentaDetallePagos();
}
$subtotal = 0; $descuento = 0; $total = 0;
if(!is_null($orden)){
$subtotal = $orden->getSubtotal();
$descuento = $orden->getDescuento();
$total = $orden->getTotal();
}
//dd($orden);
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m/Y'));
$sheet->setCellValue('B'.$i, date_format($value['inicio'], 'H:i:s'));
$sheet->setCellValue('C'.$i, $value['agenda']->getPaciente()->getCedula());
$sheet->getStyle('C'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$sheet->setCellValue('D'.$i, $value['paciente']);
$sheet->setCellValue('E'.$i, $value['agenda']->getProcedimiento()->getNombre());
$sheet->setCellValue('F'.$i, $value['doctor']);
if($value['agenda']->getPreparacion()==null){
$estado = 'PENDIENTE PREPARACION';
}else{
if($value['agenda']->getPreparacion()->getEstado()==1){
$estado = 'PASE A PREPARACION';
}elseif($value['agenda']->getPreparacion()->getEstado()==2){
if($value['agenda']->getHistoriaClinica()==null){
$estado = 'PREPARACION LISTA';
}else{
if($value['agenda']->getHistoriaClinica()->getEstado()==1){
$estado = 'PASAR A CONSULTA';
}else{
$estado = 'ATENDIDO';
}
}
}
}
$sheet->setCellValue('G'.$i, $estado);
$sheet->setCellValue('H'.$i, $value['agenda']->getObservacion());
$sheet->setCellValue('I'.$i, $value['agenda']->getPaciente()->getTelefono() );
$sheet->setCellValue('J'.$i, $value['agenda']->getPaciente()->getDireccion());
$sheet->setCellValue('K'.$i, $value['agenda']->getPaciente()->getEmail());
/*$sheet->setCellValue('H'.$i, $subtotal);
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('I'.$i, $descuento);
$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->setCellValue('J'.$i, $total);
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$txt_pagos = '';$it = 0;
foreach($formas_pago as $fp){
foreach($pagos as $pago){
if($fp->getId() == $pago->getFormapago()->getId()){
$sheet->setCellValue($arr[$it].$i, $pago->getValor());
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
}else{
$sheet->setCellValue($arr[$it].$i, 0);
$sheet->getStyle($arr[$it].$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
}
//$txt_pagos = $txt_pagos.'-'.$pago->getFormaPago()->getNombre();
}$it++;
} */
$i++;
}
$sheet->getColumnDimension('A')->setWidth(15);
$sheet->getColumnDimension('B')->setWidth(15);
$sheet->getColumnDimension('C')->setWidth(20);
$sheet->getColumnDimension('D')->setWidth(40);
$sheet->getColumnDimension('E')->setWidth(30);
$sheet->getColumnDimension('F')->setWidth(25);
$sheet->getColumnDimension('G')->setWidth(30);
$sheet->getColumnDimension('H')->setWidth(40);
$sheet->getColumnDimension('I')->setWidth(15);
$sheet->getColumnDimension('J')->setWidth(40);
$sheet->getColumnDimension('K')->setWidth(40);
$it = 0;
/*foreach($formas_pago as $fp){
$sheet->getColumnDimension($arr[$it])->setWidth(20);
$it ++;
}*/
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function reporteSaludSA( $query, $ordenVentaRepository, $fecha, $hasta, $formaPagoRepository, $empresa ){
$agendas = $query->getResult();//dd($agendas);
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$formas_pago = $formaPagoRepository->findAll();
$sheet->setTitle("Atenciones del día");
$listado = [
"REGION",
"PRODUCTO",
"CONTRATO",
"CEDULA CLIENTE",
"NUM PERSONA",
"FECHA RECEPCIÓN/FECHA INCURRENCIA",
"DX1 CODIGO CIE10",
"DX2 CODIGO CIE10",
"DX3 CODIGO CIE10",
"SERVICIO",
"CÓDIGO HOMOLOGACION/CÓDIGO PROCEDIMIENTO",
"PRESTACION/NOMBRE BENEFICIO",
"CANTIDAD",
"TOTAL - VALOR CONVENIO",
"VALOR FEE",
"VALOR COPAGO (VALOR QUE PAGA EL CLIENTE)",
"VALOR NO CUBIERTO",
"VALOR COBRAR A SALUD",
"NOMBRE PACIENTE",
"FECHA ORDEN",
"FECHA IMPRESIÓN",
"NIVEL",
"PRECIO FIRMADO EN CONVENIO",
"DIFERENCIA",
"AUDITORIA"
];
$letras = range('A', 'Z');
$sheet->getStyle('A1:E1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF52be80');
$sheet->getStyle('F1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFebdef0');
$sheet->getStyle('G1:I1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFFF00FF');
$sheet->getStyle('J1:N1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFebdef0');
$sheet->getStyle('O1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFFF00FF');
$sheet->getStyle('P1:R1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFebdef0');
$sheet->getStyle('S1:V1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF52be80');
$sheet->getStyle('W1:Y1')->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFFF0000');
$sheet->getRowDimension(1)->setRowHeight(50);
$cant = 0;
foreach($listado as $list){
$sheet->setCellValue($letras[$cant].'1', $list );
$sheet->getStyle($letras[$cant].'1')->getAlignment()->setVertical(Alignment::VERTICAL_TOP)->setWrapText(true);
$cant ++;
}
//dd($agendas);
$i = 2;$total = 0;
foreach ($agendas as $value) {
//dd($value);
$agenda = $value['agenda'];
$paciente = $agenda->getPaciente();
$historia = $agenda->getHistoriaClinica();
//dd($agenda);
if($historia != null){
//dd($historia);
$dxs = $historia->getDiagnosticosHistoriaClinicas();
$txt_code = "CIE10 ";
if(isset($dxs[0])){
$txt_code = $txt_code.' '.$dxs[0]->getCie10()->getCodigo();
}
$txt_servicio = "";
if (str_contains($agenda->getProcedimiento()->getNombre(), "CONSULTA")) {
$txt_servicio = "CONSULTA MEDICA";
}
if (str_contains($agenda->getProcedimiento()->getNombre(), "ECOGR")) {
$txt_servicio = "IMAGENOLOGIA";
}
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $agenda->getId()]);
if($orden != null){
//dd($orden);
$detalles = $orden->getOrdenVentaDetalles();
foreach($detalles as $detalle){
$total_salud = $detalle->getSubtotal() - $detalle->getOda();
$total += $total_salud;
$body = [
$paciente->getRegion(),
$agenda->getSaludProducto(),
$paciente->getContrato(),
$paciente->getCedula(),
$agenda->getSaludNropersona(),
date_format($agenda->getInicio(), 'd/m/Y'),
$txt_code,
"",
"",
$txt_servicio,
"",
$detalle->getDescripcion(),
$detalle->getCantidad(),
$detalle->getPrecio(),
"",
$total_salud,
"",
$detalle->getOda(),
$paciente->getApellido1().' '.$paciente->getApellido2().' '.$paciente->getNombre1().' '.$paciente->getNombre2(),
date_format($agenda->getInicio(), 'd/m/Y'),
date_format($agenda->getInicio(), 'd/m/Y'),
$agenda->getSaludNivel(),
"",
"",
""
];
$cant = 0;
foreach($body as $bod){
$sheet->setCellValue($letras[$cant].$i, $bod );
$cant ++;
}
$sheet->getStyle('D'.$i)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT);
$i++;
}
}
}
}
$sheet->setCellValue("W".$i, 'VALOR PRESENTADO' );
$sheet->setCellValue("X".$i, $total );
$i++;
$sheet->setCellValue("W".$i, 'VALOR OBSERVADO POR AUDITORIA ' );
$sheet->setCellValue("X".$i, '' );
$i++;
$sheet->setCellValue("W".$i, 'VALOR A FACTURAR ' );
$sheet->setCellValue("X".$i, $total );
$sheet->getStyle('A1:Y'.$i)->getBorders()->applyFromArray([
'allBorders' => [
'borderStyle' => Border::BORDER_THIN, // Tipo de borde
'color' => ['argb' => 'FF000000'], // Color negro
],
]);
$sheet->getColumnDimension('A')->setWidth(15);
$sheet->getColumnDimension('B')->setWidth(15);
$sheet->getColumnDimension('C')->setWidth(15);
$sheet->getColumnDimension('D')->setWidth(15);
$sheet->getColumnDimension('E')->setWidth(15);
$sheet->getColumnDimension('F')->setWidth(25);
$sheet->getColumnDimension('G')->setWidth(30);
$sheet->getColumnDimension('H')->setWidth(30);
$sheet->getColumnDimension('I')->setWidth(30);
$sheet->getColumnDimension('J')->setWidth(30);
$sheet->getColumnDimension('K')->setWidth(30);
$sheet->getColumnDimension('L')->setWidth(30);
$sheet->getColumnDimension('M')->setWidth(30);
$sheet->getColumnDimension('N')->setWidth(30);
$sheet->getColumnDimension('O')->setWidth(30);
$sheet->getColumnDimension('P')->setWidth(30);
$sheet->getColumnDimension('Q')->setWidth(30);
$sheet->getColumnDimension('R')->setWidth(30);
$sheet->getColumnDimension('S')->setWidth(50);
$sheet->getColumnDimension('T')->setWidth(30);
$sheet->getColumnDimension('U')->setWidth(30);
$sheet->getColumnDimension('V')->setWidth(30);
$sheet->getColumnDimension('W')->setWidth(30);
$sheet->getColumnDimension('X')->setWidth(30);
$sheet->getColumnDimension('Y')->setWidth(30);
$sheet->getColumnDimension('Z')->setWidth(30);
$it = 0;
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'SALUD.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/suspender/{id}", name="agenda_suspender", methods={"GET","POST"})
*/
public function suspender(Request $request, Agenda $agenda): Response
{
//dd($request->request);
$motivo = $request->request->get('motivo');
$ip = $request->getClientIp();
$user = $this->security->getUser();
$nunidad = $agenda->getSala()->getUnidad()->getNombre();
if( $agenda->getEstado() == 1 ){
//$form = $this->createForm(AgendaTypeEdit::class, $agenda,[ 'unidad' => $nunidad ]);
}else{
//$form = $this->createForm(AgendaTypeEditReunion::class, $agenda,[ 'unidad' => $nunidad ]);
}
//dd($form);
//$form->handleRequest($request);
$logagenda = new LogAgenda();
//if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$sala = $agenda->getSala();
$logagenda->setSala($sala);
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$agenda->setEstado(0);
$agenda->setEstadoAgenda(3);
$agenda->setIpModifica($ip);
$agenda->setUserModifica($user->getId());
$logagenda->setEstadoAgenda(3);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $agenda->getInicio();
$fin = $agenda->getFin();
$seguro = $agenda->getSeguro();
$especialidad = $agenda->getEspecialidad();
$doctor = $agenda->getDoctor();
$observacion = $motivo;
$descripcion = 'SUSPENDER';
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion($descripcion);
//$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($logagenda);
//$entityManager->persist($agenda);
$entityManager->flush();
//return $this->redirectToRoute('agenda_index');
return $this->json(['estado' => 'ok']);
//}
//return $this->json(['estado' => 'error']);
}
/**
* @Route("/laboratorio/orden/new/{id_paciente}", name="agenda_laboratorio_orden_new", methods={"GET"})
*/
public function laboratorio_orden_new(Request $request, $id_paciente, PacienteRepository $pacienteRepository, UserRepository $userRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroPrivadoRepository, EspecialidadRepository $especialidadRepository, ProcedimientosRepository $procedimientosRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$agenda = new Agenda;
$session = $request->getSession();
$id_paciente = $session->get('id_paciente');
$paciente = $pacienteRepository->find($id_paciente);
$doctor = $userRepository->findOneBy(['cedula' => 'EXTERNO']);
$sala = $salaRepository->findOneBy(['nombre' => 'LABORATORIO']);
$seguro = $seguroPrivadoRepository->find(1);
$especialidad = $especialidadRepository->findOneBy(['nombre' => 'LABORATORIO']);
$procedimiento = $procedimientosRepository->findOneBy(['nombre' => 'LABORATORIO']);
$entityManager = $this->getDoctrine()->getManager();
$fecha = new \DateTime("now");
$agenda->setInicio($fecha);
$agenda->setFin($fecha);
$agenda->setPaciente($paciente);
$agenda->setDoctor($doctor);
$agenda->setSala($sala);
$agenda->setEstado(1);
$agenda->setIpCrea($ip);
$agenda->setIpModifica($ip);
$agenda->setUserCrea($user->getId());
$agenda->setUserModifica($user->getId());
$agenda->setSeguro($seguro);
$agenda->setEspecialidad($especialidad);
$agenda->setEstadoAgenda(2);
$agenda->setProcedimiento($procedimiento);
$entityManager->persist($agenda);
$entityManager->flush();
$historia = new HistoriaClinica;
$historia->setAgenda($agenda);
$historia->setIpCrea($ip);
$historia->setIpModifica($ip);
$historia->setUserCrea($user->getId());
$historia->setUserModifica($user->getId());
$historia->setPaciente($paciente);
$historia->setEstado(1);
$entityManager->persist($historia);
$entityManager->flush();
$orden = new ExamenOrden();
$orden->setDoctor($historia->getAgenda()->getDoctor());
$orden->setEstado(1);
$orden->setPaciente($historia->getPaciente());
$orden->setHistoria($historia);
$orden->setSeguro($historia->getAgenda()->getSeguro());
$orden->setFechaOrden($fecha);
$orden->setIpCrea($ip);
$orden->setIpModifica($ip);
$orden->setUserCrea($user->getId());
$orden->setUserModifica($user->getId());
$orden->setCantidad(0);
$orden->setDescuento(0);
$orden->setDescuentoValor(0);
$orden->setRecargo(0);
$orden->setAgendado(0);
$orden->setRecargoValor(0);
$orden->setValor(0);
$orden->setTotalValor(0);
$entityManager->persist($orden);
$entityManager->flush();
return $this->json(['id_orden' => $orden->getId()]);
return $this->redirectToRoute('laboratorio_examen_orden_edit',[
'id_orden' => $orden->getId(),
]);
}
/**
* @Route("/laboratorio/edit/{id_orden}", name="laboratorio_examen_orden_edit", methods={"GET"})
*/
public function laboratorio_edit(Request $request, $id_orden, ExamenOrdenRepository $examenOrdenRepository, OrdenVentaRepository $ordenVentaRepository, LabProtocoloRepository $labProtocoloRepository): Response
{
$examenOrden = $examenOrdenRepository->find($id_orden);
$detalle = new ExamenDetalle();
$form = $this->createForm(ExamenDetalleType::class, $detalle);
$form2 = $this->createForm(ExamenOrdenTypeRecepcion::class, $examenOrden, ['doctor' => $examenOrden->getDoctor()]);
$form->handleRequest($request);
$form2->handleRequest($request);
$form->get('orden')->setData($examenOrden->getId());
$fecha_orden = $examenOrden->getFechaOrden();
$id_paciente = $examenOrden->getPaciente()->getId();
$historia = $examenOrden->getHistoria();
//$dxs = $historia->getDiagnosticosHistoriaClinicas();
$protocolos = $labProtocoloRepository->findBy(['estado' => 2]);
//dd($protocolos);
return $this->render('agenda/laboratorio_edit.html.twig', [
'examenOrden' => $examenOrden,
'form' => $form->createView(),
'form2' => $form2->createView(),
'detalles' => $examenOrden->getExamenDetalles(),
'ordenVentaRepository' => $ordenVentaRepository,
'protocolos' => $protocolos,
//'dxs' => $dxs,
]);
}
/**
* @Route("/cotizacion/laboratorio/new/", name="cotizacion_laboratorio_new", methods={"GET"})
*/
public function cotizacion_orden_new(Request $request, PacienteRepository $pacienteRepository, UserRepository $userRepository, SalaRepository $salaRepository, SeguroPrivadoRepository $seguroPrivadoRepository, EspecialidadRepository $especialidadRepository, ProcedimientosRepository $procedimientosRepository, TipoUsuarioRepository $tipoUsuarioRepository,): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$agenda = new Agenda;
$session = $request->getSession();
//$id_paciente = '0922290691';
$id_paciente = '0922290697';
$paciente = $pacienteRepository->findOneBy(['cedula' => $id_paciente]);
$entityManager = $this->getDoctrine()->getManager();
$doctor = $userRepository->findOneBy(['cedula' => 'EXTERNO']);
if(is_null($doctor)){
$doctor = new User();
$doctor->setUsername('EXTERNO');
$doctor->setApellido1('EXTERNO');
$doctor->setApellido2('EXTERNO'); // nullable, pero tú tienes valor
$doctor->setNombre1('DOCTOR');
$doctor->setNombre2('DOCTOR'); // nullable
// roles es JSON en DB, en Symfony normalmente es array
$doctor->setRoles(['ROLE_USER']);
// ✅ Opción A: usar el hash que ya tienes (tal cual lo pegaste)
$doctor->setPassword('$argon2id$v=19$m=65536,t=4,p=1$LzVWdmoyUkczam5mSi9KZw$0uoSD1a1qKhvTMkeYTHifTLVbJvRWadk5Ne3pSG401A');
$tipoUsuario = $tipoUsuarioRepository->find(3);
$doctor->setTipousuario($tipoUsuario);
$doctor->setCedula('EXTERNO');
$doctor->setEstado(1);
$entityManager->persist($doctor);
$entityManager->flush();
}
$sala = $salaRepository->findOneBy(['nombre' => 'LABORATORIO']);
$seguro = $seguroPrivadoRepository->find(1);
$especialidad = $especialidadRepository->findOneBy(['nombre' => 'LABORATORIO']);
if(is_null($especialidad)){
$especialidad = new Especialidad();
$especialidad->setNombre('LABORATORIO');
$especialidad->setEstado(1); // o 1 según tu entidad
$especialidad->setIpCrea($ip);
$especialidad->setIpModifica($ip);
$especialidad->setUserCrea($user->getId());
$especialidad->setUserModifica($user->getId());
$now = new \DateTimeImmutable();
$especialidad->setCreatedAt($now);
$especialidad->setUpdatedAt($now);
$entityManager->persist($especialidad);
$entityManager->flush();
}
$procedimiento = $procedimientosRepository->findOneBy(['nombre' => 'LABORATORIO']);
if(is_null($procedimiento))
{
$procedimiento = new Procedimientos();
$procedimiento->setNombre('LABORATORIO');
$procedimiento->setObservacion('Procedimiento creado automáticamente');
$procedimiento->setEstado(1);
$procedimiento->setIpCrea($ip);
$procedimiento->setIpModifica($ip);
$procedimiento->setUserCrea($user->getId());
$procedimiento->setUserModifica($user->getId());
$now = new \DateTimeImmutable();
$procedimiento->setCreatedAt($now);
$procedimiento->setUpdatedAt($now);
$entityManager->persist($procedimiento);
$entityManager->flush();
}
$fecha = new \DateTime("now");
$agenda->setInicio($fecha);
$agenda->setFin($fecha);
$agenda->setPaciente($paciente);
$agenda->setDoctor($doctor);
$agenda->setSala($sala);
$agenda->setEstado(0);
$agenda->setIpCrea($ip);
$agenda->setIpModifica($ip);
$agenda->setUserCrea($user->getId());
$agenda->setUserModifica($user->getId());
$agenda->setSeguro($seguro);
$agenda->setEspecialidad($especialidad);
$agenda->setEstadoAgenda(0);
$agenda->setProcedimiento($procedimiento);
$entityManager->persist($agenda);
$entityManager->flush();
$historia = new HistoriaClinica;
$historia->setAgenda($agenda);
$historia->setIpCrea($ip);
$historia->setIpModifica($ip);
$historia->setUserCrea($user->getId());
$historia->setUserModifica($user->getId());
$historia->setPaciente($paciente);
$historia->setEstado(0);
$entityManager->persist($historia);
$entityManager->flush();
$orden = new ExamenOrden();
$orden->setDoctor($historia->getAgenda()->getDoctor());
$orden->setEstado(0);
$orden->setPaciente($historia->getPaciente());
$orden->setHistoria($historia);
$orden->setSeguro($historia->getAgenda()->getSeguro());
$orden->setFechaOrden($fecha);
$orden->setIpCrea($ip);
$orden->setIpModifica($ip);
$orden->setUserCrea($user->getId());
$orden->setUserModifica($user->getId());
$orden->setCantidad(0);
$orden->setDescuento(0);
$orden->setDescuentoValor(0);
$orden->setRecargo(0);
$orden->setAgendado(0);
$orden->setRecargoValor(0);
$orden->setValor(0);
$orden->setTotalValor(0);
$entityManager->persist($orden);
$entityManager->flush();
//return $this->json(['id_orden' => $orden->getId()]);
return $this->redirectToRoute('laboratorio_cotizar',[
'id_orden' => $orden->getId(),
]);
}
/**
* @Route("/laboratorio/cotizar/orden/{id_orden}", name="laboratorio_cotizar", methods={"GET"})
*/
public function laboratorio_cotizar(Request $request, $id_orden, ExamenOrdenRepository $examenOrdenRepository): Response
{
$examenOrden = $examenOrdenRepository->find($id_orden);
$detalle = new ExamenDetalle();
$form = $this->createForm(ExamenDetalleCotizacionType::class, $detalle);
//$form2 = $this->createForm(ExamenOrdenTypeRecepcion::class, $examenOrden, ['doctor' => $examenOrden->getDoctor()]);
$form2 = $this->createForm(CotizacionType::class, $examenOrden);
$form->handleRequest($request);
$form2->handleRequest($request);
$form->get('orden')->setData($examenOrden->getId());
$fecha_orden = $examenOrden->getFechaOrden();
$id_paciente = $examenOrden->getPaciente()->getId();
$historia = $examenOrden->getHistoria();
//$dxs = $historia->getDiagnosticosHistoriaClinicas();
return $this->render('agenda/laboratorio_cotizacion.html.twig', [
'examenOrden' => $examenOrden,
'form' => $form->createView(),
'form2' => $form2->createView(),
'detalles' => $examenOrden->getExamenDetalles(),
//'dxs' => $dxs,
]);
}
/**
* @Route("/control/documentos/{id}", name="agenda_control_documentos", methods={"GET"})
*/
public function agenda_control_documentos(Request $request, Agenda $agenda, MaestroDocumentosRepository $maestroDocumentosRepository, AgendaArchivosRepository $agendaArchivosRepository): Response
{
$documentos = $maestroDocumentosRepository->findBy(['estado' => 1, 'departamento' => 'RECEPCION']);
return $this->render('agenda/control_documentos.html.twig', [
'agenda' => $agenda,
'maestroDocumentosRepository' => $maestroDocumentosRepository,
'documentos' => $documentos,
'agendaArchivosRepository' => $agendaArchivosRepository
]);
}
/**
* @Route("/control/documentos/guardar/{id}/{id_doc}", name="agenda_control_documentos_guardar", methods={"GET", "POST"})
*/
public function agenda_control_documentos_guardar(Request $request, Agenda $agenda, MaestroDocumentosRepository $maestroDocumentosRepository, $id_doc, AgendaArchivosRepository $agendaArchivosRepository): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$documento = $maestroDocumentosRepository->find($id_doc);
$brochureFile = $request->files->get('doc'.$id_doc);
//dd($brochureFile);
if ($brochureFile) {
$originalFilename = pathinfo($brochureFile->getClientOriginalName(), PATHINFO_FILENAME);
$cedula = $agenda->getPaciente()->getCedula();
// this is needed to safely include the file name as part of the URL
//$safeFilename = $slugger->slug($originalFilename);
$safeFilename ='c'.$cedula.'d'.$id_doc.date("YmdHis");
//$newFilename = $safeFilename.'-'.uniqid().'.'.$brochureFile->guessExtension();
$newFilename = $safeFilename.'.'.$brochureFile->guessExtension();
// Move the file to the directory where brochures are stored
try {
$brochureFile->move(
$this->getParameter('agenda'),
$newFilename
);
} catch (FileException $e) {
// ... handle exception if something happens during file upload
}
// updates the 'brochureFilename' property to store the PDF file name
// instead of its contents
//$agenda->getPaciente()->setCopiaCedula($newFilename);
$agendaArchivo = $agendaArchivosRepository->findOneBy(['agenda' => $agenda, 'estado' => 1, 'maestro_documentos' => $documento]);
if($agendaArchivo == null){
$agendaArchivo = new AgendaArchivos();
}
//dd($agendaArchivo);
$agendaArchivo->setAgenda($agenda);
$agendaArchivo->setMaestroDocumentos($documento);
$agendaArchivo->setOrden($documento->getOrden());
$agendaArchivo->setEstado(1);
$agendaArchivo->setTipo($documento->getTipo());
$agendaArchivo->setRutaArchivo($newFilename);
$agendaArchivo->setIpCrea($ip);
$agendaArchivo->setIpModifica($ip);
$agendaArchivo->setUserCrea($user->getId());
$agendaArchivo->setUserModifica($user->getId());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($agendaArchivo);
$entityManager->flush();
return $this->json(['estado' => 'ok']);
}
return $this->json(['estado' => 'error']);
}
/**
* @Route("/cobertura/{cedula}", name="agenda_imprimir_cobertura", methods={"GET"})
*/
public function imprimir_cobertura($cedula): Response
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false,
);
//dd($options);
$ch = curl_init('https://coresalud.msp.gob.ec/coresalud/app.php/publico/rpis/afiliacion/consulta/' . $cedula . '/' . date('d-m-Y'));
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
//dd($content);
$pdfOptions = new Options();
$pdfOptions->set('defaultFont', 'Arial');
$pdfOptions->set('isRemoteEnabled', TRUE);
$pdfOptions->set('isHtml5ParserEnabled', TRUE);
//$pdfOptions->set('tempDir', 'C:\xampp\htdocs\sy_liquidacion2\public\assets\images');
// Crea una instancia de Dompdf con nuestras opciones
$dompdf = new Dompdf($pdfOptions);
$arrContextOptions = array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),
);//dd($arrContextOptions);
$path = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/refresh.jpg';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path, false, stream_context_create($arrContextOptions));
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
$path_2 = 'https://coresalud.msp.gob.ec/coresalud/app.php/publico/registrousuario/captcha/new';
$type_2 = pathinfo($path_2, PATHINFO_EXTENSION);
$data_2 = file_get_contents($path_2, false, stream_context_create($arrContextOptions));
$base64_2 = 'data:image/' . $type_2 . ';base64,' . base64_encode($data_2);
$content = str_replace('<span class="label label-success">', '<span class="label label-success" >', $content);
$content = str_replace('#045FB4', 'black', $content);
$content = str_replace('btn-info', 'btn-info btn-info_2', $content);
$path_msp = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/logomsp.png';
$type_msp = pathinfo($path_msp, PATHINFO_EXTENSION);
$data_msp = file_get_contents($path_msp, false, stream_context_create($arrContextOptions));
$base64_msp = 'data:image/' . $type_msp . ';base64,' . base64_encode($data_msp);
$path_interior = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/mininterior.png';
$type_interior = pathinfo($path_interior, PATHINFO_EXTENSION);
$data_interior = file_get_contents($path_interior, false, stream_context_create($arrContextOptions));
$base64_interior = 'data:image/' . $type_interior . ';base64,' . base64_encode($data_interior);
$path_defensa = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/mindefensa.png';
$type_defensa = pathinfo($path_defensa, PATHINFO_EXTENSION);
$data_defensa = file_get_contents($path_defensa, false, stream_context_create($arrContextOptions));
$base64_defensa = 'data:image/' . $type_defensa . ';base64,' . base64_encode($data_defensa);
$path_iess = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/iess.png';
$type_iess = pathinfo($path_iess, PATHINFO_EXTENSION);
$data_iess = file_get_contents($path_iess, false, stream_context_create($arrContextOptions));
$base64_iess = 'data:image/' . $type_iess . ';base64,' . base64_encode($data_iess);
$path_issfa = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/issfa.png';
$type_issfa = pathinfo($path_issfa, PATHINFO_EXTENSION);
$data_issfa = file_get_contents($path_issfa, false, stream_context_create($arrContextOptions));
$base64_issfa = 'data:image/' . $type_issfa . ';base64,' . base64_encode($data_issfa);
$path_isspol = 'https://coresalud.msp.gob.ec/coresalud/bundles/publico/img/isspol.png';
$type_isspol = pathinfo($path_isspol, PATHINFO_EXTENSION);
$data_isspol = file_get_contents($path_isspol, false, stream_context_create($arrContextOptions));
$base64_isspol = 'data:image/' . $type_isspol . ';base64,' . base64_encode($data_isspol);
// Recupere el HTML generado en nuestro archivo twig
$html = $this->renderView('agenda/resultado.html.twig',[
'content' => $content,
'cedula' => $cedula,
'arrContextOptions' => $arrContextOptions,
'path' => $path,
'type' => $type,
'data' => $data,
'base64' => $base64,
'path_2' => $path_2,
'type_2' => $type_2,
'data_2' => $data_2,
'base64_2' => $base64_2,
'path_msp' => $path_msp,
'type_msp' => $type_msp,
'data_msp' => $data_msp,
'base64_msp' => $base64_msp,
'path_interior' => $path_interior,
'type_interior' => $type_interior,
'data_interior' => $data_interior,
'base64_interior' => $base64_interior,
'path_defensa' => $path_defensa,
'type_defensa' => $type_defensa,
'data_defensa' => $data_defensa,
'base64_defensa' => $base64_defensa,
'path_iess' => $path_iess,
'type_iess' => $type_iess,
'data_iess' => $data_iess,
'base64_iess' => $base64_iess,
'path_issfa' => $path_issfa,
'type_issfa' => $type_issfa,
'data_issfa' => $data_issfa,
'base64_issfa' => $base64_issfa,
'path_isspol' => $path_isspol,
'type_isspol' => $type_isspol,
'data_isspol' => $data_isspol,
'base64_isspol' => $base64_isspol,
]);
// Cargar HTML en Dompdf
$dompdf->loadHtml($html);
//$dompdf->loadHtmlFile($html);
// (Opcional) Configure el tamaño del papel y la orientación 'vertical' o 'vertical'
$dompdf->setPaper('A4', 'portrait');
//dompdf->setPaper('A4', 'landscape');
// Renderiza el HTML como PDF
$dompdf->render();
// Envíe el PDF generado al navegador (vista en línea)
$dompdf->stream($cedula.".pdf", [
"Attachment" => false
]);
/*$pdf = \App::make('dompdf.wrapper');
$vistaurl = "resultados_pdf";
$view = \View::make($vistaurl, compact('content', 'cedula'))->render();
$pdf->loadHTML($view);
$pdf->setOptions(['dpi' => 150]);
return $pdf->download('test.pdf');
$datos = DB::table('excel')->where('id', $id)->first();
if (is_null($datos)) {
return "no existe el registro";
}
return $pdf->download($datos->nombre . '' . $datos->numero_paciente . '' . date('d-m-Y') . '.pdf');*/
}
/**
* @Route("/agenda_archivo/delete/{id}", name="agenda_archivo_delete", methods={"GET", "POST"})
*/
public function agenda_archivo_delete(Request $request, $id, AgendaArchivosRepository $agendaArchivosRepository): Response
{
$agendaArchivo = $agendaArchivosRepository->find($id);
//dd($agendaArchivo);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($agendaArchivo);
$entityManager->flush();
return $this->json(['estado' => 'ok']);
}
/**
* @Route("/corregir/nota_entrega", name="masivo_corrige_nota_entrega", methods={"GET"})
*/
public function masivo_corrige_nota_entrega(AgendaRepository $agendaRepository, RecetaRepository $recetaRepository)
{
ini_set('memory_limit', '100000000M');
//$agendas = $agendaRepository->findByDate();
//dd($agendas);
/*foreach ($agendas as $agenda) {
if($agenda->getHistoriaClinica() != null){
$historia = $agenda->getHistoriaClinica();
if($historia->getRecetas()->count() > 0){
$recetas = $historia->getRecetas();
foreach( $recetas as $receta ){
$detalles = $receta->getRecetaDetalles();
//dd($detalles);
foreach($detalles as $detalle){
//dd($detalle);
$nombre_nv = $detalle->getMedicina()->getNombre();
$detalle->setNombre($nombre_nv);
$detalle->setIpCrea('MAS03');
$this->getDoctrine()->getManager()->flush();
}
}
}
$agenda->setIpCrea('MAS03');
$this->getDoctrine()->getManager()->flush();
}
}*/
$recetas = $recetaRepository->findByDate();
foreach( $recetas as $receta ){
$detalles = $receta->getRecetaDetalles();
//dd($detalles);
foreach($detalles as $detalle){
//dd($detalle);
$nombre_nv = $detalle->getMedicina()->getNombre();
$detalle->setNombre($nombre_nv);
$detalle->setIpCrea('MAS03');
$this->getDoctrine()->getManager()->flush();
}
}
//dd($recetas);
return "ok";
}
/**
* @Route("reunion/new_modal", name="agenda_reunion_new_modal", methods={"GET"})
*/
public function reunion_new_modal(Request $request, PacienteRepository $pacienteRepository, SalaRepository $salaRepository, UserRepository $userRepository, EspecialidadRepository $especialidadRepository): Response
{
$agenda = new Agenda();
$session = $request->getSession();
$id_sala = $session->get('id_sala');
$paciente = $pacienteRepository->findOneBy(['cedula'=>'REUNION']);
$sala = $salaRepository->find($id_sala);
$sala_doctor = 0;$especialidad = null; $nunidad = null;
$nunidad = $sala->getUnidad()->getNombre();
$doctor = null;
if($sala->getIdDoctor()!=null){//dd($sala->getIdDoctor());
$sala_doctor = $sala->getIdDoctor();
$doctor = $userRepository->find($sala_doctor);//dd($doctor);
$especialidad = $doctor->getEspecialidad();
}else{
if($sala->getUnidad()->getId()=='1'){
$especialidad = $especialidadRepository->find('1');
}else{
$especialidad = $especialidadRepository->find('17');
}
}
//dd($doctor);
if($sala->getUnidad()->getId()== '1' and $doctor == null){
$doctor = $userRepository->find(2);//dd($doctor);
$agenda->setDoctor($doctor);
$especialidad = $doctor->getEspecialidad();
$agenda->setEspecialidad($especialidad);
$sala = $salaRepository->findOneBy(['id_doctor' => '2']);
$agenda->setSala($sala);//dd($agenda);
}
if($sala->getUnidad()->getId()== '2' and $doctor == null){
$doctor = $userRepository->find(12);//dd($doctor);
$agenda->setDoctor($doctor);
$especialidad = $doctor->getEspecialidad();
$agenda->setEspecialidad($especialidad);
$sala = $salaRepository->findOneBy(['id_doctor' => '12']);
$agenda->setSala($sala);
//dd($especialidad);
}
$agenda->setEspecialidad($especialidad);
//dd($sala->getUnidad(),$sala_doctor, $especialidad, $nunidad);
$form = $this->createForm(AgendaReunionType::class, $agenda, ['doctor' => $sala_doctor, 'especialidad' => $especialidad->getId(), 'unidad' => $nunidad ]);
//dd($form);
$form->handleRequest($request);
return $this->render('agenda/reunion_new_modal.html.twig', [
'agenda' => $agenda,
'form' => $form->createView(),
'paciente' => $paciente,
'sala' => $sala
]);
}
/**
* @Route("/calendar/medico/id_auth", name="agenda_calendar_medico", methods={"GET"})
*/
public function calendar_medico(Request $request, EmpresaRepository $empresaRepository, SalaRepository $salaRepository): Response
{
$user = $this->security->getUser();
$sala = $salaRepository->findOneBy(['id_doctor' => $user->getId()]);
$id_sala = $sala->getId();
if($user->getId() == '2'){
//$id_sala = '20';
}
if($user->getId() == '22'){
//$id_sala = '33';
}
$sala = $salaRepository->find($id_sala);
$session = $request->getSession();
$session->set('tipo_cal','0');
if(!is_null($sala)){
$session = $request->getSession();
$session->set('id_sala', $sala->getId());
$empresa = $empresaRepository->find(1);
return $this->render('agenda/calendar.html.twig',['id_sala' => $sala->getId(), 'empresa' => $empresa, 'sala' => $sala]);
}
return $this->redirectToRoute('dashboard');
}
/**
* @Route("/seguros/dia", name="agenda_seguros_dia", methods={"GET","POST"})
*/
public function seguros_dia(AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, FormaPagoRepository $formaPagoRepository, SeguroPrivadoRepository $seguroPrivadoRepository): Response
{
$user = $this->security->getUser();
$seguros = $seguroPrivadoRepository->findBy(['estado' => 1, 'tipo' => 2]);
$empresa = $empresaRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType_seguros::class,$agenda);
$form->handleRequest($request);
//$seguro = $form->get('seguro')->getData();
$unidad = $form->get('unidad')->getData();
$fecha = $form->get('inicio')->getData();
$hasta = $form->get('hasta')->getData();
$paciente = $form->get('paciente')->getData();
$doctor = $form->get('doctor')->getData();
$datosPorSeguro = [];$datosPorSeguro2 = [];
$resumenSeguro = [];$resultados2 = [];
$session = $request->getSession();
$session->set('paciente',null);
$meses = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
$datosPorMes = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
$datosPorMes2 = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
if($form->isSubmitted()){
if($fecha!=null){
//$session = $request->getSession();
$session->set('fecha_busqueda', $fecha);
}
if($hasta!=null){
//$session = $request->getSession();
$session->set('fecha_hasta', $hasta);
}
if($fecha==null){
$fecha = new \DateTime("now");
$form->get('inicio')->setData($fecha);
$session->set('fecha_busqueda', $fecha);
}
if($hasta==null){
$hasta = new \DateTime("now");
$form->get('hasta')->setData($hasta);
$session->set('fecha_hasta', $hasta);
}
$resultados = $agendaRepository->findByEstadistico_Acum($unidad, date_format($fecha,'Y-m-d'))->getResult();
// Inicializamos un array con todos los meses en 0
$resultados2 = $agendaRepository->findByEstadistico_Acum2($unidad, date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'))->getResult();
//dd($resultados2);
// Procesamos los resultados y rellenamos los meses con los valores obtenidos
foreach ($resultados as $resultado) {
$seguro = $resultado['nombre_seguro'];
$anio = $resultado['anio'];
$mes = (int)$resultado['mes']; // Convertimos el mes a entero para usar como índice
$oda = $resultado['total_oda'];
$sub_total = $resultado['sub_total'];
// Si el seguro no está en el array, inicializamos con los meses en 0
if (!isset($datosPorSeguro[$seguro])) {
$datosPorSeguro[$seguro] = $meses;
$datosPorSeguro2[$seguro] = $meses;
}
// Asignamos el valor de oda al mes correspondiente
$datosPorSeguro[$seguro][$mes] = $oda;
$datosPorSeguro2[$seguro][$mes] = $sub_total;
$datosPorMes[$mes] += $oda;
$datosPorMes2[$mes] += $sub_total;
}
}else{
$fecha = $session->get('fecha_busqueda');
if($fecha==null){
$fecha = new \DateTime("now");
}
$form->get('inicio')->setData($fecha);
$hasta = $session->get('fecha_hasta');
if($hasta==null){
$hasta = new \DateTime("now");
}
$form->get('hasta')->setData($hasta);
}
foreach($seguros as $seguro){
$query = $agendaRepository->findByAdmisionadas_rpt(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$seguro,$paciente,$unidad,$doctor);
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
100
);
$tabs[$seguro->getId()] = $agendas;
}
$seguros = $seguroPrivadoRepository->findBy(['estado' => '1', 'tipo' => '2' ]);
if ($form->getClickedButton() === $form->get('Reporte_Admin')){
return $this->reporte_xls_seguros( $seguros, $agendaRepository, $fecha, $hasta, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 );
}
if ($form->getClickedButton() === $form->get('Reporte_Admin_2')){
return $this->reporte_xls_seguros_2( $seguros, $agendaRepository, $fecha, $hasta, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 );
}
//$estad = $agendaRepository->findByAdmisionadas_estad(date_format($fecha,'Y-m-d'),date_format($hasta,'Y-m-d'),$paciente,$unidad,$doctor)->getResult(); dd($estad);
return $this->render('historia_clinica/index_seguro_dia.html.twig', [ 'tabs' => $tabs, 'form' => $form->createView(), 'empresa' => $empresa, 'fecha' => $fecha, 'hasta' => $hasta, 'seguros' => $seguros, 'ordenVentaRepository' => $ordenVentaRepository, 'datosPorSeguro' => $datosPorSeguro, 'datosPorSeguro2' => $datosPorSeguro2, 'datosPorMes' => $datosPorMes, 'datosPorMes2' => $datosPorMes2, 'resultados2' => $resultados2 ]);
}
public function reporte_xls_seguros( $seguros, $agendaRepository, $fecha, $hasta, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 ){
$spreadsheet = new Spreadsheet();
// Eliminar la hoja por defecto que se crea automáticamente
$spreadsheet->removeSheetByIndex(0);
$cont = 0;
$arr_mes = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
$arr_letra = range('B', 'ZZ');
foreach($seguros as $seguro){
$i = 4;
$agendas = $agendaRepository->findByAdmisionadas_rpt(date_format($fecha,'Y-m-d'), date_format($hasta,'Y-m-d'), $seguro, $paciente, $unidad, $doctor);
$agendas = $agendas->getResult();
$sheet = new Worksheet($spreadsheet, $seguro->getNombre());
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle($seguro->getNombre());
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS '.$seguro->getNombre().' DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
/////////////////////////////////
$sheet->getStyle('A1:L3')->getFont()->setBold(true);
$sheet->setCellValue('A3', 'FECHA');
$sheet->setCellValue('B3', 'PACIENTE');
$sheet->setCellValue('C3', 'TIPO DE SERVICIO');
$sheet->setCellValue('D3', 'SEGURO');
$sheet->setCellValue('E3', 'DIAGNOSTICO');
$sheet->setCellValue('F3', 'NRO FACTURA');
$sheet->setCellValue('G3', 'FECHA FACTURA');
$sheet->setCellValue('H3', 'ODA');
$sheet->setCellValue('I3', 'RETENCION');
$sheet->setCellValue('J3', 'TOTAL PAGO');
$sheet->setCellValue('K3', 'FECHA PAGO');
$sheet->setCellValue('L3', 'VERIFICADO');
$total_oda = 0;
foreach ($agendas as $value) {
$pxs = $value['agenda']->getAgendaProcedimientos();
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m/Y'));
$sheet->setCellValue('B'.$i, $value['paciente']);
$txt_proc = $value['agenda']->getProcedimiento()->getNombre()."-> ";
foreach($pxs as $px){
$txt_proc.= $px->getProcedimiento()->getNombre()."-> ";
}
$sheet->setCellValue('C'.$i, $txt_proc);
//$sheet->setCellValue('C'.$i, $value['agenda']->getProcedimiento()->getNombre());
$sheet->setCellValue('D'.$i, $value['agenda']->getSeguro()->getNombre());
$dxs = [];$txt_dx = '';
$historia = $value['agenda']->getHistoriaClinica();
if($historia != null){
$dxs = $historia->getDiagnosticosHistoriaClinicas();
}
foreach($dxs as $dx){
$txt_dx .= $dx->getCie10()->getNombre().' ';
}
$sheet->setCellValue('E'.$i, $txt_dx);
$sheet->setCellValue('F'.$i, $value['agenda']->getFactura());
$sheet->setCellValue('G'.$i, $value['agenda']->getFechaFactura());
$oda = 0;
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
if(!is_null($orden)){
$total_oda += $orden->getOda();
$oda = $orden->getOda();
}
$sheet->setCellValue('H'.$i, $oda);
$retencion = $oda * 0.03;
$sheet->setCellValue('I'.$i, $retencion);
$tp = $oda - $retencion;
$sheet->setCellValue('J'.$i, $tp);
$sheet->setCellValue('K'.$i, $value['agenda']->getFechaPago());
$sheet->setCellValue('L'.$i, $value['agenda']->getVerificado());
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$i++;
}
$sheet->getColumnDimension('A')->setWidth(10);
$sheet->getColumnDimension('B')->setWidth(25);
$sheet->getColumnDimension('C')->setWidth(20);
$sheet->getColumnDimension('D')->setWidth(20);
$sheet->getColumnDimension('E')->setWidth(25);
$sheet->getColumnDimension('F')->setWidth(15);
$sheet->getColumnDimension('G')->setWidth(15);
$sheet->getColumnDimension('H')->setWidth(15);
$sheet->getColumnDimension('I')->setWidth(15);
$sheet->getColumnDimension('J')->setWidth(15);
$sheet->getColumnDimension('K')->setWidth(15);
$sheet->getColumnDimension('L')->setWidth(15);
/////////////////////////////////
}
$sheet = new Worksheet($spreadsheet, 'RESUMEN ODA');
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle('RESUMEN ODA');
$sheet->setCellValue('A1', 'RESUMEN ODA')->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', 'SEGURO');
$sheet->getColumnDimension('A')->setWidth(20);
$n = 0;
foreach( $arr_mes as $mes ){
$sheet->setCellValue($arr_letra[$n].'2', $mes);
$sheet->getColumnDimension($arr_letra[$n])->setWidth(15);
$n ++;
}
$z1 = 3;
foreach( $datosPorSeguro as $empresa => $valores ){
$sheet->setCellValue('A'.$z1, $empresa);
$n = 0;
foreach( $valores as $valor ){
$sheet->setCellValue($arr_letra[$n].$z1, $valor);
$sheet->getStyle($arr_letra[$n].$z1)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$n ++;
}
$z1 ++;
}
$sheet->setCellValue('A'.$z1, ' ');
$n = 0;
foreach( $datosPorMes as $dmes ){
$sheet->setCellValue($arr_letra[$n].$z1, $dmes);
$sheet->getStyle($arr_letra[$n].$z1)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$n ++;
}
/////////////////////////////////
$sheet = new Worksheet($spreadsheet, 'RESUMEN TOTAL');
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle('RESUMEN TOTAL');
$sheet->setCellValue('A1', 'RESUMEN TOTAL')->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', 'SEGURO');
$sheet->getColumnDimension('A')->setWidth(20);
$n = 0;
foreach( $arr_mes as $mes ){
$sheet->setCellValue($arr_letra[$n].'2', $mes);
$sheet->getColumnDimension($arr_letra[$n])->setWidth(15);
$n ++;
}
$z1 = 3;
foreach( $datosPorSeguro2 as $empresa => $valores ){
$sheet->setCellValue('A'.$z1, $empresa);
$n = 0;
foreach( $valores as $valor ){
$sheet->setCellValue($arr_letra[$n].$z1, $valor);
$sheet->getStyle($arr_letra[$n].$z1)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$n ++;
}
$z1 ++;
}
$sheet->setCellValue('A'.$z1, ' ');
$n = 0;
foreach( $datosPorMes2 as $dmes ){
$sheet->setCellValue($arr_letra[$n].$z1, $dmes);
$sheet->getStyle($arr_letra[$n].$z1)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$n ++;
}
/////////////////////////////////
/////////////////////////////////
$titulox = 'RESUMEN SEGUROS DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet = new Worksheet($spreadsheet, 'RESUMEN SEGUROS');
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle('RESUMEN TOTAL');
$sheet->setCellValue('A1', $titulox)->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', 'SEGURO');
$sheet->getColumnDimension('A')->setWidth(20);
$n = 0;
$sheet->setCellValue('B2', 'ODA');
$sheet->getColumnDimension('B')->setWidth(15);
$sheet->setCellValue('C2', 'TOTAL');
$sheet->getColumnDimension('C')->setWidth(15);
$n ++;
$z1 = 3;
foreach( $resultados2 as $resultado ){
$sheet->setCellValue('A'.$z1, $resultado['nombre_seguro']);
$sheet->setCellValue('B'.$z1, $resultado['total_oda']);
$sheet->setCellValue('C'.$z1, $resultado['sub_total']);
$z1 ++;
}
$n = 0;
/////////////////////////////////
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA_'.date('Y-m-d').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
public function reporte_xls_seguros_2( $seguros, $agendaRepository, $fecha, $hasta, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 ){
$spreadsheet = new Spreadsheet();
// Eliminar la hoja por defecto que se crea automáticamente
$spreadsheet->removeSheetByIndex(0);
$cont = 0;
$arr_mes = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
$arr_letra = range('B', 'ZZ');
$i = 4;
$agendas = $agendaRepository->findByAdmisionadas_rpt_part(date_format($fecha,'Y-m-d'), date_format($hasta,'Y-m-d'), null, $paciente, $unidad, $doctor);
$agendas = $agendas->getResult();
$sheet = new Worksheet($spreadsheet, 'REPORTE');
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle('REPORTE');
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS DESDE:'.date_format($fecha,'Y-m-d').' HASTA:'.date_format($hasta,'Y-m-d');
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
/////////////////////////////////
$sheet->getStyle('A1:L3')->getFont()->setBold(true);
$sheet->setCellValue('A3', 'FECHA');
$sheet->setCellValue('B3', 'PACIENTE');
$sheet->setCellValue('C3', 'TIPO DE SERVICIO');
$sheet->setCellValue('D3', 'SEGURO');
$sheet->setCellValue('E3', 'DIAGNOSTICO');
$sheet->setCellValue('F3', 'ODA');
$sheet->setCellValue('G3', 'RETENCION');
$sheet->setCellValue('H3', 'TOTAL PAGO');
//$sheet->setCellValue('I3', 'TOTAL FACTURA');
//dd($resultados2);
$total_oda = 0;$total_ret = 0;$total_acum = 0;$total_factura = 0;
foreach ($agendas as $value) {
$pxs = $value['agenda']->getAgendaProcedimientos();
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m/Y'));
$sheet->setCellValue('B'.$i, $value['paciente']);
$txt_proc = $value['agenda']->getProcedimiento()->getNombre()."-> ";
foreach($pxs as $px){
$txt_proc.= $px->getProcedimiento()->getNombre()."-> ";
}
$sheet->setCellValue('C'.$i, $txt_proc);
$sheet->setCellValue('D'.$i, $value['agenda']->getSeguro()->getNombre());
$txt_color = $value['agenda']->getSeguro()->getColor();
$txt_color = substr($txt_color,1);
$sheet->getStyle('D'.$i)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF'.$txt_color);
$dxs = [];$txt_dx = '';
$historia = $value['agenda']->getHistoriaClinica();
if($historia != null){
$dxs = $historia->getDiagnosticosHistoriaClinicas();
}
foreach($dxs as $dx){
$txt_dx .= $dx->getCie10()->getNombre().' ';
}
$sheet->setCellValue('E'.$i, $txt_dx);
$oda = 0;$factura = 0;
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
if(!is_null($orden)){
$total_oda += $orden->getOda();
$oda = $orden->getOda();
$factura = $orden->getSubtotal();
$total_factura += $factura;
}
$sheet->setCellValue('F'.$i, $oda);
$retencion = $oda * 0.03;
$total_ret += $retencion;
$sheet->setCellValue('G'.$i, $retencion);
$tp = $oda - $retencion;
$total_acum += $tp;
$sheet->setCellValue('H'.$i, $tp);
//$sheet->setCellValue('I'.$i, $factura);
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
//$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$i++;
$sheet->setCellValue('E'.$i, 'TOTAL');
$sheet->setCellValue('F'.$i, $total_oda);
$sheet->setCellValue('G'.$i, $total_ret);
$sheet->setCellValue('H'.$i, $total_acum);
//$sheet->setCellValue('I'.$i, $total_factura);
/////////////////////////////////
}
$i++;
$sheet->getStyle('A'.$i.':B'.$i)->getFont()->setBold(true);
$sheet->setCellValue('A'.$i, 'SEGURO');
$sheet->setCellValue('B'.$i, 'TOTAL ODA');
$i++;
$acum_oda = 0;
$acum_total = 0;
foreach( $resultados2 as $resultado ){
if( $resultado['nombre_seguro'] != ' PARTICULAR GVITA'){
$acum_oda += $resultado['total_oda'];
$acum_total += $resultado['sub_total'];
$sheet->setCellValue('A'.$i, $resultado['nombre_seguro'] );
$sheet->setCellValue('B'.$i, $resultado['total_oda']);
$i++;
}
}
$sheet->getStyle('A'.$i)->getFont()->setBold(true);
$sheet->setCellValue('A'.$i, 'TOTAL' );
$sheet->setCellValue('B'.$i, $acum_oda);
/*$sheet->getColumnDimension('A')->setWidth(20);
$sheet->getColumnDimension('B')->setWidth(25);
$sheet->getColumnDimension('C')->setWidth(20);
$sheet->getColumnDimension('D')->setWidth(20);
$sheet->getColumnDimension('E')->setWidth(25);
$sheet->getColumnDimension('F')->setWidth(15);
$sheet->getColumnDimension('G')->setWidth(15);
$sheet->getColumnDimension('H')->setWidth(15);
$sheet->getColumnDimension('I')->setWidth(15);
$sheet->getColumnDimension('J')->setWidth(15);
$sheet->getColumnDimension('K')->setWidth(15);
$sheet->getColumnDimension('L')->setWidth(15);*/
/////////////////////////////////
$sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$sheet->getPageSetup()->setFitToWidth(1);
$sheet->getPageSetup()->setFitToHeight(1);
// Definir un área de impresión automática basada en los datos
$highestColumn = $sheet->getHighestColumn(); // Última columna con datos
$highestRow = $sheet->getHighestRow(); // Última fila con datos
$printArea = 'A1:' . $highestColumn . $highestRow;
$sheet->getPageSetup()->setPrintArea($printArea);
// Ajustar tamaño de columnas automáticamente
foreach (range('A', $highestColumn) as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
// Configurar márgenes mínimos para maximizar el espacio
$sheet->getPageMargins()->setTop(0.2);
$sheet->getPageMargins()->setRight(0.2);
$sheet->getPageMargins()->setLeft(0.2);
$sheet->getPageMargins()->setBottom(0.2);
/////////////////////////////////
/////////////////////////////////
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA_'.date('Y-m-d').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/confirma/paciente/edit/{id}", name="agenda_confirma_paciente", methods={"GET"})
*/
public function confirma_paciente(Request $request, Agenda $agenda): Response
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$logagenda = new LogAgenda();
$agenda->setConfirma(1);
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$inicio = $agenda->getInicio();
$fin = $agenda->getFin();
$seguro = $agenda->getSeguro();
$especialidad = $agenda->getEspecialidad();
$doctor = $agenda->getDoctor();
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion("CONFIRMA PACIENTE");
$logagenda->setAgenda($agenda);
$logagenda->setEstadoAgenda($agenda->getEstadoAgenda());
$logagenda->setSeguro($seguro);
$logagenda->setEspecialidad($especialidad);
$logagenda->setDoctor($doctor);
$logagenda->setDescripcion("CONFIRMA");
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setSala($agenda->getSala());
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($logagenda);
$entityManager->flush();
return $this->json(['estado' => 'ok']);
}
/**
* @Route("/id/edit/update/desplazar", name="agenda_update_desplazar", methods={"POST"})
*/
public function update_desplazar(Request $request, AgendaRepository $agendaRepository): JsonResponse
{
$ip = $request->getClientIp();
$user = $this->security->getUser();
$data = json_decode($request->getContent(), true);
$agenda = $agendaRepository->find($data['id']);
if (!$agenda) {
return new JsonResponse(['error' => 'Evento no encontrado'], 404);
}
$inicio = new \DateTime($data['start']);
$fin = new \DateTime($data['end']);
$agenda->setInicio($inicio);
if ($data['end']) {
$agenda->setFin($fin);
}
//dd($agenda);
$observacion = "DESPLAZA AGENDA";
$descripcion = "DESPLAZA AGENDA";
$logagenda = new LogAgenda();
$logagenda->setSala($agenda->getsala());
$logagenda->setIpCrea($ip);
$logagenda->setIpModifica($ip);
$logagenda->setEstadoAgenda($agenda->getEstadoAgenda());
$logagenda->setUserCrea($user->getId());
$logagenda->setUserModifica($user->getId());
$logagenda->setInicio($inicio);
$logagenda->setFin($fin);
$logagenda->setObservacion($observacion);
$logagenda->setAgenda($agenda);
$logagenda->setSeguro($agenda->getSeguro());
$logagenda->setEspecialidad($agenda->getEspecialidad());
$logagenda->setDoctor($agenda->getDoctor());
$logagenda->setDescripcion($descripcion);
$em = $this->getDoctrine()->getManager();
$em->persist($agenda);
$em->persist($logagenda);
$em->flush();
return new JsonResponse(['success' => true]);
}
/**
* @Route("/seguros/dia/corte", name="agenda_seguros_dia_corte", methods={"GET","POST"})
*/
public function seguros_dia_corte(AgendaRepository $agendaRepository, PaginatorInterface $paginator, Request $request, EmpresaRepository $empresaRepository, OrdenVentaRepository $ordenVentaRepository, FormaPagoRepository $formaPagoRepository, SeguroPrivadoRepository $seguroPrivadoRepository): Response
{
$user = $this->security->getUser();
$seguros = $seguroPrivadoRepository->findBy(['estado' => 1, 'tipo' => 2]);
$empresa = $empresaRepository->find(1);
date_default_timezone_set("America/Guayaquil");
$agenda = new Agenda();
$form = $this->createForm(BuscaPreparacionType_segurosCorte::class,$agenda);
$form->handleRequest($request);
$unidad = $form->get('unidad')->getData();
$corte = $form->get('corte')->getData();
$doctor = $form->get('doctor')->getData();
$datosPorSeguro = [];$datosPorSeguro2 = [];
$resumenSeguro = [];$resultados2 = [];
$session = $request->getSession();
$session->set('paciente',null);
$meses = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
$datosPorMes = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
$datosPorMes2 = [
'1' => 0, '2' => 0, '3' => 0, '4' => 0,
'5' => 0, '6' => 0, '7' => 0, '8' => 0,
'9' => 0, '10' => 0, '11' => 0, '12' => 0
];
if($corte==null){
$fecha = new \DateTime("now");
$corte = $fecha->format('mY');
$form->get('corte')->setData($corte);
}
if($unidad == null){
$unidad = 1;
}
if($form->isSubmitted()){
}else{
}
$resultados = $agendaRepository->findByEstadistico_Acum_Corte($unidad, $corte)->getResult();
//dd($resultados, $corte);
// Inicializamos un array con todos los meses en 0
$resultados2 = $agendaRepository->findByEstadistico_Acum2_Corte($unidad, $corte)->getResult();
//dd($resultados2);
// Procesamos los resultados y rellenamos los meses con los valores obtenidos
foreach ($resultados as $resultado) {
$seguro = $resultado['nombre_seguro'];
$anio = $resultado['anio'];
$mes = (int)$resultado['mes']; // Convertimos el mes a entero para usar como índice
$oda = $resultado['total_oda'];
$sub_total = $resultado['sub_total'];
// Si el seguro no está en el array, inicializamos con los meses en 0
if (!isset($datosPorSeguro[$seguro])) {
$datosPorSeguro[$seguro] = $meses;
$datosPorSeguro2[$seguro] = $meses;
}
// Asignamos el valor de oda al mes correspondiente
$datosPorSeguro[$seguro][$mes] = $oda;
$datosPorSeguro2[$seguro][$mes] = $sub_total;
$datosPorMes[$mes] += $oda;
$datosPorMes2[$mes] += $sub_total;
}
foreach($seguros as $seguro){
$query = $agendaRepository->findByAdmisionadas_rpt_Corte($corte , $seguro, null, $unidad, $doctor);
$agendas = $paginator->paginate(
$query,
$request->query->getInt('page',1),
100
);
$tabs[$seguro->getId()] = $agendas;
}
$seguros = $seguroPrivadoRepository->findBy(['estado' => '1', 'tipo' => '2' ]);
//if ($form->getClickedButton() === $form->get('Reporte_Admin')){
//return $this->reporte_xls_seguros( $seguros, $agendaRepository, $fecha, $hasta, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 );
//}
if ($form->getClickedButton() === $form->get('Reporte_Admin')){
return $this->reporte_xls_seguros_corte( $seguros, $agendaRepository, $corte, $ordenVentaRepository, $empresa, null, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 );
}
return $this->render('historia_clinica/index_seguro_dia_corte.html.twig', [ 'tabs' => $tabs, 'form' => $form->createView(), 'empresa' => $empresa, 'corte' => $corte, 'seguros' => $seguros, 'ordenVentaRepository' => $ordenVentaRepository, 'datosPorSeguro' => $datosPorSeguro, 'datosPorSeguro2' => $datosPorSeguro2, 'datosPorMes' => $datosPorMes, 'datosPorMes2' => $datosPorMes2, 'resultados2' => $resultados2 ]);
}
public function reporte_xls_seguros_corte( $seguros, $agendaRepository, $corte, $ordenVentaRepository, $empresa, $paciente, $unidad, $doctor, $datosPorSeguro, $datosPorSeguro2, $datosPorMes, $datosPorMes2, $resultados2 ){
$spreadsheet = new Spreadsheet();
// Eliminar la hoja por defecto que se crea automáticamente
$spreadsheet->removeSheetByIndex(0);
$cont = 0;
$arr_mes = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
$arr_letra = range('B', 'ZZ');
$i = 4;
$agendas = $agendaRepository->findByAdmisionadas_rpt_corte2($corte, null, $paciente, $unidad, $doctor);
//dd($corte, null, $paciente, $unidad, $doctor, $agendas);
$agendas = $agendas->getResult();
$sheet = new Worksheet($spreadsheet, 'REPORTE');
// Crear la segunda pestaña (Hoja 2)
$spreadsheet->addSheet($sheet);
$sheet->setTitle('REPORTE');
$titulo = 'ATENCION DE CONSULTAS Y PROCEDIMIENTOS PERIODO: '.$corte;
$sheet->setCellValue('A1', $empresa->getNombreCorto())->mergeCells('A1:J1');
$sheet->getStyle('A1:M2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->setCellValue('A2', $titulo )->mergeCells('A2:J2');
/////////////////////////////////
$sheet->getStyle('A1:L3')->getFont()->setBold(true);
$sheet->setCellValue('A3', 'FECHA');
$sheet->setCellValue('B3', 'PACIENTE');
$sheet->setCellValue('C3', 'TIPO DE SERVICIO');
$sheet->setCellValue('D3', 'SEGURO');
$sheet->setCellValue('E3', 'DIAGNOSTICO');
$sheet->setCellValue('F3', 'ODA');
$sheet->setCellValue('G3', 'RETENCION');
$sheet->setCellValue('H3', 'TOTAL PAGO');
//$sheet->setCellValue('I3', 'TOTAL FACTURA');
//dd($resultados2);
$total_oda = 0;$total_ret = 0;$total_acum = 0;$total_factura = 0;
foreach ($agendas as $value) {
$pxs = $value['agenda']->getAgendaProcedimientos();
$sheet->setCellValue('A'.$i, date_format($value['inicio'], 'd/m/Y'));
$sheet->setCellValue('B'.$i, $value['paciente']);
$txt_proc = $value['agenda']->getProcedimiento()->getNombre()."\n";
foreach($pxs as $px){
$txt_proc.= $px->getProcedimiento()->getNombre()."\n";
}
$sheet->setCellValue('C'.$i, $txt_proc);
$sheet->setCellValue('D'.$i, $value['agenda']->getSeguro()->getNombre());
$txt_color = $value['agenda']->getSeguro()->getColor();
$txt_color = substr($txt_color,1);
$sheet->getStyle('D'.$i)->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FF'.$txt_color);
$dxs = [];$txt_dx = '';
$historia = $value['agenda']->getHistoriaClinica();
if($historia != null){
$dxs = $historia->getDiagnosticosHistoriaClinicas();
}
foreach($dxs as $dx){
$txt_dx .= $dx->getCie10()->getNombre().' ';
}
$sheet->setCellValue('E'.$i, $txt_dx);
$oda = 0;$factura = 0;
$orden = $ordenVentaRepository->findOneBy(['tipo' => 'AGENDA', 'estado' => '1', 'id_agenda' => $value['agenda']->getId()]);
if(!is_null($orden)){
$total_oda += $orden->getOda();
$oda = $orden->getOda();
$factura = $orden->getSubtotal();
$total_factura += $factura;
}
$sheet->setCellValue('F'.$i, $oda);
$retencion = $oda * 0.03;
$total_ret += $retencion;
$sheet->setCellValue('G'.$i, $retencion);
$tp = $oda - $retencion;
$total_acum += $tp;
$sheet->setCellValue('H'.$i, $tp);
//$sheet->setCellValue('I'.$i, $factura);
$sheet->getStyle('H'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
//$sheet->getStyle('I'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$sheet->getStyle('J'.$i)->getNumberFormat()->setFormatCode('### ### ### ##0.00');
$i++;
$sheet->setCellValue('E'.$i, 'TOTAL');
$sheet->setCellValue('F'.$i, $total_oda);
$sheet->setCellValue('G'.$i, $total_ret);
$sheet->setCellValue('H'.$i, $total_acum);
//$sheet->setCellValue('I'.$i, $total_factura);
/////////////////////////////////
}
$i++;
$sheet->getStyle('A'.$i.':B'.$i)->getFont()->setBold(true);
$sheet->setCellValue('A'.$i, 'SEGURO');
$sheet->setCellValue('B'.$i, 'TOTAL ODA');
$i++;
$acum_oda = 0;
$acum_total = 0;
foreach( $resultados2 as $resultado ){
if( $resultado['nombre_seguro'] != ' PARTICULAR GVITA'){
$acum_oda += $resultado['total_oda'];
$acum_total += $resultado['sub_total'];
$sheet->setCellValue('A'.$i, $resultado['nombre_seguro'] );
$sheet->setCellValue('B'.$i, $resultado['total_oda']);
$i++;
}
}
$sheet->getStyle('A'.$i)->getFont()->setBold(true);
$sheet->setCellValue('A'.$i, 'TOTAL' );
$sheet->setCellValue('B'.$i, $acum_oda);
/*$sheet->getColumnDimension('A')->setWidth(20);
$sheet->getColumnDimension('B')->setWidth(25);
$sheet->getColumnDimension('C')->setWidth(20);
$sheet->getColumnDimension('D')->setWidth(20);
$sheet->getColumnDimension('E')->setWidth(25);
$sheet->getColumnDimension('F')->setWidth(15);
$sheet->getColumnDimension('G')->setWidth(15);
$sheet->getColumnDimension('H')->setWidth(15);
$sheet->getColumnDimension('I')->setWidth(15);
$sheet->getColumnDimension('J')->setWidth(15);
$sheet->getColumnDimension('K')->setWidth(15);
$sheet->getColumnDimension('L')->setWidth(15);*/
/////////////////////////////////
$sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
$sheet->getPageSetup()->setFitToWidth(1);
$sheet->getPageSetup()->setFitToHeight(1);
// Definir un área de impresión automática basada en los datos
$highestColumn = $sheet->getHighestColumn(); // Última columna con datos
$highestRow = $sheet->getHighestRow(); // Última fila con datos
$printArea = 'A1:' . $highestColumn . $highestRow;
$sheet->getPageSetup()->setPrintArea($printArea);
// Ajustar tamaño de columnas automáticamente
foreach (range('A', $highestColumn) as $col) {
$sheet->getColumnDimension($col)->setAutoSize(true);
}
// Configurar márgenes mínimos para maximizar el espacio
$sheet->getPageMargins()->setTop(0.2);
$sheet->getPageMargins()->setRight(0.2);
$sheet->getPageMargins()->setLeft(0.2);
$sheet->getPageMargins()->setBottom(0.2);
/////////////////////////////////
/////////////////////////////////
// Create your Office 2007 Excel (XLSX Format)
$writer = new Xlsx($spreadsheet);
// Create a Temporary file in the system
$fileName = 'AGENDA_DEL_DIA_'.date('Y-m-d').'.xlsx';
$temp_file = tempnam(sys_get_temp_dir(), $fileName);
// Create the excel file in the tmp directory of the system
$writer->save($temp_file);
// Return the excel file as an attachment
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
/**
* @Route("/calendar/buscar", name="agenda_buscar", methods={"POST"})
*/
public function buscarCalendarioAgenda(Request $request, AgendaRepository $repo): JsonResponse
{
$q = $request->request->get('q');
$resultados = $repo->buscarAgenda($q);
return $this->json($resultados);
}
}