Esempio n. 1
0
        /// <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);
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }