コード例 #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);
                        }
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Método captura lista de Category, conforme os nomes definicos em AppSettings
        /// e a seguir, encontra 3 Image para cada e armazena na base de dados
        /// </summary>
        /// <returns></returns>
        public async Task CaptureImagesByCategory()
        {
            // Captura uma lista de Category da API TheCatAPI, em seguida filtra a lista
            // conforme os nomes definidos no AppSettings
            var categoryList = await theCatAPI.GetCategories();

            categoryList = categoryList.Where(x => appSettings.TheCatSettings.ImageCategoryFilter.Contains(x.Name)).ToList();
            // Para cada Category encontrado, armazena na base de dados
            foreach (var category in categoryList)
            {
                // Verifica se Category já existe na base de dados, se não existir, armazena
                var categoryInDB = await categoryRepository.GetCategory(category.Id);

                if (categoryInDB == null)
                {
                    categoryInDB = new Category(category.Id, category.Name);
                    await categoryRepository.AddCategory(categoryInDB);
                }
                // Econtra as imagens do registro Breeds atual, caso exista, armazena as imagens na base de dados
                var imagesList = await theCatAPI.GetImagesByCategory(category.Id, 3);

                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.SetCategory(categoryInDB);
                        if (!imageExists)
                        {
                            await imageUrlRepository.AddImageUrl(imageInDB);
                        }
                        else
                        {
                            await imageUrlRepository.UpdateImageUrl(imageInDB);
                        }
                    }
                }
            }
        }
コード例 #3
0
        public async Task CapureAllBreedsWithImages()
        {
            var breedsList = await theCatAPI.GetBreeds();

            foreach (var breeds in breedsList)
            {
                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);
                }
                var imagesList = await theCatAPI.GetImagesByBreeds(breeds.Id);

                if (imagesList != null && imagesList.Count > 0)
                {
                    foreach (var image in imagesList)
                    {
                        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);
                        }
                    }
                }
            }
        }
コード例 #4
0
        public async Task CaptureImagesByCategory()
        {
            var categoryList = await theCatAPI.GetCategories();

            categoryList = categoryList.Where(x => appSettings.TheCatSettings.ImageCategoryFilter.Contains(x.Name)).ToList();
            foreach (var category in categoryList)
            {
                var categoryInDB = await categoryRepository.GetCategory(category.Id);

                if (categoryInDB == null)
                {
                    categoryInDB = new Category(category.Id, category.Name);
                    await categoryRepository.AddCategory(categoryInDB);
                }
                var imagesList = await theCatAPI.GetImagesByCategory(category.Id, 3);

                if (imagesList != null && imagesList.Count > 0)
                {
                    foreach (var image in imagesList)
                    {
                        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.SetCategory(categoryInDB);
                        if (!imageExists)
                        {
                            await imageUrlRepository.AddImageUrl(imageInDB);
                        }
                        else
                        {
                            await imageUrlRepository.UpdateImageUrl(imageInDB);
                        }
                    }
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// Construtor utilizado para instanciar as classes que serão testadas
        /// </summary>
        public RepositoriesTest()
        {
            appConfiguration = new AppConfiguration();
            var contextDB = new TheCatDBContext(appConfiguration);

            breedsBase = new Breeds("abys", "Abyssinian");
            breedsBase.SetOrigin("Egypt");
            breedsBase.SetTemperament("Active, Energetic, Independent, Intelligent, Gentle");
            breedsBase.SetDescription("The Abyssinian is easy to care for, and a joy to have in your home. They’re affectionate cats and love both people and other animals.");

            categoryBase = new Category(1, "hats");

            imageUrlBase = new ImageUrl("393", "https://cdn2.thecatapi.com/images/393.jpg");
            imageUrlBase.SetWidth(1024);
            imageUrlBase.SetHeight(654);
            imageUrlBase.SetBreeds(breedsBase);
            imageUrlBase.SetCategory(categoryBase);

            imageUrlRepository = new ImageUrlRepository(contextDB);
            breedsRepository   = new BreedsRepository(contextDB, imageUrlRepository);
            categoryRepository = new CategoryRepository(contextDB);
            logEventRepository = new LogEventRepository(contextDB);
        }