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