Advertisement
sangueroots

ConsumoApiViaCep

Oct 8th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.77 KB | None | 0 0
  1. public class Customer
  2.     {
  3.         public Customer() {
  4.             DateCreated = DateTime.Now;
  5.         }
  6.  
  7.         public int Id { get;  set; }
  8.         public int AddressId { get;  set; }
  9.         public string Name { get;  set; }
  10.         public DateTime DateCreated { get;  set; }
  11.  
  12.         public Address Address { get;  set; }
  13.     }
  14.    
  15.    
  16. public class Address
  17.     {
  18.         public Address()
  19.         {
  20.             Customers = new List<Customer>();
  21.         }
  22.  
  23.         public Address(string cep)
  24.         {
  25.             CEP = cep;
  26.         }
  27.  
  28.         public int Id { get;  set; }
  29.         public string CEP { get; set; }
  30.  
  31.         public IEnumerable<Customer> Customers { get; set; }
  32.     }
  33.    
  34. public class CustomerAddressViewModel
  35.     {
  36.         public CustomerAddressViewModel()
  37.         {
  38.             Address = new AddressViewModel();
  39.         }
  40.  
  41.         public int Id { get; set; }
  42.         public int AddressId { get; set; }
  43.         public string Name { get; set; }
  44.         public DateTime DateCreated { get; set; }
  45.         public string CEP { get; set; }
  46.         public AddressViewModel Address { get; set; }
  47.     }
  48.    
  49. public class CustomerViewModel
  50.     {
  51.         public CustomerViewModel() { }
  52.  
  53.         public int Id { get; set; }
  54.         public int AddressId { get; set; }
  55.         public string Name { get; set; }
  56.         public DateTime DateCreated { get; set; }
  57.         public AddressViewModel Address { get; set; }
  58.     }
  59.    
  60. public class AddressViewModel
  61.     {
  62.         public AddressViewModel()
  63.         {
  64.             Customers = new List<CustomerViewModel>();
  65.             Street = "";
  66.             StreetFull = "";
  67.             UF = "";
  68.         }
  69.  
  70.         public int Id { get; set; }
  71.         public string CEP { get; set; }
  72.         public string Street { get; set; }
  73.         public string StreetFull { get; set; }
  74.         public string UF { get; set; }
  75.  
  76.         public IEnumerable<CustomerViewModel> Customers{get; set;}
  77.     }
  78.    
  79.     [DataContract(Name = "endereco")]
  80.     public class ViaCEP
  81.     {
  82.         public ViaCEP(string cep, string street, string streetFull, string uf)
  83.         {
  84.             CEP = cep;
  85.             Street = street;
  86.             StreetFull = streetFull;
  87.             UF = uf;
  88.         }
  89.  
  90.         [DataMember(Name = "cep")]
  91.         public string CEP { get; set; }
  92.         [DataMember(Name = "logradouro")]
  93.         public string Street { get; set; }
  94.         [DataMember(Name = "complemento")]
  95.         public string StreetFull { get; set; }
  96.         [DataMember(Name = "uf")]
  97.         public string UF { get; set; }
  98.     }
  99.    
  100. public class ViaCEPService
  101.     {
  102.         private readonly HttpClient _httpClient;
  103.  
  104.         public ViaCEPService()
  105.         {
  106.             _httpClient = new HttpClient();
  107.         }
  108.  
  109.         public async Task<ViaCEP> GetByCEPAsync(string cep)
  110.         {
  111.             using (var http = new HttpClient())
  112.             {                
  113.                 var url = new Uri($"https://viacep.com.br/ws/{cep}/json");
  114.                 var result = http.GetAsync(url).GetAwaiter().GetResult();
  115.                 var resultContent = result.Content.ReadAsStringAsync().GetAwaiter().GetResult();
  116.                
  117.                 return JsonConvert.DeserializeObject<ViaCEP>(resultContent);
  118.             }
  119.         }
  120.     }
  121.  
  122.    
  123. public class CustomerService
  124. {
  125.     public IEnumerable<Customer> _customerData;
  126.     public IEnumerable<Address> _addressData;
  127.    
  128.     public CustomerService()
  129.         {
  130.             _addressData = new List<Address>()
  131.                 {
  132.                     new Address{ CEP = "17052520", Id = 1, Customers = new List<Customer>{ new Customer{Id = 1}}},
  133.                     new Address{ CEP = "44573100", Id = 2, Customers = new List<Customer>{ new Customer{Id = 2}}},
  134.                     new Address{ CEP = "50080490", Id = 3, Customers = new List<Customer>{ new Customer{Id = 3}}}
  135.                 };
  136.  
  137.             _customerData = new List<Customer>()
  138.                 {
  139.                     new Customer{ Id = 1, AddressId = 1, Name = "Zier Zuveiku", Address = _addressData.FirstOrDefault(x => x.Id.Equals(1))},
  140.                     new Customer{ Id = 2, AddressId = 2, Name = "Vikehel Pleamakh", Address = _addressData.FirstOrDefault(x => x.Id.Equals(2))},
  141.                     new Customer{ Id = 3, AddressId = 3, Name = "Diuor PleaBolosmakh", Address = _addressData.FirstOrDefault(x => x.Id.Equals(3))}
  142.                 };
  143.         }
  144.        
  145.     public IEnumerable<Address> GetAddress() => _addressData.ToList();
  146.     public IEnumerable<Customer> GetCustomers() => _customerData.ToList();
  147.    
  148.        
  149.     public async Task<IEnumerable<CustomerAddressViewModel>> GetAllAsync()
  150.         {
  151.        
  152.             var _viaCEPService = new ViaCEPService();
  153.        
  154.             var customers = _customerData.Select(x => new CustomerAddressViewModel {
  155.                 Id = x.Id,
  156.                 AddressId = x.AddressId,
  157.                 Name = x.Name,
  158.                 DateCreated = x.DateCreated,
  159.                 CEP = x.Address?.CEP,
  160.                 Address = new AddressViewModel{
  161.                     Id = x.Address.Id,
  162.                     CEP = x.Address.CEP,
  163.                 }
  164.             }).ToList();
  165.  
  166.             foreach (var customer in customers)
  167.             {
  168.                 var address = await _viaCEPService.GetByCEPAsync(customer.CEP);
  169.  
  170.                 customer.Address.Id = customer.AddressId;
  171.                 customer.Address.Street = address?.Street;
  172.                 customer.Address.StreetFull = address?.StreetFull;
  173.                 customer.Address.UF = address?.UF;
  174.             }
  175.  
  176.             return customers;
  177.         }
  178. }
  179. void Main()
  180. {
  181.     var service = new CustomerService();
  182.     var viacepservice = new ViaCEPService();
  183.     Console.WriteLine(service.GetAllAsync());
  184.     //Console.WriteLine(service.GetAddress());
  185.     //Console.WriteLine(service.GetCustomers());
  186.     //Console.WriteLine(viacepservice.GetByCEPAsync("50080490"));
  187. }
  188.  
  189. // Define other methods and classes here
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement