示例#1
0
        /// <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);
        }
示例#2
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);
        }
示例#3
0
        /// <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);
        }