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"); }
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.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"); } }
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); } }
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); } }
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(); } } }
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; } } }