Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Customer
- {
- public Customer() {
- DateCreated = DateTime.Now;
- }
- public int Id { get; set; }
- public int AddressId { get; set; }
- public string Name { get; set; }
- public DateTime DateCreated { get; set; }
- public Address Address { get; set; }
- }
- public class Address
- {
- public Address()
- {
- Customers = new List<Customer>();
- }
- public Address(string cep)
- {
- CEP = cep;
- }
- public int Id { get; set; }
- public string CEP { get; set; }
- public IEnumerable<Customer> Customers { get; set; }
- }
- public class CustomerAddressViewModel
- {
- public CustomerAddressViewModel()
- {
- Address = new AddressViewModel();
- }
- public int Id { get; set; }
- public int AddressId { get; set; }
- public string Name { get; set; }
- public DateTime DateCreated { get; set; }
- public string CEP { get; set; }
- public AddressViewModel Address { get; set; }
- }
- public class CustomerViewModel
- {
- public CustomerViewModel() { }
- public int Id { get; set; }
- public int AddressId { get; set; }
- public string Name { get; set; }
- public DateTime DateCreated { get; set; }
- public AddressViewModel Address { get; set; }
- }
- public class AddressViewModel
- {
- public AddressViewModel()
- {
- Customers = new List<CustomerViewModel>();
- Street = "";
- StreetFull = "";
- UF = "";
- }
- public int Id { get; set; }
- public string CEP { get; set; }
- public string Street { get; set; }
- public string StreetFull { get; set; }
- public string UF { get; set; }
- public IEnumerable<CustomerViewModel> Customers{get; set;}
- }
- [DataContract(Name = "endereco")]
- public class ViaCEP
- {
- public ViaCEP(string cep, string street, string streetFull, string uf)
- {
- CEP = cep;
- Street = street;
- StreetFull = streetFull;
- UF = uf;
- }
- [DataMember(Name = "cep")]
- public string CEP { get; set; }
- [DataMember(Name = "logradouro")]
- public string Street { get; set; }
- [DataMember(Name = "complemento")]
- public string StreetFull { get; set; }
- [DataMember(Name = "uf")]
- public string UF { get; set; }
- }
- public class ViaCEPService
- {
- private readonly HttpClient _httpClient;
- public ViaCEPService()
- {
- _httpClient = new HttpClient();
- }
- public async Task<ViaCEP> GetByCEPAsync(string cep)
- {
- using (var http = new HttpClient())
- {
- var url = new Uri($"https://viacep.com.br/ws/{cep}/json");
- var result = http.GetAsync(url).GetAwaiter().GetResult();
- var resultContent = result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
- return JsonConvert.DeserializeObject<ViaCEP>(resultContent);
- }
- }
- }
- public class CustomerService
- {
- public IEnumerable<Customer> _customerData;
- public IEnumerable<Address> _addressData;
- public CustomerService()
- {
- _addressData = new List<Address>()
- {
- new Address{ CEP = "17052520", Id = 1, Customers = new List<Customer>{ new Customer{Id = 1}}},
- new Address{ CEP = "44573100", Id = 2, Customers = new List<Customer>{ new Customer{Id = 2}}},
- new Address{ CEP = "50080490", Id = 3, Customers = new List<Customer>{ new Customer{Id = 3}}}
- };
- _customerData = new List<Customer>()
- {
- new Customer{ Id = 1, AddressId = 1, Name = "Zier Zuveiku", Address = _addressData.FirstOrDefault(x => x.Id.Equals(1))},
- new Customer{ Id = 2, AddressId = 2, Name = "Vikehel Pleamakh", Address = _addressData.FirstOrDefault(x => x.Id.Equals(2))},
- new Customer{ Id = 3, AddressId = 3, Name = "Diuor PleaBolosmakh", Address = _addressData.FirstOrDefault(x => x.Id.Equals(3))}
- };
- }
- public IEnumerable<Address> GetAddress() => _addressData.ToList();
- public IEnumerable<Customer> GetCustomers() => _customerData.ToList();
- public async Task<IEnumerable<CustomerAddressViewModel>> GetAllAsync()
- {
- var _viaCEPService = new ViaCEPService();
- var customers = _customerData.Select(x => new CustomerAddressViewModel {
- Id = x.Id,
- AddressId = x.AddressId,
- Name = x.Name,
- DateCreated = x.DateCreated,
- CEP = x.Address?.CEP,
- Address = new AddressViewModel{
- Id = x.Address.Id,
- CEP = x.Address.CEP,
- }
- }).ToList();
- foreach (var customer in customers)
- {
- var address = await _viaCEPService.GetByCEPAsync(customer.CEP);
- customer.Address.Id = customer.AddressId;
- customer.Address.Street = address?.Street;
- customer.Address.StreetFull = address?.StreetFull;
- customer.Address.UF = address?.UF;
- }
- return customers;
- }
- }
- void Main()
- {
- var service = new CustomerService();
- var viacepservice = new ViaCEPService();
- Console.WriteLine(service.GetAllAsync());
- //Console.WriteLine(service.GetAddress());
- //Console.WriteLine(service.GetCustomers());
- //Console.WriteLine(viacepservice.GetByCEPAsync("50080490"));
- }
- // Define other methods and classes here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement