public async Task SetSerieDirectorsGenresCastsListAsync(Serie serie, SerieCreationDTO serieCreationDTO) { serie.Genres = await ListGenres(serieCreationDTO); serie.Directors = await ListDirectors(serieCreationDTO); serie.Countries = await ListCountries(serieCreationDTO); }
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)); }
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)); }
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); }
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); }
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()); }
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); }
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); } }