Beispiel #1
0
        private void ActualizarBitacoraVersionDocumento(long idBitacoraVersionDocumento, ResultadoOperacionDto resultado)
        {
            var bitacora = BitacoraVersionDocumentoRepository.DbContext.BitacoraVersionDocumento.Find(idBitacoraVersionDocumento);

            if (resultado.Resultado)
            {
                bitacora.Estatus = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO;
                bitacora.FechaUltimaModificacion = DateTime.Now;
                bitacora.MensajeError            = null;
            }
            else
            {
                bitacora.Estatus                 = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_ERROR;
                bitacora.MensajeError            = resultado.Mensaje;
                bitacora.FechaUltimaModificacion = DateTime.Now;
            }
            try
            {
                BitacoraVersionDocumentoRepository.Update(bitacora);
            }
            catch (InvalidOperationException exeption)
            {
                LogUtil.Error(exeption);
                BitacoraVersionDocumentoRepository.ActualizaEstadoVersionDocumento(
                    bitacora.IdBitacoraVersionDocumento,
                    bitacora.Estatus,
                    bitacora.FechaUltimaModificacion,
                    bitacora.MensajeError);
            }
        }
Beispiel #2
0
        public VersionDocumentoInstancia ObtenerVersionDocumentoInstanciaSinDatosPorIdBitacoraVersionDocumento(long idBitacoraVersionDocumento)
        {
            var resultados = BitacoraVersionDocumentoRepository.GetQueryable().Where(x => x.IdBitacoraVersionDocumento == idBitacoraVersionDocumento).Select(x => new{
                x.VersionDocumentoInstancia.IdDocumentoInstancia, x.VersionDocumentoInstancia.Version
            }).ToList();

            if (resultados.Count > 0)
            {
                return(new VersionDocumentoInstancia()
                {
                    IdDocumentoInstancia = resultados[0].IdDocumentoInstancia,
                    Version = resultados[0].Version
                });
            }

            return(null);
        }
Beispiel #3
0
        public void ActualizaEstadoBitacoraDistribucion(long IdBitacoraDistribucionDocumento, int estatus)
        {
            var distribucion = BitacoraDistribucionDocumentoRepository.GetQueryable().Where(x => x.IdBitacoraDistribucionDocumento == IdBitacoraDistribucionDocumento).FirstOrDefault();

            if (distribucion == null)
            {
                return;
            }
            distribucion.Estatus = estatus;
            BitacoraDistribucionDocumentoRepository.Update(distribucion);

            var version = BitacoraVersionDocumentoRepository.GetQueryable().Where(x => x.IdBitacoraVersionDocumento == distribucion.IdBitacoraVersionDocumento).FirstOrDefault();

            if (version == null)
            {
                return;
            }
            version.Estatus = estatus;
            BitacoraVersionDocumentoRepository.Update(version);
        }
Beispiel #4
0
 /// <summary>
 /// Retorna un listado con todos los registros en BD.
 /// </summary>
 /// <returns>Todos los registros de Bitacora en BD.</returns>
 public IList <BitacoraVersionDocumentoDto> ObtenTodosElementos()
 {
     return(BitacoraVersionDocumentoRepository.ObtenListaElementosReporte());
 }
Beispiel #5
0
 /// <summary>
 /// Retorna la información paginada.
 /// </summary>
 /// <param name="paginacion">Paginación a considaerar.</param>
 /// <returns>Paginación con el conjunto de datos a mostrar.</returns>
 public PaginacionSimpleDto <BitacoraVersionDocumentoDto> ObtenElementosPaginados(PaginacionSimpleDto <BitacoraVersionDocumentoDto> paginacion)
 {
     return(BitacoraVersionDocumentoRepository.ObtenElementosPaginados(paginacion));
 }
Beispiel #6
0
        public ResultadoOperacionDto DistribuirDocumentoInstanciaXBRL(long idDocumentoInstancia, long version, IDictionary <string, object> parametros)
        {
            LogUtil.Info("Iniciando las distribuciones del documento XBRL:" + idDocumentoInstancia + ", version:" + version);
            var resultado = new ResultadoOperacionDto();

            //Obtener la bitácora de la distribución de este documento
            VersionDocumentoInstanciaRepository.DbContext.Database.CommandTimeout = 380;
            var versionDocumento = VersionDocumentoInstanciaRepository.GetQueryable().Where(x => x.IdDocumentoInstancia == idDocumentoInstancia && x.Version == version).FirstOrDefault();

            if (versionDocumento == null)
            {
                LogUtil.Error("No se encontró la versión del documento de instancia:" + idDocumentoInstancia + " version " + version);
                resultado.Resultado = false;
                resultado.Mensaje   = "No se encontró el registro de Versión de Documento de Instancia ID:" + idDocumentoInstancia + " version " + version;
                return(resultado);
            }
            var bitacora = BitacoraVersionDocumentoRepository.GetQueryable().Where(x => x.IdVersionDocumentoInstancia == versionDocumento.IdVersionDocumentoInstancia).FirstOrDefault();

            if (bitacora == null)
            {
                LogUtil.Error("No se encontró el registro de Bitácora de Documento de Instancia ID:" + versionDocumento.IdVersionDocumentoInstancia);
                resultado.Resultado = false;
                resultado.Mensaje   = "No se encontró el registro de Bitácora de Documento de Instancia ID:" + versionDocumento.IdVersionDocumentoInstancia;
                return(resultado);
            }
            if (bitacora.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO)
            {
                LogUtil.Error("El estatus de la distribución del documento ya es \"Aplicado\", no se ejecuta distribución para el documento \"" + idDocumentoInstancia + "\" version " + version);
                resultado.Resultado = true;
                resultado.Mensaje   = "El estatus de la distribución del documento ya es \"Aplicado\", no se ejecuta distribución para el documento \"" + idDocumentoInstancia + "\" version " + version;
                return(resultado);
            }
            String newData = ZipUtil.UnZip(versionDocumento.Datos);

            versionDocumento.Datos = null;
            System.GC.Collect();
            LogUtil.Info("Memoria usada:" + System.GC.GetTotalMemory(true));
            var documentoInstanciaXbrlDto = JsonConvert.DeserializeObject <DocumentoInstanciaXbrlDto>(newData);

            newData = null;
            documentoInstanciaXbrlDto.IdDocumentoInstancia = bitacora.IdDocumentoInstancia;
            documentoInstanciaXbrlDto.Version   = bitacora.VersionDocumentoInstancia.Version;
            documentoInstanciaXbrlDto.Taxonomia = ObtenerTaxonomia(documentoInstanciaXbrlDto.DtsDocumentoInstancia);
            var fechaRecepcion = DocumentoInstanciaRepository.GetQueryable().Where(x => x.IdDocumentoInstancia == idDocumentoInstancia).Select(x => x.FechaCreacion).FirstOrDefault();

            if (parametros == null)
            {
                parametros = new Dictionary <string, object>();
            }
            if (!parametros.ContainsKey("FechaRecepcion"))
            {
                parametros.Add("FechaRecepcion", fechaRecepcion);
            }
            var bitacorasAActualizar = new List <BitacoraDistribucionDocumento>();

            if (documentoInstanciaXbrlDto.Taxonomia == null)
            {
                resultado.Resultado = false;
                resultado.Mensaje   = "Ocurrió un error al obtener la taxonomía del documento";
            }
            else
            {
                resultado.Resultado = true;
                //aplicar cada una de las distribuciones
                foreach (var dist in Distribuciones)
                {
                    var bitacoraDist = ObtenerOCrearBitacoraDistribucionExitosa(dist, bitacora);
                    if (bitacoraDist.Estatus != DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO)
                    {
                        ResultadoOperacionDto resultadoDist = null;
                        try
                        {
                            resultadoDist = dist.EjecutarDistribucion(documentoInstanciaXbrlDto, parametros);
                            if (!resultadoDist.Resultado && resultadoDist.Mensaje.Equals("NA"))
                            {
                                continue;
                            }
                        }
                        catch (Exception ex)
                        {
                            resultadoDist           = new ResultadoOperacionDto();
                            resultadoDist.Resultado = false;
                            resultadoDist.Mensaje   = ex.Message;
                            resultadoDist.Excepcion = ex.StackTrace;
                        }

                        if (!resultadoDist.Resultado)
                        {
                            LogUtil.Error("Falló distribución de documento, Id Documento:" + idDocumentoInstancia + " Error:" + resultadoDist.Mensaje);
                            LogUtil.Error(resultadoDist.Excepcion);
                            resultado.Resultado  = false;
                            resultado.Mensaje    = "Al menos una distribución falló en su ejecución";
                            bitacoraDist.Estatus = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_ERROR;
                            bitacoraDist.FechaUltimaModificacion = DateTime.Now;
                            bitacoraDist.MensajeError            = resultadoDist.Mensaje;
                        }
                        else
                        {
                            bitacoraDist.Estatus = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO;
                            bitacoraDist.FechaUltimaModificacion = DateTime.Now;
                            bitacoraDist.MensajeError            = null;
                        }
                        bitacoraDist.IdBitacoraVersionDocumento = bitacora.IdBitacoraVersionDocumento;
                        ActualizarBitacoraDistribucion(bitacoraDist);
                        LogUtil.Info("Memoria usada:" + System.GC.GetTotalMemory(true));
                    }
                }
                System.GC.Collect();
            }

            ActualizarBitacoraVersionDocumento(bitacora.IdBitacoraVersionDocumento, resultado);


            resultado.InformacionAuditoria = new InformacionAuditoriaDto()
            {
                Accion    = ConstantsAccionAuditable.Insertar,
                Empresa   = null,
                Fecha     = DateTime.Now,
                IdUsuario = null,
                Modulo    = ConstantsModulo.ServicioAlmacenamientoDocumentosXBRL,
                Registro  = "Procesamiento de distribuciones XBRL para documento de instancia:" + idDocumentoInstancia
            };
            NotificarAListaDeDistribucion(bitacora, documentoInstanciaXbrlDto);
            documentoInstanciaXbrlDto.Cerrar();
            System.GC.Collect(0, GCCollectionMode.Forced, true);
            System.GC.Collect(1, GCCollectionMode.Forced, true);
            return(resultado);
        }