Exemple #1
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);
                }
            }
        }
        private void RentVideo(User user)
        {
            Console.Write("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($"Already rented {movie.Title} please return it first!");
                }

                //var listOfRentedMoviesIds = user.RentedMovies.Select(rental => rental.Movie.Id).ToList();
                //if (listOfRentedMoviesIds.Contains(movieId))
                //{
                //    throw new Exception($"Already rented {movie.Title} please return it first!");
                //}

                if (!movie.IsAvailable)
                {
                    throw new Exception($"Movie {movie.Title} is not aviable 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.Spinner();
                movie.Quantity--;
                if (movie.Quantity == 0)
                {
                    movie.IsAvailable = !movie.IsAvailable;
                }
                user.RentedMovies.Add(new RentalInfo(movie));
                Console.WriteLine("Succesfully rented movie");
                Thread.Sleep(2000);
            }
            else
            {
                throw new Exception($"No movie was found with {movieId} id!");
            }
        }