private int SelectCinemaHall()
 {
     return((int)attempt.Run(() => {
         Display.CinemaHall();
         Console.Write("Select a cinema hall: ");
         return Utility.TryConvertingStringToInt(Console.ReadLine());
     },
                             obj => {
         return ((int)obj <= Program.cinemaHallList.Count);
     }));
 }
예제 #2
0
        private Movie GetMovie()
        {
            return(Program.movieList[(int)attempt.Run(() => {
                Display.Movies();

                Console.Write("\nEnter a movie number to review movie: ");
                return Utility.TryConvertingStringToInt(Console.ReadLine());
            },
                                                      obj => {
                return ((int)obj <= Program.movieList.Count && (int)obj > 0);
            }) - 1]);
        }
예제 #3
0
 public SeniorCitizen(Screening screening, OptionAttempt attempt) : base(screening)
 {
     YearOfBirth = ((DateTime)attempt.Run(() => {
         Console.Write("Please enter year of birth [YYYY]: ");
         return(Utility.TryConvertingStringToDateTime(Console.ReadLine()));
     },
                                          obj => {
         return(DateTime.Today.Year - 55 >= ((DateTime)obj).Year);
     })).Year;
 }
예제 #4
0
 public Adult(Screening screening, OptionAttempt attempt) : base(screening)
 {
     PopcornOffer = attempt.Run(() => {
         Console.Write("Would you like to buy a popcorn set for $3.00 [Y/N]: ");
         return(Console.ReadLine().ToUpper());
     },
                                obj => {
         return(obj.Equals("Y") ||
                obj.Equals("N"));
     }).Equals("Y") ? true : false;
 }
예제 #5
0
        public static int Movie(OptionAttempt attempt)
        {
            return((int)attempt.Run(() => {
                Display.Movies();

                Console.Write("Select a movie: ");
                return Utility.TryConvertingStringToInt(Console.ReadLine());
            },
                                    obj => {
                return ((int)obj <= Program.movieList.Count && (int)obj > 0);
            }));
        }
예제 #6
0
 public Student(Screening screening, OptionAttempt attempt) : base(screening)
 {
     LevelOfStudy = (String)attempt.Run(() => {
         Console.Write("Please enter level of study [Primary/Secondary/Tertiary]: ");
         return(Console.ReadLine().ToUpper());
     },
                                        obj => {
         return(obj.Equals("PRIMARY") ||
                obj.Equals("SECONDARY") ||
                obj.Equals("TERTIARY"));
     });
 }
        private Screening SelectSession(int movieIndex)
        {
            int sessionIndex = (int)attempt.Run(() => {
                Console.WriteLine(String.Format("\n{0, -5} {1,-20} {2,-15} {3, -25} {4, -20}",
                                                "No", "Location", "Type", "Date/Time", "Seats Remaining"));
                foreach (Screening screening in Program.screeningList)
                {
                    if (screening.Movie == Program.movieList[movieIndex])
                    {
                        Console.WriteLine(String.Format("{0, -5} {1,-20} {2,-15} {3, -25} {4, -20}",
                                                        screening.ScreeningNo, screening.CinemaHall.Name, screening.ScreeningType,
                                                        screening.ScreeningDateTime.ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture),
                                                        screening.SeatsRemaining));
                    }
                }
                Console.Write("Select a session: ");
                return(Utility.TryConvertingStringToInt(Console.ReadLine()));
            },
                                                obj => {
                List <int> correctList = new List <int>();
                foreach (Screening screening in Program.screeningList)
                {
                    if (screening.Movie == Program.movieList[movieIndex])
                    {
                        correctList.Add(Int32.Parse(screening.ScreeningNo));
                    }
                }
                return(correctList.Contains((int)obj));
            });

            foreach (Screening screening in Program.screeningList)
            {
                if (screening.ScreeningNo.Equals(sessionIndex.ToString()))
                {
                    return(screening);
                }
            }
            return(null); // Should never return null
        }
        private void DeleteScreening()
        {
            attempt.Run(() => {
                Display.movieScreening();

                Console.Write("Enter a screening number to delete: ");
                int numberToDelete = Utility.TryConvertingStringToInt(Console.ReadLine());

                if (numberToDelete > 0)
                {
                    foreach (Screening screening in Program.screeningList)
                    {
                        if (Int32.Parse(screening.ScreeningNo) == numberToDelete)
                        {
                            Program.screeningList.Remove(screening);
                            Console.WriteLine("\nScreening deleted.");
                            return(true); // Return true since the operation is a success
                        }
                    }
                }
                return(false); // Return false since the operation is a failure
            });
        }
예제 #9
0
        private void GetUserPreference()
        {
            Random random = new Random();
            Movie  movie1 = null;
            Movie  movie2 = null;
            int    option = 0;

            Console.WriteLine("\nWe want to know you better!");

            foreach (MovieGenre genre in Enum.GetValues(typeof(MovieGenre)))
            {
                numberOfTimesCalled.Add(genre, 1);
            }

            for (int i = 1; i <= Program.NO_MOVIE_ASKED; i++)
            {
                movie1 = safeForUser[random.Next(0, safeForUser.Count)];
                for (int j = 0; j < 3; j++)
                {
                    movie2 = safeForUser[random.Next(0, safeForUser.Count)];
                    if (movie1 != movie2)
                    {
                        break;
                    }
                }

                attempt.Run(() => {
                    Console.WriteLine("\nTell us which movie you would prefer to watch! [" + i + "/" +
                                      Program.NO_MOVIE_ASKED + "]");
                    Console.WriteLine("1) " + movie1.Title);
                    Console.WriteLine("2) " + movie2.Title);
                    Console.WriteLine("3) I don't know");

                    Console.Write("Enter your option: ");
                    option = Utility.TryConvertingStringToInt(Console.ReadLine());
                    if (option == 1 || option == 2 || option == 3)
                    {
                        return(true);
                    }
                    return(false);
                });

                switch (option)
                {
                case 1:
                    SetUserPreference(movie1);
                    break;

                case 2:
                    SetUserPreference(movie2);
                    break;

                default:
                    break;
                }
            }

            // To ensure fairness
            foreach (MovieGenre genre in Enum.GetValues(typeof(MovieGenre)))
            {
                member.GenreLikings[genre] /= numberOfTimesCalled[genre];
            }
        }