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);
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Constructor por defecto de la clase
 /// </summary>
 public HomeController()
 {
     try
     {
         AlertaRepository             = (IAlertaRepository)ServiceLocator.ObtenerFabricaSpring().GetObject("AlertaRepository");
         UsuarioRepository            = (IUsuarioRepository)ServiceLocator.ObtenerFabricaSpring().GetObject("UsuarioRepository");
         RegistroAuditoriaRepository  = (IRegistroAuditoriaRepository)ServiceLocator.ObtenerFabricaSpring().GetObject("RegistroAuditoriaRepository");
         DocumentoInstanciaRepository = (IDocumentoInstanciaRepository)ServiceLocator.ObtenerFabricaSpring().GetObject("DocumentoInstanciaRepository");
         DocumentoInstanciaService    = (IDocumentoInstanciaService)ServiceLocator.ObtenerFabricaSpring().GetObject("DocumentoInstanciaService");
     }
     catch (Exception ex)
     {
         LogUtil.Error(ex);
         throw;
     }
 }