コード例 #1
0
ファイル: Recursos.cs プロジェクト: lighuenlacamoire/Renappo
        public Proveedor consultarPadronRest(string cuit)
        {
            log.Info("Cuit Ingresado " + cuit);
            cuit = Funciones.ConvertToCUIT(cuit);

            Certificacion[] certificaciones = new Certificacion[0];
            Proveedor       proveedor       = new Proveedor();
            IT_Mensaje      mensaje         = new IT_Mensaje();

            string usuarioProxy = ConfigurationManager.AppSettings["CPA_Proxy_Usuario"];
            string passwdProxy  = ConfigurationManager.AppSettings["CPA_Proxy_Passwd"];
            string domainProxy  = ConfigurationManager.AppSettings["CPA_Proxy_Dominio"];

            string WSApiEndpoint  = ConfigurationManager.AppSettings["WS_ApiEndpoint"];
            string WSApiParameter = ConfigurationManager.AppSettings["WS_ApiParameter"];
            Uri    WSUriApi       = new Uri(WSApiEndpoint + "?" + WSApiParameter + "=" + cuit);

            var client = new RestClient(WSApiEndpoint);

            client.Proxy = Funciones.CrearProxy();

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 |
                                                   SecurityProtocolType.Tls | SecurityProtocolType.Tls11;

            ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback;

            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });

            mensaje.Consulta = cuit;
            mensaje.Mensaje  = string.Empty;

            var request = new RestRequest("?" + WSApiParameter + "=" + cuit, Method.GET);

            System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
            string content = string.Empty;

            log.Info("Invocacion al Endpoint de Renappo " + WSApiEndpoint + " con el siguiente parametro y valor " + WSApiParameter + "=" + cuit);
            timer.Start();
            var response = client.Execute(request);

            timer.Stop();
            long tiempo = timer.ElapsedMilliseconds / 1000;

            log.Info("Tiempo Renappo - invocacion: " + tiempo + "segundos");

            timer.Restart();
            if (response != null && !string.IsNullOrEmpty(response.Content) && response.StatusCode == HttpStatusCode.OK)
            {
                log.Info("Respuesta Renappo - Servicio : " + Environment.NewLine + JValue.Parse(response.Content)?.ToString(Newtonsoft.Json.Formatting.Indented));

                log.Info("Parseando el la respuesta previamente obtenida");
                certificaciones = JsonConvert.DeserializeObject <Certificacion[]>(response.Content);
            }
            else
            {
                mensaje.Tipo = "E";
                log.Info(
                    "Respuesta Renappo - Servicio : " +
                    Environment.NewLine +
                    "Estado - " + response?.StatusCode +
                    Environment.NewLine +
                    "Descripcion" + response?.StatusDescription);
            }

            if (certificaciones != null && certificaciones.Any())
            {
                if (certificaciones.Any(x => x.Fallo))
                {
                    mensaje.Mensaje       = certificaciones.FirstOrDefault(x => x.Fallo)?.Mensaje;
                    mensaje.Tipo          = "E";
                    proveedor.Detalle     = null;
                    proveedor.Actividades = null;
                }
                else
                {
                    string mensajeVacio = "No se pudo obtener información";
                    mensaje.Tipo = "S";

                    IT_Detalle          detalle     = new IT_Detalle();
                    List <IT_Actividad> actividades = new List <IT_Actividad>();

                    foreach (var certificacion in certificaciones)
                    {
                        detalle.RazonSocial        = !string.IsNullOrEmpty(certificacion.RazonSocial) ? certificacion.RazonSocial : mensajeVacio;
                        detalle.Intermediario      = !string.IsNullOrEmpty(certificacion.Medio) ? certificacion.Medio : mensajeVacio;
                        detalle.Habilitado         = !string.IsNullOrEmpty(certificacion.Habilitado) ? certificacion.Habilitado : mensajeVacio;
                        detalle.FechaVigenciaDesde = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Desde), null);
                        detalle.FechaVigenciaHasta = Funciones.ConvertToFechaFormato(Funciones.ConvertToFechaVigencia(certificacion.FechaVigencia, Parametros.FechaVigencia.Hasta), null);

                        #region Tarifario
                        if (!string.IsNullOrEmpty(certificacion.Tarifario))
                        {
                            var tarifario = SubirArchivoRest(certificacion.Tarifario);
                            if (tarifario != null && !tarifario.Error && !string.IsNullOrEmpty(tarifario.Id))
                            {
                                detalle.Tarifario = tarifario.Id;
                            }
                            else
                            {
                                mensaje.Tipo      = "W";
                                mensaje.Mensaje   = mensaje.Mensaje + tarifario.Detalle + "; ";
                                detalle.Tarifario = null;
                            }
                        }
                        else
                        {
                            detalle.Tarifario = mensajeVacio;
                        }
                        #endregion

                        #region Cobertura Geografica
                        if (!string.IsNullOrEmpty(certificacion.CoberturaGeografica))
                        {
                            var cobertura = SubirArchivoRest(certificacion.CoberturaGeografica);
                            if (cobertura != null && !cobertura.Error && !string.IsNullOrEmpty(cobertura.Id))
                            {
                                detalle.CoberturaGeografica = cobertura.Id;
                            }
                            else
                            {
                                mensaje.Tipo                = "W";
                                mensaje.Mensaje             = mensaje.Mensaje + cobertura.Detalle + "; ";
                                detalle.CoberturaGeografica = null;
                            }
                        }
                        else
                        {
                            detalle.CoberturaGeografica = mensajeVacio;
                        }
                        #endregion

                        if (!string.IsNullOrEmpty(certificacion.Certificado))
                        {
                            log.Info("Parseando el campo certificado para obtener la/s actividad/es del Proveedor");
                            var elementos = XElement.Parse(certificacion.Certificado);

                            if (elementos.HasElements)
                            {
                                foreach (var elemento in elementos.Elements())
                                {
                                    var elementosTexto = elemento.Descendants()?.Where(x => x.FirstNode != null && x.FirstNode.NodeType == XmlNodeType.Text);

                                    if (elementosTexto != null && elementosTexto.Any())
                                    {
                                        var actividad = new IT_Actividad();
                                        actividad.Actividad   = elementosTexto?.FirstOrDefault(x => x.Parent.Value.Contains("CERTIFICADO HABILITANTE") && x.Name == "strong").Value;
                                        actividad.Fecha       = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Fecha:"))?.Value, "Fecha:");
                                        actividad.Vencimiento = Funciones.ConvertToFechaFormato(elementosTexto?.FirstOrDefault(x => x.Value.Contains("Vencimiento:"))?.Value, "Vencimiento:");
                                        actividad.Certificado = elementosTexto?.FirstOrDefault(x => x.Value.Contains("RENAPPO")).Value.Trim() ?? mensajeVacio;

                                        actividades.Add(actividad);
                                    }
                                }
                            }
                            proveedor.Actividades = actividades.ToArray();
                        }
                        else
                        {
                            log.Info("No se pudo obtener la/s actividad/es del Proveedor");
                        }
                    }
                    proveedor.Detalle = detalle;
                }
            }

            proveedor.Mensaje = mensaje;

            timer.Stop();
            tiempo = timer.ElapsedMilliseconds / 1000;
            log.Info("Tiempo Servicio - procesamiento: " + tiempo + "segundos");

            return(proveedor);
        }
コード例 #2
0
ファイル: Recursos.cs プロジェクト: lighuenlacamoire/Renappo
        private IT_Archivo SubirArchivoRest(string url)
        {
            var archivo = new IT_Archivo();

            archivo.Id        = string.Empty;
            archivo.Error     = false;
            archivo.Detalle   = string.Empty;
            archivo.Url       = url;
            archivo.Extension = string.Empty;

            try
            {
                string content     = string.Empty;
                byte[] oFileToSave = null;

                log.Info("Se descargara el certificado con la siguiente url " + url);

                var client = new RestClient();
                client.Proxy   = Funciones.CrearProxy();
                client.BaseUrl = new Uri(url);

                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3 |
                                                       SecurityProtocolType.Tls | SecurityProtocolType.Tls11;

                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidationCallback;

                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return(true); });

                log.Info("Invocando a la descarga del archivo con la siguiente url " + url);
                var request = new RestRequest();
                request.Method = Method.GET;

                log.Info("Obteniendo la respuesta del Endpoint " + url);
                oFileToSave = client.DownloadData(request);

                archivo.Nombre = Path.GetFileName(url);
                string filename = archivo.Nombre;

                archivo.Extension = CheckFileExtension(oFileToSave);

                if (string.IsNullOrEmpty(archivo.Extension))
                {
                    throw new Exception("El archivo no es valido " + archivo.Nombre);
                }

                filename = filename.Substring(0, filename.IndexOf(".")) + "." + archivo.Extension;
                log.Info("Iniciando Configuracion de Digiweb para subir el archivo previamente descargado");

                string digiwebEndpoint      = ConfigurationManager.AppSettings["DigiWebEndpoint"];
                string digiDocCodigoSistema = ConfigurationManager.AppSettings["DigiDocCodigoSistema"];
                string digiDocCodigoExterno = ConfigurationManager.AppSettings["DigiDocCodigoExterno"];
                string digiDocCodigoId      = ConfigurationManager.AppSettings["DigiDocCodigoId"];

                DigiWeb.DigitalizacionServicio service = new DigiWeb.DigitalizacionServicio();
                service.Credentials = CredentialCache.DefaultCredentials;
                service.Url         = digiwebEndpoint;

                log.Info("Invocando a Digiweb para obtener la ruta de subida del archivo");
                string oRuta = service.CalcularRutaSistema(digiDocCodigoSistema);

                Guid oGuid_A_Traer;

                DigiWeb.EDocumentoOriginal oEDocumentoOriginal = new DigiWeb.EDocumentoOriginal();
                oEDocumentoOriginal.Id                 = Guid.NewGuid();
                oEDocumentoOriginal.CodigoSistema      = digiDocCodigoSistema;
                oEDocumentoOriginal.TipoEDocumentoId   = Convert.ToInt32(digiDocCodigoId);
                oEDocumentoOriginal.EstadoEDocumentoId = 1;
                oEDocumentoOriginal.Entidad            = "0";
                oEDocumentoOriginal.PreCuil            = 0;
                oEDocumentoOriginal.NumeroDocumento    = "0";
                oEDocumentoOriginal.DigitoVerificador  = 0;
                oEDocumentoOriginal.TipoTramite        = 0;
                oEDocumentoOriginal.Secuencia          = 0;
                oEDocumentoOriginal.Nombre             = filename;
                oEDocumentoOriginal.Ruta               = oRuta + "\\" + filename;
                oEDocumentoOriginal.FechaIndexacion    = DateTime.Now;
                oEDocumentoOriginal.CodigoExterno      = digiDocCodigoExterno;

                log.Info("Invocando a Digiweb para la subida logica del archivo");
                service.GuardarEDocumentoV2(oEDocumentoOriginal);

                oGuid_A_Traer = oEDocumentoOriginal.Id;

                log.Info("Inicio subida fisica del archivo nombre " + filename + " a la siguiente ruta " + oRuta);
                File.WriteAllBytes(oRuta + "\\" + filename, oFileToSave);

                log.Info("Invocando a Digiweb para verificar que se haya hecho la subida del archivo");
                var oEDocumentoSubido = service.TraerEDocumento(oGuid_A_Traer);

                if (oEDocumentoSubido != null)
                {
                    archivo.Id = Convert.ToString(oGuid_A_Traer);
                    log.Info("Se ha subido el archivo de nombre " + filename + " con el Id " + archivo.Id);
                }
                else
                {
                    throw new Exception("No se ha podido recuperar el archivo de nombre " + filename);
                }
            }
            catch (Exception ex)
            {
                archivo.Id      = string.Empty;
                archivo.Error   = true;
                archivo.Detalle = "Fallo la subida del archivo " + (archivo.Nombre ?? archivo.Url);
                log.Error("Fallo la subida del archivo de la url " + url);
                log.Error("Motivo del fallo: " + ex.Message);
                Console.WriteLine(ex.Message);
            }

            return(archivo);
        }