예제 #1
0
        public string All()
        {
            var checker = new SiteChecker();
            var cinemas = checker.GetCinemas();

            return(_formatter.GetResultsTable(cinemas).ToString());
        }
예제 #2
0
        public string Execute(CommandOption fetchScope, CommandOption sortOrder, CommandOption period)
        {
            FetchScope scope = FetchScope.All;

            if (fetchScope.HasValue())
            {
                switch (fetchScope.Value().ToUpperInvariant())
                {
                case "MINE":
                    scope = FetchScope.Mine;
                    break;

                case "ALL":
                    break;

                default:
                    Console.WriteLine($"Fetch value {fetchScope.Value()} couldn't be parsed - fetching all");
                    scope = FetchScope.All;
                    break;
                }
            }
            string[] cinemasToCheck = null;
            if (scope == FetchScope.Mine)
            {
                cinemasToCheck = new SettingsReader().GetCinemas();
            }

            SortOrder sort = SortOrder.Date;

            if (sortOrder.HasValue())
            {
                switch (sortOrder.Value().ToUpperInvariant())
                {
                case "D":
                    sort = SortOrder.Date;
                    break;

                case "F":
                    sort = SortOrder.Film;
                    break;

                case "C":
                    sort = SortOrder.Cinema;
                    break;

                default:
                    Console.WriteLine($"Sort value {sortOrder.Value()} couldn't be parsed - sorting by Date");
                    sort = SortOrder.Date;
                    break;
                }
            }
            Period periodToFetch = Period.All;

            if (period.HasValue())
            {
                switch (period.Value().ToUpperInvariant())
                {
                case "T":
                    periodToFetch = Period.Today;
                    break;

                case "M":
                    periodToFetch = Period.Tomorrow;
                    break;

                default:
                    Console.WriteLine($"Period value {period.Value()} couldn't be parsed - fetching all");
                    periodToFetch = Period.All;
                    break;
                }
            }
            var checker = new SiteChecker();
            var result  = checker.GetShowings(cinemasToCheck);

            result = result.SortThisBy(sort);
            result = result.JustThisPeriod(periodToFetch);

            var formatter = new ResultsFormatter();
            var toPrint   = formatter.GetResultsTable(result);

            return(toPrint.ToString());
            //Console.WriteLine(toPrint);

            //Console.ReadLine();
            //return 0;
        }