/// <summary> /// Creates a new empty film list with a generated name. /// </summary> /// <returns></returns> public async Task <Domain.FilmList> CreateFilmList() { var filmListTemplate = new Persistence.FilmListTemplate() { Name = $"New List - {DateTimeOffset.UtcNow.Date.ToShortDateString()}", CreatedDateTime = DateTimeOffset.UtcNow }; await filmListerContext.FilmListTemplates.AddAsync(filmListTemplate); await filmListerContext.SaveChangesAsync(); var domain = await RetrieveFilmListById(filmListTemplate.Id); return(domain); }
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); }
/// <summary> /// Clones a film list from another list. The new list will /// be unpublished, so it can be editted. /// </summary> /// <returns></returns> public async Task <Domain.FilmList> CloneFilmList(int filmListId) { var persistenceList = await filmListerContext.FilmListTemplates .Include(l => l.FilmListItems) .ThenInclude(f => f.Film) .FirstOrDefaultAsync(l => l.Id == filmListId); if (persistenceList == null) { throw new ListNotFoundException(filmListId); } var clonedFilmListItems = persistenceList.FilmListItems?.Select(fli => { return(new FilmListItem { Film = fli.Film }); }) .ToList(); var clonedFilmListTemplate = new Persistence.FilmListTemplate() { Name = $"{persistenceList.Name} copy - {DateTimeOffset.UtcNow.Date.ToShortDateString()}", Published = false, FilmListItems = clonedFilmListItems, CreatedDateTime = DateTimeOffset.UtcNow }; await filmListerContext.FilmListTemplates.AddAsync(clonedFilmListTemplate); await filmListerContext.SaveChangesAsync(); var domain = await RetrieveFilmListById(clonedFilmListTemplate.Id); return(domain); }