Ejemplo n.º 1
0
        /// <summary>
        /// Adds a film to the film list.
        /// </summary>
        /// <param name="filmList"></param>
        /// <param name="film"></param>
        /// <exception cref="FilmAlreadyInFilmListTemplateException">Occurs when the given film is already in the list.</exception>
        /// <returns></returns>
        public async Task <Domain.FilmList> AddFilmToFilmList(Domain.FilmList filmList, Domain.Film film)
        {
            var persistenceList = await filmListerContext.FilmListTemplates.FirstAsync(l => l.Id == filmList.Id);

            if (persistenceList.FilmListItems == null)
            {
                persistenceList.FilmListItems = new List <FilmListItem>();
            }
            if (persistenceList.FilmListItems.Any(item => item.Film.Id == film.Id))
            {
                throw new FilmAlreadyInFilmListTemplateException(film.Id, filmList.Id);
            }
            if (persistenceList.Published)
            {
                throw new FilmListTemplatePublishedException(filmList.Id);
            }

            var persistenceFilm = await filmListerContext.Films.FirstAsync(l => l.Id == film.Id);

            persistenceList.FilmListItems.Add(new FilmListItem
            {
                Film             = persistenceFilm,
                FilmListTemplate = persistenceList
            });
            await filmListerContext.SaveChangesAsync();

            var list = await RetrieveFilmListById(persistenceList.Id);

            return(list);
        }
Ejemplo n.º 2
0
        public Models.FilmList Map(Domain.FilmList filmListTemplate)
        {
            var model = new Models.FilmList
            {
                Id        = filmListTemplate.Id,
                Name      = filmListTemplate.Name,
                Films     = filmListTemplate.Films.Select(f => filmMapper.Map(f)).ToArray(),
                Published = filmListTemplate.Published
            };

            return(model);
        }
Ejemplo n.º 3
0
        private Domain.FilmList Map(Persistence.FilmListTemplate orderedFilmList)
        {
            List <Domain.Film> films = new List <Domain.Film>();

            if (orderedFilmList?.FilmListItems != null)
            {
                films.AddRange(orderedFilmList.FilmListItems.Select(f => Map(f.Film)));
            }
            var filmList = new Domain.FilmList(
                orderedFilmList.Id,
                orderedFilmList.Name,
                films.ToArray(),
                orderedFilmList.Published);

            return(filmList);
        }