예제 #1
0
        public void UpdateQueryResults(ComicQuery query)
        {
            Title = query.Title;

            switch (query.Title)
            {
            case "LINQ ułatwia zapytania": LinqMakesQueriesEasy(); break;

            case "Drogie komiksy": ExpensiveComics(); break;

            case "LINQ jest wszechstronne 1": LinqIsVersatile1(); break;

            case "LINQ jest wszechstronne 2": LinqIsVersatile2(); break;

            case "LINQ jest wszechstronne 3": LinqIsVersatile3(); break;

            case "Grupuj komiksy według zakresu cen":
                CombineJimmysValuesIntoGroups();
                break;

            case "Połącz zakupy z cenami":
                JoinPurchasesWithPrices();
                break;

            case "Wszystkie komiksy w kolekcji": AllComics(); break;
            }
        }
        public IEnumerable <Comic> GetComics(ComicQuery Query)
        {
            bool             ByEpisode = false;
            List <EpisodeEf> Episodes  = new List <EpisodeEf>();

            if (Query.EpisodeNumber > 0)
            {
                ByEpisode = true;
            }
            else if (Query.Date != new DateTime(0))
            {
                ByEpisode = false;
            }

            // Daily or Weekly limit
            if (Query.Type.Equals("weekly", StringComparison.InvariantCultureIgnoreCase))
            {
                if (ByEpisode)
                {
                    Episodes = EpisodeContext.Episodes
                               .Include(x => x.Chapter)
                               .Include(x => x.Ratings)
                               .Where(x => x.EpisodeNumber >= Query.EpisodeNumber && x.EpisodeNumber < (Query.EpisodeNumber + 7))
                               .OrderBy(x => x.EpisodeNumber).ThenBy(x => x.EpisodeSubNumber)
                               .ToList();
                }
                else
                {
                    Episodes = EpisodeContext.Episodes
                               .Include(x => x.Chapter)
                               .Include(x => x.Ratings)
                               .Where(x => x.EpisodeDate >= Query.Date.Date && x.EpisodeDate < Query.Date.AddDays(7).Date)
                               .OrderBy(x => x.EpisodeNumber).ThenBy(x => x.EpisodeSubNumber)
                               .ToList();
                }
            }
            else
            {
                if (ByEpisode)
                {
                    Episodes = EpisodeContext.Episodes
                               .Include(x => x.Chapter)
                               .Include(x => x.Ratings)
                               .Where(x => x.EpisodeNumber >= Query.EpisodeNumber && x.EpisodeNumber < (Query.EpisodeNumber + 1))
                               .OrderBy(x => x.EpisodeNumber).ThenBy(x => x.EpisodeSubNumber)
                               .ToList();
                }
                else
                {
                    Episodes = EpisodeContext.Episodes
                               .Include(x => x.Chapter)
                               .Include(x => x.Ratings)
                               .Where(x => x.EpisodeDate >= Query.Date.Date && x.EpisodeDate < Query.Date.AddDays(1).Date)
                               .OrderBy(x => x.EpisodeNumber).ThenBy(x => x.EpisodeSubNumber)
                               .ToList();
                }
            }


            return(Episodes
                   .Select(x => new Comic()
            {
                Date = x.EpisodeDate,
                Chapter = x.Chapter.ChapterTitle,
                Commentary = (Query.IncludeCommentary ? x.EpisodeCommentary : null),
                EpisodeNumber = x.EpisodeNumber,
                EpisodeSubNumber = x.EpisodeSubNumber,
                ImageUrl = x.EpisodeFileUrl,
                Title = x.EpisodeTitle,
                IsAnimated = x.EpisodeIsAnimation,
                AverageRating = (x.Ratings.Count > 0 ? x.Ratings.Average(x => x.EpisodeRatingValue) : 0)
            }));
        }