<?php
namespace Noahtech\Sistemas\InterjamaBundle\Controller\Atencion;
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 validarAtencion () {
$usuario = $this->getUser();
if ($usuario) {
$atencion = false;
foreach ($usuario->getRoles() as $rol) {
if ($rol == 'ROLE_ATENCION'){
$atencion = true;
}
}
if (!$atencion){
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("/atencion/precarga/atenciones", name="atencion_precarga_atenciones_listado")
* @return type
*/
public function listadoAtencionAction() {
$this->validarAtencion();
$this->setTitle("Listado de atenciones");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de atenciones", true);
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = null;
$this->data['clientes'] = $clientes;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas/atenciones/listado.html.twig', $this->data
);
}
/**
* consulta de precarga
*
* @Route("/atencion/ajax/precargas/atenciones/search", name="atencion_ajax_precargas_atenciones_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchAtencionesAction(Request $request) {
$this->validarAtencion();
$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->searchAtenciones($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("/atencion/precarga/atencion/{id}", name="atencion_precarga_atencion")
* @return type
*/
public function precargaAtencionAction($id) {
$this->validarAtencion();
$this->setTitle("Nueva Atención de precarga");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de atenciones", false, "atencion_precarga_atenciones_listado");
$this->addBreadCrumb("Nueva Atención de precarga", true);
$tiposTramite = $this->get(McTiposTramiteHandler::class)->getTiposTramite();
$caja = $this->get(McCajaHandler::class)->getCajaAbierta('operador');
$this->data['data'] = $id;
$this->data['tiposTramite'] = $tiposTramite;
$this->data['caja'] = $caja;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas/atenciones/atencion.html.twig', $this->data
);
}
/**
* Devuelve una precarga
*
* @Route("/atencion/ajax/precargas/atencion/{id}", name="atencion_ajax_precarga_atencion_get_by_id", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function getAtencionPrecargaByIdAction($id) {
$this->validarAtencion();
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);
}
/**
* Modifica una precarga para agregar los datos de atención
*
* @Route("/atencion/ajax/precargas/{id}/atencion", name="atencion_ajax_precarga_atencion_update", methods={"PUT"}, condition="request.isXmlHttpRequest()")
*/
public function putAtencionAction(Request $request, $id) {
$this->validarAtencion();
$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);
}
/**
*
* Descarga manifiesto de carga
*
* @Route("/atencion/ajax/precargas/{precargaId}/descarga/manifiesto", name="atencion_ajax_precargas_manifiesto_descarga")
*
*/
public function descargaManifiestoPdfAction($precargaId) {
try {
$this->validarAtencion();
return $this->get(McPrecargaHandler::class)->descargaManifiestoPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga Hoja de ruta
*
* @Route("/atencion/ajax/precargas/{precargaId}/descarga/hoja_ruta", name="atencion_ajax_precargas_hoja_ruta_descarga")
*
*/
public function descargaHojaRutaPdfAction($precargaId) {
try {
$this->validarAtencion();
return $this->get(McPrecargaHandler::class)->descargaHojaRutaPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga MCDTA
*
* @Route("/atencion/ajax/precargas/{precargaId}/descarga/mcdta", name="atencion_ajax_precargas_mcdta_descarga")
*
*/
public function descargaMcdtaPdfAction($precargaId) {
try {
$this->validarAtencion();
return $this->get(McPrecargaHandler::class)->descargaMcdtaPdf($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
*
* Descarga recibo de atención de precarga
*
* @Route("/atencion/ajax/precargas/{precargaId}/descarga/recibo", name="atencion_ajax_precarga_recibo_descarga")
*
*/
public function descargaReciboAction($precargaId) {
try {
$this->validarAtencion();
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();
}
}
/**
* @Route("/atencion/tramites/finalizados", name="atencion_tramites_finalizados_listado")
* @return type
*/
public function precargaFinalizadasListadoAction() {
$this->validarAtencion();
$usuario = $this->getUser();
$this->setTitle("Trámites finalizados | InterJama");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Trámites finalizados", true);
$clientes = $this->get(McClienteHandler::class)->getClientes();
$this->data['data'] = null;
$this->data['clientes'] = $clientes;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas/finalizadas/listado.html.twig', $this->data
);
}
/**
* consulta de tramite finalizado
*
* @Route("/atencion/ajax/tramites/finalizados/search", name="atencion_ajax_tramites_finalizados_listado", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function searchPrecargasFinalizadasAction(Request $request) {
$this->validarAtencion();
$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);
}
/**
* Devuelve un cliente segun el termino de busqueda
*
* @Route("/atencion/ajax/search/clientes/ByTermino", name="atencion_ajax_cliente_by_termino", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function getClienteByTerminoSerachAction(Request $request) {
$this->validarAtencion();
$userCurrent = $this->getUser();
$searchParam = $request->query->get('q');
try {
$handler = $this->get(McClienteHandler::class);
$clientes = $handler->searchClientesByTermino($searchParam);
$this->response->setData($clientes);
$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 de archivos de una precarga
*
* @Route("/atencion/ajax/precargas/{id}/download/archivos", name="atencion_ajax_precarga_get_by_id_descarga")
*/
public function downloadFileByPrecargaAction($id) {
try {
$this->validarAtencion();
$handler = $this->get(McPrecargaArchivoHandler::class);
return $handler->downloadFilesByPrecarga($id);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* @Route("/atencion/precargas/{id}/archivos", name="atencion_precargas_by_id_archivos")
* @return type
*/
public function precargaArchivosListadoAction($id) {
$this->validarAtencion();
$usuario = $this->getUser();
$this->setTitle("Archivos adjuntos");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Bandeja de entrada", false, "atencion_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/atencion/precargas/archivos.html.twig', $this->data
);
}
/**
* @Route("/atencion/precarga/atencion/{id}/formulario/senasa", name="atencion_precarga_atencion_formulario_senasa")
* @return type
*/
public function precargaAtencionSenasaAction($id) {
$this->validarAtencion();
$this->setTitle("Formulario Senasa");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de precargas", false, "atencion_precarga_atenciones_listado");
$this->addBreadCrumb("Formulario Senasa", true);
$this->data['data'] = $id;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas/atenciones/senasa.html.twig', $this->data
);
}
/**
* descarga del formulario SENASA
*
* @Route("/atencion/ajax/precargas/atencion/{id}/formulario/senasa", name="atencion_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->validarAtencion();
$handler = $this->get(McPrecargaHandler::class);
return $handler->downloadSenasa($data, $id);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* @Route("/atencion/precarga/atencion/{id}/formulario/anmac", name="atencion_precarga_atencion_formulario_anmac")
* @return type
*/
public function precargaAtencionAnmacAction($id) {
$this->validarAtencion();
$this->setTitle("Formulario Anmac");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de precargas", false, "atencion_precarga_atenciones_listado");
$this->addBreadCrumb("Formulario Anmac", true);
$this->data['data'] = $id;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas/atenciones/anmac.html.twig', $this->data
);
}
/**
* descarga del formulario ANMAC
*
* @Route("/atencion/ajax/precargas/atencion/{id}/formulario/anmac", name="atencion_ajax_precarga_atencion_formulario_anmac")
*/
public function downloadAnmacAction(Request $request, $id) {
$request_body = file_get_contents('php://input');
$data = json_decode($request_body, true);
try {
$this->validarAtencion();
$handler = $this->get(McPrecargaHandler::class);
return $handler->downloadAnmac($data, $id);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* Guarda un chofer
*
* @Route("/atencion/ajax/chofer", name="atencion_chofer_save", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function postChoferSaveAction(Request $request) {
$this->validarAtencion();
$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);
}
/**
*
* Descarga archivos de una precarga finalizada
*
* @Route("/atencion/ajax/tramites/finalizados/{precargaId}/download", name="atencion_ajax_tramite_finalizado_download")
*
*/
public function descargaArchivosAction($precargaId) {
try {
$this->validarAtencion();
$handler = $this->get(McPrecargaHandler::class);
return $handler->downloadArchivosFinalizado($precargaId);
} catch (Exception $e) {
return $e->getMessage();
}
}
/**
* @Route("/atencion/tramites/atencion/editar/{id}", name="atencion_tramite_atencion_update")
* @return type
*/
public function precargaUpdateAtencionAction($id) {
$this->validarAtencion();
$this->setTitle("Editar Trámite");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de trámites finalizados", false, "atencion_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/atencion/precargas/atenciones/updateAtencion.html.twig', $this->data
);
}
/**
* Modifica una atencion de precarga
*
* @Route("/atencion/ajax/precargas/{id}/modificacion/atencion", name="atencion_ajax_precarga_modificacion_atencion_update", methods={"PUT"}, condition="request.isXmlHttpRequest()")
*/
public function editAtencionPrecargaAction(Request $request, $id) {
$this->validarAtencion();
$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);
}
/**
* @Route("/atencion/precarga/finalizar/{id}", name="operador_precargas_atencion_modificacion")
* @return type
*/
public function precargaAtencionModificacionAction($id) {
$this->validarAtencion();
$this->setTitle("Finalizar Atención");
$this->addBreadCrumb("Inicio - Atención", false, "atencion_home");
$this->addBreadCrumb("Listado de atenciones", false, "atencion_precarga_atenciones_listado");
$this->addBreadCrumb("Finalizar Atención", true);
$tiposTramite = $this->get(McTiposTramiteHandler::class)->getTiposTramite();
$this->data['data'] = $id;
$this->data['tiposTramite'] = $tiposTramite;
return $this->render(
'@NoahtechSistemasInterjama/atencion/precargas_atencion/finalizar.html.twig', $this->data
);
}
/**
* Devuelve una atención de la precarga
*
* @Route("/atencion/ajax/precargas_atencion/{id}", name="atencion_ajax_precarga_atencion_atencion_get_by_id", methods={"GET"}, condition="request.isXmlHttpRequest()")
*/
public function getPrecargaAtencionByIdAction($id) {
$this->validarAtencion();
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);
}
/**
* Modifica una precarga
*
* @Route("/atencion/ajax/precargas_atencion/finalizar/{id}", name="atencion_ajax_precarga_atencion_finalizar", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function putUpdateAction(Request $request, $id) {
$this->validarAtencion();
$archivo = (isset($_FILES['archivo'])) ? $_FILES['archivo'] : null;
$handler = $this->get(McPrecargaHandler::class);
$usuario = $this->getUser();
$precarga = $handler->getAtencionPrecargaFinalizarFromRequest($request, $archivo, $usuario, $id);
$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);
}
/**
* Guarda una precarga
*
* @Route("/atencion/ajax/precargas", name="atencion_ajax_precargas_save", methods={"POST"}, condition="request.isXmlHttpRequest()")
*/
public function postPrecargaSaveAction(Request $request) {
$this->validarAtencion();
try {
$handler = $this->get(McPrecargaHandler::class);
$usuario = $this->getUser();
$precarga = $handler->getPrecargaFromRequest($request, $usuario);
$result = $handler->save($precarga, $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);
}
}