Example #1
0
        /// <summary>
        /// Creates a new list for ordering. Returns ID of the list.
        /// </summary>
        /// <param name="filmListId"></param>
        /// <returns></returns>
        public async Task <int> CreateFilmRankFromFilmList(int filmListId)
        {
            var filmListTemplate = await RetrieveFilmListById(filmListId);

            var persistenceListTemplate = await filmListerContext.FilmListTemplates
                                          .Include(l => l.FilmListItems)
                                          .ThenInclude(i => i.Film)
                                          .FirstAsync(l => l.Id == filmListId);

            var films = persistenceListTemplate.FilmListItems.Select(i => new Persistence.OrderedFilm()
            {
                Film = i.Film
            })
                        .RandomiseOrder()
                        .ToList();
            var filmList = new Persistence.OrderedList()
            {
                OrderedFilms     = films,
                FilmListTemplate = persistenceListTemplate,
                StartDateTime    = DateTimeOffset.UtcNow
            };

            await filmListerContext.OrderedLists.AddAsync(filmList);

            await filmListerContext.SaveChangesAsync();

            return(filmList.Id);
        }
Example #2
0
        private Domain.OrderedFilmRank Map(Persistence.OrderedList orderedFilmList)
        {
            var films = new List <Domain.OrderedFilm>();

            if (orderedFilmList?.OrderedFilms != null)
            {
                var mapping = orderedFilmList.OrderedFilms.ToDictionary(k => k, v => Map(v));
                foreach (var kv in mapping.Where(m => m.Key.LesserRankedFilmItems != null))
                {
                    foreach (var greater in kv.Key.LesserRankedFilmItems)
                    {
                        var domain = mapping[greater.GreaterRankedFilm];
                        kv.Value.AddHigherRankedObject(domain);
                        domain.AddLesserRankedFilm(kv.Value);
                    }
                }

                films.AddRange(mapping.Values);
            }

            var filmList = new Domain.OrderedFilmRank(
                orderedFilmList.Id,
                orderedFilmList.Completed,
                films,
                new Domain.OrderedFilm[0],
                null,
                null,
                0);

            return(filmList);
        }