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 }); } }
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); }
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 }); } }