Exemplo n.º 1
0
        public async Task <bool> UpdateClientNV(string idHost, Models.N.Location.Address address, string email, Models.N.Client.Phone phone)
        {
            var service = new HttpRequestFactory();
            var isError = false;
            var url     = _configuration["UpdateClient:Url"];

            try
            {
                var request = new BUS.AdministracionCliente.ModificarClienteRequest()
                {
                    BGBAHeader = await _objectFactory.InstantiateFromJsonFile <BUS.AdministracionCliente.BGBAHeader>(_configuration["UpdateClient:BGBAHeader"]),
                    Datos      = new BUS.AdministracionCliente.ModificarClienteRequestDatos(),
                };

                var item = new BUS.AdministracionCliente.ModificarPersonaFisica
                {
                    ParametrizacionFisica = new BUS.AdministracionCliente.ParametrizacionFisica(),
                    IdPersona             = Convert.ToUInt64(idHost),
                };


                if (address != null)
                {
                    item.Domicilio = _mapper.Map <Models.N.Location.Address, BUS.AdministracionCliente.Domicilio1>(address);
                    item.ParametrizacionFisica.ActualizarFisicaDatosDomicilio          = true;
                    item.ParametrizacionFisica.ActualizarFisicaDatosDomicilioSpecified = true;
                }

                if (!String.IsNullOrEmpty(email))
                {
                    item.Email = email;
                    item.ParametrizacionFisica.ActualizarFisicaDatosEmail          = true;
                    item.ParametrizacionFisica.ActualizarFisicaDatosEmailSpecified = true;
                }

                if (phone != null)
                {
                    item.Telefonos = new BUS.AdministracionCliente.telefonoBasico1[]
                    {
                        new BUS.AdministracionCliente.telefonoBasico1
                        {
                            Basico = new BUS.AdministracionCliente.telefonoBasicoRespuestaNV1 {
                                celular    = phone.IsCellphone.ToString().ToLower(),
                                CodigoArea = phone.AreaNumber,
                                Numero     = phone.Number
                            }
                        }
                    };
                    item.ParametrizacionFisica.ActualizarFisicaDatosTelefono          = true;
                    item.ParametrizacionFisica.ActualizarFisicaDatosTelefonoSpecified = true;
                }

                request.Datos.Item = item;

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

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

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

                return(true);
            }
            catch (Exception e)
            {
                isError = true;
                throw new Exception("Error getting the client", e);
            }
            finally
            {
                this.Communicator_TraceHandler(this,
                                               new TraceEventArgs
                {
                    Description = "Update 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 <Models.N.Location.Address> NormalizeAddressByPlaceId(GoogleMapsAddress mapAddress, MapOptions options)
        {
            var firstCoincidence = mapAddress.Results.FirstOrDefault().AddressComponents;
            var address          = new Models.N.Location.Address();

            address.LocalityDescription = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.LOCALITY_SUBLOCALITY.Contains(t)))?.ShortName;
            address.Number = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.STREET_NUMBER.Contains(t)))?.LongName;
            address.Street = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.STREET.Contains(t)))?.LongName;

            var provinces = await _tableHelper.GetProvincesAsync();

            var provinceName = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.PROVINCE.Contains(t)))?.ShortName.RemoveDiacritics();

            if (provinceName == "CABA")
            {
                provinceName = "CAPITAL FEDERAL";
                address.LocalityDescription = "CIUDAD AUTONOMA BUENOS AI";
            }

            address.Province = provinces.FirstOrDefault(p => p.Name.ToLower() == provinceName.ToLower());

            var country = firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.COUNTRY.Contains(t)))?.LongName;

            address.Country = (await _tableHelper.GetCountriesAsync()).FirstOrDefault(c => c.Description.ToLower() == country.ToLower());

            var cpGoogle = $"{firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.POSTAL_CODE.Contains(t)))?.LongName}{firstCoincidence.FirstOrDefault(a => a.Types.Any(t => BGBA.Models.N.Location.GoogleMapsAddress.POSTAL_CODE_SUFFIX.Contains(t)))?.LongName}";

            if (!string.IsNullOrEmpty(cpGoogle) && cpGoogle.Length < 8)
            {
                cpGoogle = Regex.Replace(cpGoogle, "[a-z]*", "", RegexOptions.IgnoreCase).Trim();

                if (cpGoogle.Length == 4)
                {
                    address.PostalCode = cpGoogle;
                }
            }
            else if (!string.IsNullOrEmpty(cpGoogle) && cpGoogle.Length == 8)
            {
                address.PostalCode = cpGoogle;
            }
            else if (string.IsNullOrWhiteSpace(address.PostalCode))
            {
                var cps = await _tableHelper.GetLocalitiesByProvinceWithCPAsync(address.Province);

                var localityCP = cps.Where(l => l.Name == address.LocalityDescription || l.Name.Contains(address.LocalityDescription) || address.LocalityDescription.Contains(l.Name)).ToList();
                if (localityCP.Count > 0)
                {
                    address.PostalCodeOcurrencies = localityCP.Select(c => c.PostalCode).ToList();
                }
                else
                {
                    address.PostalCodeOcurrencies = cps.Select(c => c.PostalCode).ToList();
                }
            }

            address.Location = mapAddress.Results.FirstOrDefault()?.Geometry.Location;

            options.Address = address;
            address.UrlMap  = GetUrlMap(options);

            return(address);
        }
Exemplo n.º 3
0
        public async Task <Address> GetAddressNV(string idHost)
        {
            var service = new HttpRequestFactory();
            var isError = false;
            var url     = _configuration["GetClientByIdHost:Url"];

            BUS.ConsultaCliente.ObtenerClienteRequest request = null;
            try
            {
                request = new BUS.ConsultaCliente.ObtenerClienteRequest
                {
                    BGBAHeader = await _objectFactory.InstantiateFromJsonFile <BUS.ConsultaCliente.BGBAHeader>(_configuration["GetClientByIdHost:BGBAHeader"]),
                    Datos      = new BUS.ConsultaCliente.ObtenerClienteRequestDatos
                    {
                        IdPersona        = Convert.ToUInt64(idHost),
                        DatosSolicitados = new BUS.ConsultaCliente.ObtenerClienteRequestDatosDatosSolicitados
                        {
                            SolicitudDatosPersona = new BUS.ConsultaCliente.SolicitudDatosPersona
                            {
                                SolicitaDatosDomicilio     = true,
                                SolicitaDatosEmail         = true,
                                SolicitaDatosPosesionEmail = true,
                                SolicitaDatosTelefono      = true
                            }
                        }
                    }
                };
            }
            catch (Exception e)
            {
                throw new Exception("Error generating the request", e);
            }

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

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

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

                dynamic s = soapResponse.PersonaFisica;

                var result = new Models.N.Location.Address
                {
                    Default = true,
                    Country = new Models.N.Location.Country
                    {
                        Code        = s.Domicilio.Direccion.CodigoPais,
                        Description = s.Domicilio.Direccion.DescripcionPais
                    },
                    FlatNumber = s.Domicilio.Direccion.Departamento,
                    Floor      = s.Domicilio.Direccion.Piso,
                    Location   = new Models.N.Location.Location
                    {
                        Latitude  = s.Domicilio.Direccion.Latitud,
                        Longitude = s.Domicilio.Direccion.Longitud
                    },
                    LocalityDescription = s.Domicilio.Direccion.NombreLocalidad,
                    Number     = s.Domicilio.Direccion.NumeroPuerta,
                    PostalCode = s.Domicilio.Direccion.CodigoPostal.ToString(),
                    Province   = new Models.N.Location.Province
                    {
                        Code = s.Domicilio.Direccion.CodigoProvincia,
                        Name = s.Domicilio.Direccion.DescripcionProvincia
                    },
                    Street      = s.Domicilio.Direccion.Calle,
                    AddressType = BGBA.Models.N.Afip.AfipProfiler.RealAddress
                };

                return(result);
            }
            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
                });
            }
        }