static void Main(string[] args) { Seed(); while (true) { if (_currentUser == null) { int loginChoice = _uiService.LogInMenu(); if (loginChoice == 1) { int roleChoice = _uiService.RoleMenu(); UserRole role = (UserRole)roleChoice; Console.Clear(); Console.WriteLine("Enter UserName:"******"Enter password:"******"Enter first name:"); newUser.FirstName = Console.ReadLine(); Console.WriteLine("Enter last name:"); newUser.LastName = Console.ReadLine(); Console.WriteLine("Enter UserName:"******"Enter password:"******"Train": int trainChoice = 1; if (_currentUser.Role == UserRole.Premium) { trainChoice = _uiService.TrainMenu(); } if (trainChoice == 1) { int trainingItem = _uiService.TrainMenuItems(_videoTrainingService.GetTrainings()); VideoTraining training = _videoTrainingService.GetTrainings()[trainingItem - 1]; Console.WriteLine(training.Title); Console.WriteLine($"Link: {training.Link}"); Console.WriteLine($"Raiting: {training.CheckRating()}"); Console.ReadLine(); } if (trainChoice == 2) { int trainingItem = _uiService.TrainMenuItems(_liveTrainingService.GetTrainings()); LiveTraining training = _liveTrainingService.GetTrainings()[trainingItem - 1]; Console.WriteLine(training.Title); Console.WriteLine($"THE TRAINING STARTS AT: {training.NextSession}"); Console.WriteLine($"Raiting: {training.CheckRating()}"); Console.ReadLine(); } break; case "Upgrade to premium": _uiService.UpgradeToPremium(); break; case "Reschedule training": List <LiveTraining> trainings = _liveTrainingService.GetTrainings().Where(x => x.Trainer.Id == _currentUser.Id).ToList(); if (trainings.Count == 0) { Console.WriteLine("No Trainings!"); Console.ReadLine(); } else { int trainingChoice = _uiService.ChooseEntitiesMenu(trainings); Console.WriteLine("How many days do you want to reschedule the training:"); int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 100); _trainerUserService.GetById(_currentUser.Id).ChangeSchedule(trainings[trainingChoice - 1], days); Console.WriteLine("Schedule changed!"); Console.ReadLine(); } break; case "Account": int accountChoice = _uiService.AccountMenu(_currentUser.Role); Console.Clear(); if (accountChoice == 1) { // Change Info Console.WriteLine("Enter new First Name:"); string firstName = Console.ReadLine(); Console.WriteLine("Enter new Last Name:"); string lastName = Console.ReadLine(); switch (_currentUser.Role) { case UserRole.Standard: _standardUserService.ChangeInfo(_currentUser.Id, firstName, lastName); break; case UserRole.Premium: _premiumUserService.ChangePassword(_currentUser.Id, firstName, lastName); break; case UserRole.Trainer: _trainerUserService.ChangePassword(_currentUser.Id, firstName, lastName); break; } } else if (accountChoice == 2) { // Check Subscription Console.WriteLine($"Your subscription is: {_currentUser.Role}"); Console.ReadLine(); } else if (accountChoice == 3) { // Change info Console.WriteLine("Enter old password:"******"Enter new password:"******"Log out": _currentUser = null; break; default: break; } } }
static void Main(string[] args) { Seed(); while (true) { //login/register if (_currentUser == null) { int loginChoice = _uiService.LogInMenu(); //login if (loginChoice == 1) { int roleChoice = _uiService.RoleMenu(); UserRole role = (UserRole)roleChoice; Console.Clear(); Console.WriteLine("Enter Username:"******"Enter Password:"******"Enter First Name:"); newUser.FirstName = Console.ReadLine(); Console.WriteLine("Enter Last Name:"); newUser.LastName = Console.ReadLine(); Console.WriteLine("Enter Username:"******"Enter Password:"******"Train": //int trainChoice; //if (_currentUser.Role == UserRole.Premium) //{ // trainChoice = _uiService.TrainMenu(); //} //else //{ // trainChoice = 1; //} int trainChoice = _currentUser.Role == UserRole.Premium ? _uiService.TrainMenu() : 1; //video training if (trainChoice == 1) { int trainingItem = _uiService.TrainMenuItems(_videoTrainingService.GetTrainings()); VideoTraining training = _videoTrainingService.GetTrainingByIndex(trainingItem - 1); Console.WriteLine(training.Title); Console.WriteLine($"Link: {training.Link}"); Console.WriteLine($"Raiting: {training.Rating}"); Console.WriteLine($"Time: {training.Time} minutes"); Console.ReadLine(); } //live training if (trainChoice == 2) { int trainingItem = _uiService.TrainMenuItems(_liveTrainingService.GetTrainings()); LiveTraining training = _liveTrainingService.GetTrainingByIndex(trainingItem - 1); Console.WriteLine(training.Title); Console.WriteLine($"The training starts at: {training.NextSession}"); Console.WriteLine($"Raiting: {training.Rating}"); Console.WriteLine($"Time: {training.Time} minutes"); Console.ReadLine(); } break; case "Upgrade to premium": //suggestion for implementing real UpgradeToPremium functionality // logout // keep the currently logged user in a variable // find and delete that user from standardUserService // regsiter new premium user in the premiumUserService with the same data // log in the newly registered user Console.Clear(); Console.WriteLine("Do you really want to upgrade to premium? It will cost you 15$."); Console.WriteLine("Press enter to upgrade!"); Console.ReadLine(); User tempCurrentUser = _currentUser; _currentUser = null; _standardUserService.DeleteById(tempCurrentUser.Id); PremiumUser newUser = _premiumUserService.MapToPremiumUser(tempCurrentUser); User user = _premiumUserService.Register(newUser); _currentUser = user; Console.WriteLine("Createing new premium sibscription, please wait ...."); Thread.Sleep(2000); Console.WriteLine($"You have succesfully buy a premium subscription. Welcome back {_currentUser.Username}."); Thread.Sleep(2000); Console.ReadLine(); break; case "Reschedule training": List <LiveTraining> trainings = _liveTrainingService.GetTrainings().Where(training => training.Trainer.Id == _currentUser.Id).ToList(); if (trainings.Count == 0) { Console.WriteLine("No available trainings."); Console.ReadLine(); } else { int trainingChoice = _uiService.ChooseEntitiesMenu(trainings); Console.WriteLine("How many days fo you want to reschedule the training: "); int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 10); _trainerUserService.GetById(_currentUser.Id).ChangeSchedule(trainings[trainingChoice - 1], days); Console.WriteLine("Schadule changed!"); Console.ReadLine(); } break; case "Account": int accountChoice = _uiService.AccountMenu(); Console.Clear(); if (accountChoice == 1) { //Change Info Console.WriteLine("Enter First Name:"); string firstName = Console.ReadLine(); Console.WriteLine("Enter Last Name:"); string lastName = Console.ReadLine(); switch (_currentUser.Role) { case UserRole.Standard: _standardUserService.ChangeInfo(_currentUser.Id, firstName, lastName); break; case UserRole.Premium: _premiumUserService.ChangeInfo(_currentUser.Id, firstName, lastName); break; case UserRole.Trainer: _trainerUserService.ChangeInfo(_currentUser.Id, firstName, lastName); break; default: break; } } else if (accountChoice == 2) { //Check Subscription Console.WriteLine($"Your subscription is {_currentUser.Role}"); Console.ReadLine(); } else if (accountChoice == 3) { //Change Password Console.WriteLine("Enter Old Password:"******"Enter New Password:"******"Log Out": _currentUser = null; break; default: break; } } }