private Pais GetCountryInDatabase(CountryBaseRequest filterInput) { return(_context.Paises .Include(ct => ct.Eletricidade) .Include(ct => ct.Eletricidade.Frequencias) .Include(ct => ct.Eletricidade.Voltagens) .Include(ct => ct.Eletricidade.PlugsTomadas) .Include(ct => ct.Linguagens) .Include(ct => ct.Localizacao) .Include(ct => ct.Localizacao.PaisesVizinhos) .Include(ct => ct.Moeda) .Include(ct => ct.Telefone) .Include(ct => ct.Vacina) .FirstOrDefault(ct => ct.Nome == filterInput.CountryName || ct.SiglaPais2Digitos == filterInput.CountryIso2)); }
public Task <PaisView> Get(CountryBaseRequest filterInput) { if (string.IsNullOrEmpty(filterInput.CountryIso2) && string.IsNullOrEmpty(filterInput.CountryName)) { return(null); } // Treat request filterInput.CountryIso2 = filterInput.CountryIso2?.Trim(); filterInput.CountryName = filterInput.CountryName?.Trim(); // Faz a requisição ao Banco var dataBaseCountry = GetCountryInDatabase(filterInput); // Caso não exista ou esteja desatualizado, atualize no banco if (dataBaseCountry == null || DatabaseConfig.IsCountryNotUpdated(dataBaseCountry.CreationTime, dataBaseCountry.LastTimeUpdated)) { // Envia para a camada de tratamento através do padrão Observable _bus.Send(new UpdateCountryEvent(filterInput.CountryName, filterInput.CountryIso2)).Wait(); dataBaseCountry = GetCountryInDatabase(filterInput); } // Retorna para o FrontEnd o resultado var countryMapped = _mapper.Map <PaisView>(dataBaseCountry); return(Task.FromResult(countryMapped)); }