private void EjecutaDistribucion( long idDocumentoInstancia, long version, IDictionary <string, object> parametros, IVersionDocumentoInstanciaRepository versionDocumentoInstanciaRepository, IDocumentoInstanciaRepository documentoInstanciaRepository, IDistribucionDocumentoXBRL distribucion ) { versionDocumentoInstanciaRepository.DbContext.Database.CommandTimeout = 380; var versionDocumento = versionDocumentoInstanciaRepository.GetQueryable().Where(x => x.IdDocumentoInstancia == idDocumentoInstancia && x.Version == version).FirstOrDefault(); if (versionDocumento == null) { return; } var bitacora = versionDocumentoInstanciaRepository.GetQueryable().Where(x => x.IdVersionDocumentoInstancia == versionDocumento.IdVersionDocumentoInstancia).FirstOrDefault(); 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; newData = null; versionDocumento.Datos = null; documentoInstanciaXbrlDto.IdDocumentoInstancia = bitacora.IdDocumentoInstancia; documentoInstanciaXbrlDto.Version = 1; 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) { LogUtil.Error("Ocurrió un error al obtener la taxonomía del documento"); } else { distribucion.EjecutarDistribucion(documentoInstanciaXbrlDto, parametros); } }
/// <summary> /// Crea u obtiene la bitácora de distribución de documentos de una distribución en específico /// </summary> /// <param name="dist">Distribución actualmente ejecutada</param> /// <param name="idBitacoraVersionDocumento">Identificador de la bitácora del documento</param> /// <returns>Bitácora de distribución que corresponde a la distribución actual y al documento</returns> private BitacoraDistribucionDocumento ObtenerOCrearBitacoraDistribucionExitosa(IDistribucionDocumentoXBRL dist, BitacoraVersionDocumento bitacoraVersionDocumento) { var bitacora = BitacoraDistribucionDocumentoRepository.GetQueryable(). Where(x => x.IdBitacoraVersionDocumento == bitacoraVersionDocumento.IdBitacoraVersionDocumento && x.CveDistribucion.Equals(dist.ClaveDistribucion) && x.Estatus == DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_APLICADO).FirstOrDefault(); if (bitacora == null) { //crear bitácora bitacora = new BitacoraDistribucionDocumento() { CveDistribucion = dist.ClaveDistribucion, Estatus = DistribucionDocumentoConstants.DISTRIBUCION_ESTATUS_PENDIENTE, FechaRegistro = DateTime.Now, FechaUltimaModificacion = DateTime.Now }; } return(bitacora); }