/// <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 /// </summary> /// <returns></returns> async Task AddBreeds() { var breedsInDB = await breedsRepository.GetBreeds(breedsBase.BreedsId); if (breedsInDB == null) { await breedsRepository.AddBreeds(breedsBase); } else { breedsInDB.SetName(breedsBase.Name); breedsInDB.SetOrigin(breedsBase.Origin); breedsInDB.SetTemperament(breedsBase.Temperament); breedsInDB.SetDescription(breedsBase.Description); await breedsRepository.UpdateBreeds(breedsInDB); } }