Пример #1
0
        private void ReturnMovie(User user)
        {
            if (user.RentedMovies.Count == 0)
            {
                throw new Exception("You do not have any rented videos.");
            }

            Console.WriteLine("Enter movie id in order to return a video");
            var movieId = InputParser.ToInteger(1, int.MaxValue);

            var rental = user.RentedMovies.FirstOrDefault(_rental => _rental.Movie.Id == movieId);

            LoadingHelpers.ShowSimplePercentage();
            if (rental != null)
            {
                rental.DateReturned = DateTime.Now;
                var movie = _movieRepository.GetMovieById(movieId);
                if (movie.Quantity == 0)
                {
                    movie.IsAvailable = !movie.IsAvailable;
                }
                movie.Quantity += 1;

                user.RentedMovies.Remove(rental);
                user.RentedMoviesHistory.Add(rental);

                Console.WriteLine("Successfuly returned.");
                Thread.Sleep(2000);
                return;
            }

            throw new Exception("You do not have that movie rented. Please enter valid movie id");
        }
Пример #2
0
        public User LogIn()
        {
            while (true)
            {
                Console.WriteLine("Enter card id number: ");
                var idCard = InputParser.ToInteger(100, 999);

                var user = _userRepository.GetUserByIdCard(idCard);
                LoadingHelpers.Spinner();

                if (user != null)
                {
                    Console.WriteLine($"Welcome {user.FullName}");
                    return(user);
                }
                Console.WriteLine("User card id does not exist");
                Console.WriteLine("Try again y/n");
                if (!InputParser.ToConfirm())
                {
                    Console.WriteLine("Thank you for using rent a video app");
                    Thread.Sleep(3000);
                    Environment.Exit(0);
                }
            }
        }
Пример #3
0
        private void RentVideo(User user)
        {
            Console.WriteLine("Enter movie id:");
            var movieId = InputParser.ToInteger(_movierepository.GetAllMovies()
                                                .Min(_movie => _movie.Id),
                                                _movierepository.GetAllMovies()
                                                .Max(_movie => _movie.Id)
                                                );
            var movie = _movierepository.GetMovieById(movieId);



            if (movie != null)
            {
                if (user.RentedMovies.Any(rental => rental.Movie.Id == movieId))
                {
                    throw new Exception($"You have aleady rented this movie {movie.Title}");
                }

                var listofrentedmovieids = user.RentedMovies
                                           .Select(rental => rental.Movie.Id)
                                           .ToList();
                if (listofrentedmovieids.Contains(movieId))
                {
                    throw new Exception($"You have aleady rented this movie {movie.Title}");
                }


                if (!movie.IsAviable)
                {
                    throw new Exception($"Movie { movie.Title }  is not avaiable at the moment");
                }

                Console.WriteLine($"Are you sure you want to rent {movie.Title}? y/n");
                bool confirm = InputParser.ToConfirm();
                if (!confirm)
                {
                    return;
                }
                Console.WriteLine("Renting movie please wait...");
                LoadingHelpers.Spiner();
                movie.Quantity--;
                if (movie.Quantity == 0)
                {
                    movie.IsAviable = !movie.IsAviable;
                }
                user.RentedMovies.Add(new RentalInfo(movie));
                Console.WriteLine($"Successfully rented movie {movie.Title}");
                Thread.Sleep(2000);
            }
            else
            {
                throw new Exception($" No movie was found with {movieId} id");
            }
        }
Пример #4
0
        public void AddNewVideo()
        {
            Console.WriteLine("Enter a title of a movie:");
            string title = Console.ReadLine();

            Console.WriteLine("Enter a Genre - 1, 2 or 3:");
            var genre = InputParser.ToGenre();

            Console.WriteLine("Enter a Id:");
            int id = InputParser.ToInteger(18, 30);

            Console.WriteLine("Enter a laungage:");
            string language = Console.ReadLine();

            Console.WriteLine("Enter release date:");
            var releaseDate = InputParser.ToDateTime();

            Console.WriteLine("Enter a Length of a movie:");
            var length = InputParser.ToInteger(20, 300);

            Console.WriteLine("Enter a Age Restriction:");
            var ageRestriction = InputParser.ToInteger(8, 18);

            Console.WriteLine("Enter a Quantity:");
            var quantity    = InputParser.ToInteger(0, 100);
            var isAvailable = true;

            if (quantity == 0)
            {
                isAvailable = false;
            }
            var movie = new Movie
            {
                Title          = title,
                AgeRestriction = ageRestriction,
                Genre          = genre,
                Id             = id,
                Language       = language,
                ReleaseDate    = releaseDate,
                Length         = length,
                IsAvailable    = isAvailable,
                Quantity       = quantity
            };

            Console.WriteLine("Adding movie, please wait...");
            LoadingHelpers.Spiner();
            var movies = _movieRepository.GetAllMovies();

            movies.Add(movie);

            Console.WriteLine($"You Have succesfully added new Movie: {movie.Title}");
        }
        public Movie AddMovieByAdmin()
        {
            while (true)
            {
                Console.WriteLine("Enter Title");
                var title = Console.ReadLine();
                Console.WriteLine("Enter age restriction:");
                var agerestriction = InputParser.ToInteger(12, 20);
                Console.WriteLine("Enter Genre");
                var genre = InputParser.ToGenre();
                Console.WriteLine("Enter if its available: true/false");
                var isavaible = bool.Parse(Console.ReadLine());
                Console.WriteLine("Enter language:");
                string language = Console.ReadLine();
                Console.WriteLine("Enter length");
                var length = InputParser.ToInteger(60, 300);
                Console.WriteLine("Enter quantity");
                var quantity = InputParser.ToInteger(1, 20);
                Console.WriteLine("Is it a premier");
                var premier = bool.Parse(Console.ReadLine());
                Console.WriteLine("And finally enter realse date");
                DateTime relasedate = InputParser.ToDateTime();


                Console.WriteLine("Adding movie please wait:....");
                LoadingHelpers.Spiner();



                var movie = new Movie
                {
                    Title          = title,
                    AgeRestriction = agerestriction,
                    Genre          = genre,
                    IsAviable      = isavaible,
                    Language       = language,
                    Length         = length,
                    Quantity       = quantity,
                    isapremier     = premier,
                    ReleaseDate    = relasedate
                };

                var movies = _movieRepository.GetAllMovies();
                movies.Add(movie);
                Console.WriteLine($"\rSuccesfully added {movie.Title} to the list");
                return(movie);
            }
        }
Пример #6
0
        public User SignUp()
        {
            while (true)
            {
                Console.WriteLine("Enter full name: ");
                string name = Console.ReadLine();
                Console.WriteLine("Enter date of birth");
                DateTime dob     = InputParser.ToDateTime();
                int      cardNum = GenerateNewCardNumber();

                Console.WriteLine("Creating user please wait");
                LoadingHelpers.ShowSimplePercentage();

                var user = new User
                {
                    CardNumber  = cardNum,
                    FullName    = name,
                    DateOfBirth = dob
                };
                Console.WriteLine($"\rWelcome {user.FullName} CardNumber{user.CardNumber}");
                return(user);
            }
        }
        public Movie RemoveMovieByAdmin()
        {
            while (true)
            {
                Console.WriteLine("Enter movie id:");
                var movieId = InputParser.ToInteger(1, 35);
                var movie   = _movieRepository.GetMovieById(movieId);
                var movies  = _movieRepository.GetAllMovies();


                if (!movie.IsAviable)
                {
                    throw new Exception($"Movie  is not avaiable at the moment");
                }

                Console.WriteLine($"Are you sure you want to delete the movie? {movie.Title}y/n");
                bool confirm = InputParser.ToConfirm();
                Console.WriteLine("Deleting movie please wait...");
                LoadingHelpers.Spiner();
                movies.Remove(movie);
                Console.WriteLine($"You have deleted succesfully {movie.Title}");
                return(null);
            }
        }
Пример #8
0
        static void Main(string[] args)
        {
            Console.Title = "Video Rental Store";



            var  _userService  = new UserService();
            var  _movieService = new MovieService();
            var  _adminService = new AdminService();
            User user          = null;

            string errorMessage = string.Empty;

            Screen.HomeScreen();

            bool isLoggedIn = false;

            while (!isLoggedIn)
            {
                Screen.StartMenu();
                var startMenuInput = InputParser.ToInteger(1, 4);
                switch (startMenuInput)
                {
                case
                    1:// login as admin
                    while (!isLoggedIn)
                    {
                        user = _adminService.LoginAsAdmin();

                        isLoggedIn = !isLoggedIn;
                    }
                    break;

                case 2:     //log in as user
                    while (!isLoggedIn)
                    {
                        user = _userService.Login();

                        isLoggedIn = !isLoggedIn;
                    }
                    break;

                case 3:     //sign up
                    while (!isLoggedIn)
                    {
                        user       = _userService.SignUp();
                        isLoggedIn = !isLoggedIn;
                    }

                    break;

                case 4:     // exit application
                    Environment.Exit(0);
                    break;
                }
                Console.ReadLine();
            }

            if (!user.isAdmin)
            {
                while (true)
                {
                    Screen.ClearScreen();
                    Screen.ErrorMessage(errorMessage);
                    errorMessage = string.Empty;
                    if (user.IsSubscriptionExpired)
                    {
                        Console.WriteLine("\nYour Subscription has expired and you won't be able to use the app,would you like to renew Subscription y/n ");
                        var readline = Console.ReadLine();
                        LoadingHelpers.Spiner();
                        if (readline == "y")
                        {
                            var renewed = user.SubscriptionRenwed = DateTime.Now;
                            user.IsSubscriptionExpired = !user.IsSubscriptionExpired;

                            Console.WriteLine($"\nThank you {user.FullName} your subscription has been renewed {renewed}!");
                        }
                        else
                        {
                            Console.WriteLine("Please renew your subscription if you want to continue using this app,Thank you!");
                            Thread.Sleep(3000);
                            break;
                        }
                    }

                    Screen.MainMenu(user.FullName);
                    var selection = InputParser.ToInteger(1, 5);
                    switch (selection)
                    {
                    case 1:
                        _movieService.ViewMovieList(user);
                        break;


                    case 2:
                        _movieService.ViewRentedVideos(user);
                        break;


                    case 3:
                        try
                        {
                            _movieService.ViewRentedHistoryVideos(user);
                        }
                        catch (Exception ex)
                        {
                            errorMessage = ex.Message;
                        }
                        break;


                    case 4:
                        _movieService.ViewSpeicalOffers(user);
                        break;

                    case 5:
                        Console.WriteLine("Thank you for using rent a video app");
                        Thread.Sleep(3000);
                        Environment.Exit(0);
                        break;
                    }
                }
            }

            else
            {
                while (true)
                {
                    Screen.ClearScreen();
                    Screen.ErrorMessage(errorMessage);
                    errorMessage = string.Empty;
                    Screen.MainMenuforAdmin(user.FullName);
                    var selection = InputParser.ToInteger(1, 5);
                    switch (selection)
                    {
                    case 1:    //view movies
                        _adminService.ViewMovieListAsAdmin(user);

                        break;

                    case 2:    // add movie
                        _adminService.AddMovieByAdmin();

                        //add movie
                        break;


                    case 3:     // view users
                        _adminService.ViewUsersListAsAdmin(user);
                        break;


                    case 4:    // remove movie
                        _adminService.RemoveMovieByAdmin();
                        break;

                    case 5:     //exit
                        Console.WriteLine("Your work day is over, hope you had fun, see you tomorrow :)");
                        Thread.Sleep(3000);
                        Environment.Exit(0);
                        break;
                    }

                    Console.ReadLine();
                }
            }
        }
Пример #9
0
        public void ViewSpeicalOffers(User user)
        {
            string errorMessage = string.Empty;
            bool   isgoing      = false;

            Screen.SpecialOffers();

            while (!isgoing)
            {
                var specialoffers = InputParser.ToInteger(1, 2);
                Screen.ClearScreen();
                switch (specialoffers)
                {
                case 1:
                    Console.WriteLine("\nChoose what kind of discount you would like ");
                    var read           = InputParser.ToDiscount();
                    var discountmovies = _movierepository.GetMoviesWithDiscount(read);
                    LoadingHelpers.Spiner();
                    Screen.ClearScreen();
                    PrintMoviesInfo(discountmovies);
                    Console.WriteLine("\n1.Rent a movie from our special limited offer");
                    Console.WriteLine("2 Go back");
                    var readline = InputParser.ToInteger(1, 2);
                    switch (readline)
                    {
                    case 1:
                        RentVideo(user);
                        isgoing = !isgoing;
                        break;

                    case 2:
                        isgoing = !isgoing;
                        break;
                    }

                    break;

                case 2:
                    var premiers = _movierepository.GetMoviesifPremier();
                    LoadingHelpers.Spiner();
                    Screen.ClearScreen();
                    PrintMoviesInfo(premiers);
                    Console.WriteLine("1.Rent a movie from our special limited offer");
                    Console.WriteLine("2 Go back");
                    var readlines = InputParser.ToInteger(1, 2);

                    switch (readlines)
                    {
                    case 1:
                        RentVideo(user);
                        isgoing = !isgoing;
                        break;

                    case 2:
                        isgoing = !isgoing;
                        break;
                    }
                    break;
                }
            }
        }