Пример #1
0
        private void HandleFilms(WatchlistForUpdateDto src, Watchlist dest)
        {
            // remove films
            var filmsToRemove = dest.Films
                                .Where(x => !src.Films.Select(x => x.FilmId).Contains(x.FilmId)).ToList();

            foreach (var filmToRemove in filmsToRemove)
            {
                dest.Films.Remove(filmToRemove);
            }

            // update films
            foreach (var film in dest.Films.Where(x => src.Films.Select(x => x.FilmId).Contains(x.FilmId)))
            {
                var filmFromRequest = src.Films.FirstOrDefault(x => x.FilmId == film.FilmId);

                if (filmFromRequest != null)
                {
                    film.Sequence  = filmFromRequest.Sequence;
                    film.IsWatched = filmFromRequest.IsWatched;
                }
            }

            // add films
            var filmsToAdd = src.Films.Where(f => !dest.Films.Any(x => x.FilmId == f.FilmId)).ToList()
                             .Select(x => new FilmWatchlist {
                Sequence = x.Sequence, FilmId = x.FilmId, IsWatched = x.IsWatched
            });

            foreach (var filmToAdd in filmsToAdd)
            {
                dest.Films.Add(filmToAdd);
            }
        }
Пример #2
0
        public async Task <IActionResult> Update(int id, WatchlistForUpdateDto watchlistForUpdate)
        {
            await _watchlistValidatorService.ValidateForUpdate(id, watchlistForUpdate);

            var watchlist = await _watchlistService.Update(id, watchlistForUpdate);

            return(Ok(watchlist));
        }
Пример #3
0
        public async Task <WatchlistForDetailedDto> Update(int id, WatchlistForUpdateDto watchlistForUpdate)
        {
            var watchlist = await _uow.Repository <Domain.Entities.Watchlist>().FindOneAsync(new WatchlistWithFilmsSpecification(id));

            _mapper.Map(watchlistForUpdate, watchlist);

            await _uow.SaveAsync();

            return(await GetOne(watchlist.Id));
        }
        public async Task ValidateForUpdate(int id, WatchlistForUpdateDto watchlistForUpdate)
        {
            Validate(watchlistForUpdate);

            var watchlist = await _uow.Repository <Domain.Entities.Watchlist>().FindByIdAsync(id);

            if (watchlist == null)
            {
                throw new NotFoundException(nameof(Domain.Entities.Watchlist));
            }

            if (_currentUserService.UserId != watchlist.UserId)
            {
                throw new ForbiddenException();
            }

            ValidateSequence(watchlistForUpdate.Films.Select(x => x.Sequence).ToList());

            await ValidateFilmIds(watchlistForUpdate.Films.Select(x => x.FilmId).ToList());

            ThrowValidationErrorsIfNotEmpty();
        }