<?php
namespace Noahtech\Sistemas\InterjamaBundle\Controller;
use Noahtech\Sistemas\InterjamaBundle\Utils\Codes;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Noahtech\Sistemas\InterjamaBundle\Controller\BaseController;
use Noahtech\Sistemas\InterjamaBundle\Handler\McPrecargaHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McPrecargaArchivoHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McClienteHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McVehiculoHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McChoferHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McTiposTramiteHandler;
use Noahtech\Sistemas\InterjamaBundle\Handler\McCajaHandler;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Noahtech\Sistemas\InterjamaBundle\Utils\Constants;
use Symfony\Component\HttpKernel\Exception\HttpException;
class PrecargaController extends BaseController {
private function validarAdmin () {
$usuario = $this->getUser();
if ($usuario) {
$admin = false;
foreach ($usuario->getRoles() as $rol) {
if ($rol == 'ROLE_ADMIN'){
$admin = true;
}
}
if (!$admin){
throw new AccessDeniedException("No tiene permiso para acceder a esta pagina.");
}
} else {
throw new AccessDeniedException("No tiene permiso para acceder a esta pagina.");
}
}
private function validarChofer ($tipo, $numero, $id=null) {
$chofer = $this->get(McChoferHandler::class)->getChoferDuplicate($tipo, $numero, $id);
if (!is_null($chofer)) {
throw new HttpException(409, "Ya existe un chofer con el tipo y número de documento ingresados.");
}
}
/**
* @Route("/admin/precargas/tramites/finalizados", name="admin_precargas_tramites_finalizados_listado")
* @return type
*/
public function precargaFinalizadasListadoAction() {
$this->validarAdmin();
$usuario = $this->getUser();
$this->setTitle("Listado de trámites finalizados | InterJama");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Listado de trámites finalizados", true);
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = null;
$this->data['clientes'] = $clientes;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/finalizadas/listado.html.twig', $this->data
);
}
/**
* consulta de tramite finalizado
*
* @Route("/admin/ajax/tramites/finalizados/search", name="admin_ajax_tramites_finalizados_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchPrecargasFinalizadasAction(Request $request) {
$this->validarAdmin();
$searchParam = $request->request->all();
$usuario = $this->getUser();
$currentPage = $request->query->get('page');
$sortField = $request->query->get('sort');
$sortDirection = $request->query->get('direction');
$currentPage = null == $currentPage ? 1 : $currentPage;
$offset = ($currentPage - 1) * 100;
$limit = 100;
try {
/** @var McPrecargaHandler $handler */
$handler = $this->get(McPrecargaHandler::class);
$lp = $handler->searchPrecargasFinalizadas($offset, $limit, $sortField, $sortDirection, $searchParam);
$lp->setCurrentPage($currentPage);
$lp->setPageSize(100);
$this->response->setData($lp);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precargas", name="admin_precargas_listado")
* @return type
*/
public function precargaListadoAction() {
$this->validarAdmin();
$usuario = $this->getUser();
$this->setTitle("Bandeja de entrada | InterJama");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Bandeja de entrada", true);
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = null;
$this->data['clientes'] = $clientes;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/listado.html.twig', $this->data
);
}
/**
* consulta de precarga
*
* @Route("/admin/ajax/precargas/search", name="admin_ajax_precargas_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchAction(Request $request) {
$this->validarAdmin();
$searchParam = $request->request->all();
$usuario = $this->getUser();
$currentPage = $request->query->get('page');
$sortField = $request->query->get('sort');
$sortDirection = $request->query->get('direction');
$currentPage = null == $currentPage ? 1 : $currentPage;
$offset = ($currentPage - 1) * 100;
$limit = 100;
try {
/** @var McPrecargaHandler $handler */
$handler = $this->get(McPrecargaHandler::class);
$lp = $handler->search($offset, $limit, $sortField, $sortDirection, $searchParam);
$lp->setCurrentPage($currentPage);
$lp->setPageSize(100);
$this->response->setData($lp);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precarga/nueva", name="admin_precarga_nueva")
* @return type
*/
public function precargaNuevoAction() {
$this->validarAdmin();
$this->setTitle("Nuevo ingreso");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Bandeja de entrada", false, "admin_precargas_listado");
$this->addBreadCrumb("Nueva ingreso", true);
$this->data['data'] = null;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/nueva.html.twig', $this->data
);
}
/**
* consulta de un vehículo por dominio principal
*
* @Route("/admin/ajax/precargas/vehiculo/dominio/{dominio}/exists", name="ajax_admin_precargas_vehiculo_dominio_exists", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function dominioExistsAction($dominio) {
$this->validarAdmin();
try {
$handler = $this->get(McPrecargaHandler::class);
$vehiculo = $handler->getVehiculoByDominio($dominio);
$this->response->setData($vehiculo);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* Guarda una precarga
*
* @Route("/admin/ajax/precargas", name="admin_ajax_precargas_save", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function postPrecargaSaveAction(Request $request) {
$this->validarAdmin();
$archivos = (isset($_FILES)) ? $_FILES : null;
try {
$handler = $this->get(McPrecargaHandler::class);
$usuario = $this->getUser();
$precarga = $handler->getPrecargaFromRequest($request, $usuario);
$result = $handler->save($precarga, $archivos, $request);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precargas/{id}", name="admin_precargas_modificacion")
* @return type
*/
public function precargaModificacionAction($id) {
$this->validarAdmin();
$this->setTitle("Modificar ingreso");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Bandeja de entrada", false, "admin_precargas_listado");
$this->addBreadCrumb("Modificar ingreso", true);
$this->data['data'] = $id;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/modificacion.html.twig', $this->data
);
}
/**
* Devuelve una precarga
*
* @Route("/admin/ajax/precargas/{id}", name="admin_ajax_precarga_get_by_id", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function getPrecargaByIdAction($id) {
$this->validarAdmin();
try {
$handler = $this->get(McPrecargaHandler::class);
$precarga = $handler->getById($id);
$this->response->setData($precarga);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* Modifica una precarga
*
* @Route("/admin/ajax/precargas/{id}", name="admin_ajax_precarga_update", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function putUpdateAction(Request $request, $id) {
$this->validarAdmin();
$archivos = (isset($_FILES)) ? $_FILES : null;
try {
$handler = $this->get(McPrecargaHandler::class);
$usuario = $this->getUser();
$precarga = $handler->getPrecargaFromRequest($request, $usuario, $id);
$result = $handler->update($precarga, $archivos, $request, $id);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precargas/{id}/archivos", name="admin_precargas_by_id_archivos")
* @return type
*/
public function precargaArchivosListadoAction($id) {
$this->validarAdmin();
$usuario = $this->getUser();
$this->setTitle("Archivos adjuntos");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Bandeja de entrada", false, "admin_precargas_listado");
$this->addBreadCrumb("Archivos adjuntos", true);
$precargaArchivos = $this->get(McPrecargaArchivoHandler::class)->findAllByPrecarga($id);
$this->data['data'] = $id;
$this->data['archivos'] = $precargaArchivos;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/archivos.html.twig', $this->data
);
}
/**
* descarga de archivos de una precarga
*
* @Route("/admin/ajax/precargas/{id}/download/archivos", name="admin_ajax_precarga_get_by_id_descarga")
*/
public function downloadFileByPrecargaAction($id) {
try {
$this->validarAdmin();
$handler = $this->get(McPrecargaArchivoHandler::class);
return $handler->downloadFilesByPrecarga($id);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* Guarda un chofer
*
* @Route("/admin/ajax/chofer", name="admin_chofer_save", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function postChoferSaveAction(Request $request) {
$this->validarAdmin();
$this->validarChofer($request->request->get('tipo'), $request->request->get('numero'));
try {
$handler = $this->get(McChoferHandler::class);
$chofer = $handler->getChoferFromRequest($request, null, null);
$result = $handler->save($chofer);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precargas/tramites/finalizados/deudas", name="admin_precargas_tramites_finalizados_deudas_listado")
* @return type
*/
public function precargaFinalizadasDeudasListadoAction() {
$this->validarAdmin();
$usuario = $this->getUser();
$this->setTitle("Listado de Empresas con deudas | InterJama");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Listado de Empresas con deudas", true);
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = null;
$this->data['clientes'] = $clientes;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/finalizadas/deudas.html.twig', $this->data
);
}
/**
* consulta de tramite finalizado
*
* @Route("/admin/ajax/tramites/finalizados/deudas/search", name="admin_ajax_tramites_finalizados_deudas_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchPrecargasFinalizadasDeudasAction(Request $request) {
$this->validarAdmin();
$searchParam = $request->request->all();
$usuario = $this->getUser();
$currentPage = $request->query->get('page');
$sortField = $request->query->get('sort');
$sortDirection = $request->query->get('direction');
$currentPage = null == $currentPage ? 1 : $currentPage;
$offset = ($currentPage - 1) * 100;
$limit = 100;
try {
/** @var McPrecargaHandler $handler */
$handler = $this->get(McPrecargaHandler::class);
$lp = $handler->searchPrecargasFinalizadasConDeudas($offset, $limit, $sortField, $sortDirection, $searchParam);
$lp->setCurrentPage($currentPage);
$lp->setPageSize(100);
$this->response->setData($lp);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* @Route("/admin/precargas/tramites/finalizados/{id}", name="admin_precargas_tramite_finalizada_update")
* @return type
*/
public function precargaUpdateAtencionAction($id) {
$this->validarAdmin();
$this->setTitle("Editar Trámite");
$this->addBreadCrumb("Inicio - Atención", false, "admin_home");
$this->addBreadCrumb("Listado de trámites finalizados", false, "admin_precargas_tramites_finalizados_listado");
$this->addBreadCrumb("Editar Trámite", true);
$tiposTramite = $this->get(McTiposTramiteHandler::class)->getTiposTramite();
$caja = $this->get(McCajaHandler::class)->getCajaAbierta('operador');
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = $id;
$this->data['clientes'] = $clientes;
$this->data['tiposTramite'] = $tiposTramite;
$this->data['caja'] = $caja;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/finalizadas/update.html.twig', $this->data
);
}
/**
* Modifica una atencion de precarga
*
* @Route("/admin/ajax/precargas/{id}/modificacion/atencion", name="admin_ajax_precarga_modificacion_atencion_update", methods={"PUT"}, condition="request.isXmlHttpRequest()")
*/
public function editAtencionPrecargaAction(Request $request, $id) {
$this->validarAdmin();
$handler = $this->get(McPrecargaHandler::class);
$usuario = $this->getUser();
$precarga = $handler->getAtencionPrecargaFromRequest($request,$id, $usuario);
$result = $handler->updateAtencion($precarga, $id);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* Devuelve una precarga finalizada
*
* @Route("/admin/ajax/precargas/atencion/{id}", name="admin_ajax_precarga_atencion_get_by_id", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function getAtencionPrecargaByIdAction($id) {
$this->validarAdmin();
try {
$handler = $this->get(McPrecargaHandler::class);
$precarga = $handler->getPrecargaAtencionById($id);
$this->response->setData($precarga);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
*
* Descarga manifiesto de carga
*
* @Route("/admin/ajax/precargas/{precargaId}/descarga/manifiesto", name="admin_ajax_precargas_manifiesto_descarga")
*
*/
public function descargaManifiestoPdfAction($precargaId) {
try {
$this->validarAdmin();
return $this->get(McPrecargaHandler::class)->descargaManifiestoPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga Hoja de ruta
*
* @Route("/admin/ajax/precargas/{precargaId}/descarga/hoja_ruta", name="admin_ajax_precargas_hoja_ruta_descarga")
*
*/
public function descargaHojaRutaPdfAction($precargaId) {
try {
$this->validarAdmin();
return $this->get(McPrecargaHandler::class)->descargaHojaRutaPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga MCDTA
*
* @Route("/admin/ajax/precargas/{precargaId}/descarga/mcdta", name="admin_ajax_precargas_mcdta_descarga")
*
*/
public function descargaMcdtaPdfAction($precargaId) {
try {
$this->validarAdmin();
return $this->get(McPrecargaHandler::class)->descargaMcdtaPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga recibo de atención de precarga
*
* @Route("/admin/ajax/precargas/{precargaId}/descarga/recibo", name="admin_ajax_precarga_recibo_descarga")
*
*/
public function descargaReciboAction($precargaId) {
try {
$this->validarAdmin();
return $this->get(McPrecargaHandler::class)->descargaReciboPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga factura de Afip de atención de precarga
*
* @Route("/atencion/ajax/precargas/afip/{precargaId}/tipo/{tipoFactura}/descarga", name="atencion_ajax_precarga_factura_descarga")
*
*/
public function descargaFacturaAfipAction($precargaId, $tipoFactura) {
try {
$this->validarAtencion();
return $this->get(McPrecargaHandler::class)->descargaFacturaAfipPdf($precargaId, $tipoFactura);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* descarga del formulario SENASA
*
* @Route("/admin/ajax/precargas/atencion/{id}/formulario/senasa", name="admin_ajax_precarga_atencion_formulario_senasa")
*/
public function downloadSenasaAction(Request $request, $id) {
$request_body = file_get_contents('php://input');
$data = json_decode($request_body, true);
try {
$this->validarAdmin();
$handler = $this->get(McPrecargaHandler::class);
return $handler->downloadSenasa($data, $id);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* @Route("/admin/precargas/tramites/finalizados/deudas/cliente/{clienteId}", name="admin_precargas_tramites_finalizados_deudas_by_cliente_listado")
* @return type
*/
public function precargaFinalizadasDeudasByClienteListadoAction($clienteId) {
$this->validarAdmin();
$usuario = $this->getUser();
$this->setTitle("Listado de deudas del Cliente | InterJama");
$this->addBreadCrumb("Inicio - Admin", false, "admin_home");
$this->addBreadCrumb("Listado de Empresas con deudas", false, "admin_precargas_tramites_finalizados_deudas_listado");
$this->addBreadCrumb("Listado de Deudas", true);
$cliente = $this->get(McClienteHandler::class)->getById($clienteId);
$this->data['data'] = null;
$this->data['cliente'] = $cliente;
return $this->render(
'@NoahtechSistemasInterjama/admin/precargas/finalizadas/clientes/deudas.html.twig', $this->data
);
}
/**
* consulta de tramite con deudas por cliente
*
* @Route("/admin/ajax/tramites/finalizados/deudas/cliente/{clienteId}/search", name="admin_ajax_tramites_finalizados_deudas_by_cliente_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchPrecargasFinalizadasDeudasByClienteAction(Request $request, $clienteId) {
$this->validarAdmin();
$searchParam = $request->request->all();
$usuario = $this->getUser();
$currentPage = $request->query->get('page');
$sortField = $request->query->get('sort');
$sortDirection = $request->query->get('direction');
$currentPage = null == $currentPage ? 1 : $currentPage;
$offset = ($currentPage - 1) * 100;
$limit = 100;
try {
/** @var McPrecargaHandler $handler */
$handler = $this->get(McPrecargaHandler::class);
$lp = $handler->searchPrecargasFinalizadasConDeudasByCliente($offset, $limit, $sortField, $sortDirection, $searchParam);
$lp->setCurrentPage($currentPage);
$lp->setPageSize(100);
$this->response->setData($lp);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
* Actualiza las deudas de un cliente
*
* @Route("/admin/ajax/update/deudas/cliente", name="admin_ajax_tramite_deuda_update", methods={"PUT"}, condition="request.isXmlHttpRequest()")
*/
public function putDeudaClienteAction(Request $request) {
$this->validarAdmin();
try {
$handler = $this->get(McPrecargaHandler::class);
$result = $handler->updateDeuda($request);
$this->response->setData($result);
$this->response->setCode(Codes::OK);
} catch (Exception $e) {
$this->response->setCode(Codes::ERROR);
$this->response->setMessage($e->getMessage());
}
$serializedEntity = $this->container->get('serializer')->serialize($this->response, 'json');
return new Response($serializedEntity);
}
/**
*
* Descarga recibo de atención de precargas
*
* @Route("/admin/ajax/precargas/cliente/{clienteId}/descarga/recibo", name="admin_ajax_precarga_by_cliente_recibo_descarga", methods={"POST"})
*
*/
public function descargaReciboMultipleAction($clienteId, Request $request) {
try {
$this->validarAdmin();
// Obtener el contenido de la solicitud JSON
$data = json_decode($request->getContent(), true);
// Obtener el array de tramites que llegó en el cuerpo de la solicitud
$tramitesIds = $data['tramites'];
// Validar que haya trámites enviados en la solicitud
if (empty($tramitesIds)) {
throw new Exception('No se han proporcionado trámites.');
}
return $this->get(McPrecargaHandler::class)->descargaReciboMultiplePdf($tramitesIds);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga Factura Afip Multiples
*
* @Route("/admin/ajax/precargas/cliente/{clienteId}/factura/afip", name="admin_ajax_precarga_by_cliente_factura_afip", methods={"POST"})
*
*/
public function descargaFacturaAFipMultipleAction($clienteId, Request $request) {
try {
$this->validarAdmin();
// Obtener el contenido de la solicitud JSON
$data = json_decode($request->getContent(), true);
// Obtener el array de tramites que llegó en el cuerpo de la solicitud
$tramitesIds = $data['datos']['tramites'];
$comprobante = $data['datos']['comprobante'];
// Validar que haya trámites enviados en la solicitud
if (empty($tramitesIds)) {
throw new Exception('No se han proporcionado trámites.');
}
return $this->get(McPrecargaHandler::class)->descargaFacturaAfipMultiplePdf($tramitesIds, $comprobante);
} catch (Exception $e) {
return $e->getMessage();
}
}
}