/// <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); }
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); }
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); }