예제 #1
0
        public async Task SetSerieDirectorsGenresCastsListAsync(Serie serie, SerieCreationDTO serieCreationDTO)
        {
            serie.Genres = await ListGenres(serieCreationDTO);

            serie.Directors = await ListDirectors(serieCreationDTO);

            serie.Countries = await ListCountries(serieCreationDTO);
        }
예제 #2
0
        public async Task <ActionResult> PostSerie([FromForm] SerieCreationDTO serieCreationDTO)
        {
            var exists = await _seriesService.CheckImdbIdAsync(serieCreationDTO.ImdbId);

            if (exists == 1)
            {
                return(BadRequest($"ImdbId {serieCreationDTO.ImdbId} already exists."));
            }

            var serieDTO = await _seriesService.AddSerieAsync(serieCreationDTO);

            return(new CreatedAtRouteResult("getSerie", new { Id = serieDTO.Id }, serieDTO));
        }
예제 #3
0
        public async Task <SerieDTO> AddSerieAsync(SerieCreationDTO serieCreationDTO)
        {
            var serie = _mapper.Map <Serie>(serieCreationDTO);

            if (serieCreationDTO.Picture != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await serieCreationDTO.Picture.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(serieCreationDTO.Picture.FileName);
                    serie.Picture =
                        await _fileStorageService.SaveFile(content, extension, _containerName,
                                                           serieCreationDTO.Picture.ContentType);
                }
            }

            if (serieCreationDTO.BannerImage != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await serieCreationDTO.BannerImage.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(serieCreationDTO.BannerImage.FileName);
                    serie.BannerImage =
                        await _fileStorageService.SaveFile(content, extension, _containerName,
                                                           serieCreationDTO.BannerImage.ContentType);
                }
            }

            this.AnnotateCastsOrder(serie);
            await SetSerieDirectorsGenresCastsListAsync(serie, serieCreationDTO);
            await AddCategoryToPerson(serie);

            _dbContext.Add(serie);
            try
            {
                await _dbContext.SaveChangesAsync();

                _logger.LogInfo($"Serie with ID {serie.Id} was added successfully.");
                await SetSerieRatingsAsync(serie);
            }
            catch (Exception ex)
            {
                _logger.LogWarn($"Failed to add serie {serie.Id}. Exception: {ex}");
            }

            return(_mapper.Map <SerieDTO>(serie));
        }
예제 #4
0
        private async Task <List <Country> > ListCountries(SerieCreationDTO serieCreationDTO)
        {
            if (serieCreationDTO.CountriesId == null)
            {
                return(null);
            }

            var result = new List <Country>();

            foreach (var id in serieCreationDTO.CountriesId)
            {
                result.Add(await _dbContext.Countries.FirstOrDefaultAsync(x => x.Id == id));
            }
            return(result);
        }
예제 #5
0
        private async Task <List <Person> > ListDirectors(SerieCreationDTO serieCreationDTO)
        {
            if (serieCreationDTO.DirectorsId == null)
            {
                return(null);
            }

            var result = new List <Person>();

            foreach (var id in serieCreationDTO.DirectorsId)
            {
                result.Add(await _dbContext.People.FirstOrDefaultAsync(x => x.Id == id));
            }
            return(result);
        }
예제 #6
0
        public async Task <ActionResult> PutSerie(int id, [FromForm] SerieCreationDTO serieCreationDTO)
        {
            var result = await _seriesService.UpdateSerieAsync(id, serieCreationDTO);

            if (result == -1)
            {
                return(NotFound());
            }
            else if (result == 0)
            {
                return(BadRequest("Failed to save changes."));
            }

            return(NoContent());
        }
예제 #7
0
        private async Task <List <Genre> > ListGenres(SerieCreationDTO serieCreationDTO)
        {
            if (serieCreationDTO.GenresId == null)
            {
                return(null);
            }

            var result = new List <Genre>();
            var genres = await _dbContext.Genres.ToListAsync();

            foreach (var id in serieCreationDTO.GenresId)
            {
                result.Add(genres.FirstOrDefault(x => x.Id == id));
            }
            return(result);
        }
예제 #8
0
        public async Task <int> UpdateSerieAsync(int id, SerieCreationDTO serieCreationDTO)
        {
            var serie = await _dbContext.Series.FirstOrDefaultAsync(m => m.Id == id);

            if (serie == null)
            {
                _logger.LogWarn($"Serie with ID {id} was not found.");
                return(-1);
            }

            serie = _mapper.Map(serieCreationDTO, serie);

            if (serieCreationDTO.Picture != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await serieCreationDTO.Picture.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(serieCreationDTO.Picture.FileName);
                    serie.Picture =
                        await _fileStorageService.EditFile(content, extension, _containerName,
                                                           serie.Picture,
                                                           serieCreationDTO.Picture.ContentType);
                }
            }

            if (serieCreationDTO.BannerImage != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    await serieCreationDTO.BannerImage.CopyToAsync(memoryStream);

                    var content   = memoryStream.ToArray();
                    var extension = Path.GetExtension(serieCreationDTO.BannerImage.FileName);
                    serie.BannerImage =
                        await _fileStorageService.EditFile(content, extension, _containerName,
                                                           serie.BannerImage,
                                                           serieCreationDTO.BannerImage.ContentType);
                }
            }

            await _dbContext.Database.ExecuteSqlInterpolatedAsync($@"
                                    DELETE FROM SeriesCasts WHERE SerieId = {serie.Id};
                                    DELETE FROM SeriePerson WHERE SerieId = {serie.Id};
                                    DELETE FROM CountrySerie WHERE SerieId = {serie.Id};
                                    DELETE FROM GenreSerie WHERE SerieId = {serie.Id};
                                    ");

            this.AnnotateCastsOrder(serie);
            await AddCategoryToPerson(serie);
            await SetSerieDirectorsGenresCastsListAsync(serie, serieCreationDTO);

            try
            {
                await _dbContext.SaveChangesAsync();

                _logger.LogInfo($"Serie with ID {id} was updated successfully.");
                await SetSerieRatingsAsync(serie);

                return(1);
            }
            catch (Exception ex)
            {
                _logger.LogWarn($"Failed to update serie with ID {id}. Exception: {ex}");
                return(0);
            }
        }