Exemplo n.º 1
0
        public async Task <bool> AddClientNV(Models.N.Client.ClientData client)
        {
            var service = new HttpRequestFactory();
            var isError = false;
            var url     = _configuration["AddClient:Url"];

            try
            {
                var request = new BUS.AdministracionCliente.CrearClienteDatosBasicosRequest
                {
                    BGBAHeader = await _objectFactory.InstantiateFromJsonFile <BUS.AdministracionCliente.BGBAHeader>(_configuration["AddClient:BGBAHeader"]),
                    Datos      = _mapper.Map <Models.N.Client.ClientData, BUS.AdministracionCliente.CrearClienteDatosBasicosRequestDatos>(client)
                };

                var content = new SoapJsonContent(request, _configuration["AddClient:Operation"]);

                var response = await service.Post(url, content, _cert);

                dynamic soapResponse = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(JObject.Parse(response.ContentAsString()).SelectToken($"..{typeof(BUS.AdministracionCliente.CrearClienteDatosBasicosResponse).Name}")));

                if (soapResponse.BGBAResultadoOperacion.Severidad == BUS.AdministracionCliente.severidad.ERROR)
                {
                    throw new Exception($"{soapResponse.BGBAResultadoOperacion.Codigo} {soapResponse.BGBAResultadoOperacion.Descripcion}");
                }

                return(true);
            }
            catch (Exception e)
            {
                isError = true;
                throw new Exception("Error adding the client", e);
            }
            finally
            {
                this.Communicator_TraceHandler(this,
                                               new TraceEventArgs
                {
                    Description = "Add client in NV.",
                    ElapsedTime = service.ElapsedTime,
                    ForceDebug  = false,
                    IsError     = isError,
                    Request     = service.Request,
                    Response    = service.Response,
                    URL         = url
                });
            }
        }
Exemplo n.º 2
0
        public async Task <bool> GetClientNV(Models.N.Client.ClientData client)
        {
            var service = new HttpRequestFactory();
            var isError = false;
            var url     = _configuration["GetClient:Url"];

            BUS.ConsultaCliente.BuscarClientePorDatosBasicosRequest request = null;
            try
            {
                request = new BUS.ConsultaCliente.BuscarClientePorDatosBasicosRequest
                {
                    BGBAHeader = await _objectFactory.InstantiateFromJsonFile <BUS.ConsultaCliente.BGBAHeader>(_configuration["GetClient:BGBAHeader"]),
                    Datos      = _mapper.Map <Models.N.Client.ClientData, BUS.ConsultaCliente.Datos>(client)
                };
            }
            catch (Exception e)
            {
                throw new Exception("Error generating the request", e);
            }

            try
            {
                var response = await service.Post(url, new SoapJsonContent(request, _configuration["GetClient:Operation"]), _cert);

                dynamic soapResponse = JsonConvert.DeserializeObject <dynamic>(
                    JsonConvert.SerializeObject(
                        JObject.Parse(response.ContentAsString())
                        .SelectToken("..BuscarClientePorDatosBasicosResponse")));

                if (soapResponse.BGBAResultadoOperacion.Severidad == BUS.ConsultaCliente.severidad.ERROR)
                {
                    throw new Exception($"{soapResponse.BGBAResultadoOperacion.Codigo} {soapResponse.BGBAResultadoOperacion.Descripcion}");
                }

                try
                {
                    if (soapResponse.Datos.Personas == null)
                    {
                        return(false);
                    }
                }
                catch (RuntimeBinderException)
                {
                    return(false);
                }

                dynamic person;

                if ((soapResponse as dynamic).Datos.Personas.Persona.Type == JTokenType.Array)
                {
                    JArray array = ((JArray)soapResponse.Datos.Personas.Persona);

                    person = array.FirstOrDefault(p => client.Sex.ToUpper().StartsWith(p["PersonaFisica"]["Sexo"].ToString().ToUpper()) &&
                                                  (client.LastName.ToUpper().Contains(p["PersonaFisica"]["NombrePersona"]["Apellido"].ToString().ToUpper()) ||
                                                   p["PersonaFisica"]["NombrePersona"]["Apellido"].ToString().ToUpper().Contains(client.LastName.ToUpper())));

                    if (person == null)
                    {
                        return(false);
                    }
                }
                else
                {
                    person = soapResponse.Datos.Personas.Persona;
                }

                client.HostId = person.PersonaFisica.DatosPersonaComunes.IdPersona.ToString();

                if (person.PersonaFisica.DatosPersonaComunes.Domicilio != null)
                {
                    var address = new Address
                    {
                        PostalCode          = person.PersonaFisica.DatosPersonaComunes.Domicilio.CodigoPostal.ToString(),
                        LocalityDescription = person.PersonaFisica.DatosPersonaComunes.Domicilio.NombreLocalidad.ToString(),
                        Street = person.PersonaFisica.DatosPersonaComunes.Domicilio.Calle.ToString(),
                        Number = person.PersonaFisica.DatosPersonaComunes.Domicilio.NumeroPuerta.ToString()
                    };

                    client.Addresses.Add(address);
                }

                return(true);
            }
            catch (Exception e)
            {
                isError = true;
                throw new Exception("Error getting the client", e);
            }
            finally
            {
                this.Communicator_TraceHandler(this,
                                               new TraceEventArgs
                {
                    Description = "Get client from NV.",
                    ElapsedTime = service.ElapsedTime,
                    ForceDebug  = false,
                    IsError     = isError,
                    Request     = service.Request,
                    Response    = service.Response,
                    URL         = url
                });
            }
        }