/// <summary> /// Método captura a lista Breeds da API TheCatAPI e armazena na base de dados /// juntamente com as imagens encontradas para cada Breeds /// </summary> /// <returns></returns> public async Task CapureAllBreedsWithImages() { // Captura uma lista de Breeds a partir da API TheCatAPI var breedsList = await theCatAPI.GetBreeds(); // Para cada Breeds encontrado, armazena na base de dados foreach (var breeds in breedsList) { // Verifica se Breeds já existe na base de dados, se não existir, armazena var breedsInDB = await breedsRepository.GetBreeds(breeds.Id); if (breedsInDB == null) { breedsInDB = new Breeds(breeds.Id, breeds.Name); breedsInDB.SetOrigin(breeds.Origin); breedsInDB.SetTemperament(breeds.Temperament); breedsInDB.SetDescription(breeds.Description); await breedsRepository.AddBreeds(breedsInDB); } // Econtra as imagens do registro Breeds atual, caso exista, armazena as imagens na base de dados var imagesList = await theCatAPI.GetImagesByBreeds(breeds.Id); if (imagesList != null && imagesList.Count > 0) { foreach (var image in imagesList) { // Verifica se Image existe. Se não, cria o objeto // A variável: imageExists, é para fazer o tratamento se Add ou Update // pois chamando este métodos, a tabela associativa será gravada, caso // a imagem não tenha existido anteriormente. var imageInDB = await imageUrlRepository.GetImageUrl(image.Id); var imageExists = imageInDB != null; if (!imageExists) { imageInDB = new ImageUrl(image.Id, image.Url); imageInDB.SetWidth(image.Width); imageInDB.SetHeight(image.Height); } imageInDB.SetBreeds(breedsInDB); if (!imageExists) { await imageUrlRepository.AddImageUrl(imageInDB); } else { await imageUrlRepository.UpdateImageUrl(imageInDB); } } } } }
/// <summary> /// Garante que existirá pelo menos um registro na tabela, para que os testes de get sejam executados /// Este método relaciona as informações de Breeds e Category, apesar das informações não serem /// obrigatórias na tabela /// </summary> /// <returns></returns> async Task AddImageUrl() { var imageUrlInDB = await imageUrlRepository.GetImageUrl(imageUrlBase.ImageUrlId); if (imageUrlInDB == null) { await imageUrlRepository.AddImageUrl(imageUrlBase); } else { imageUrlInDB.SetUrl(imageUrlBase.Url); imageUrlInDB.SetWidth(imageUrlBase.Width); imageUrlInDB.SetHeight(imageUrlBase.Height); imageUrlInDB.SetBreeds(breedsBase); imageUrlInDB.SetCategory(categoryBase); await imageUrlRepository.UpdateImageUrl(imageUrlInDB); } }