static void Main(string[] args) { Seed(); while (true) { if (_currentUser == null) { int loginChoice = _uiService.RoleMenu(); if (loginChoice == 1) { int roleChoice = _uiService.RoleMenu(); UserRole role = (UserRole)roleChoice; Console.Clear(); Console.WriteLine("Enter username: "******"Enter password: "******"INVALID ROLE"); } if (_currentUser == null) { continue; } } else { StandardUser newUser = new StandardUser(); Console.WriteLine("Enter First Name"); newUser.FirstName = Console.ReadLine(); Console.WriteLine("Enter Last Name"); newUser.LastName = Console.ReadLine(); Console.WriteLine("Enter User Name"); newUser.Username = Console.ReadLine(); Console.WriteLine("Enter Password"); newUser.Password = Console.ReadLine(); User user = _standardUserService.Register(newUser); if (user == null) { continue; } _currentUser = user; } _uiService.Welcome(_currentUser); } int mainManuChoise = _uiService.MainMenu(_currentUser.Role); string mainManuItem = _uiService.MainMenuItems[mainManuChoise - 1]; switch (mainManuItem) { case "Train": int trainChoice = 1; if (_currentUser.Role == UserRole.Premium) { trainChoice = _uiService.TrainMany(); } if (trainChoice == 2) { int trainingItem = _uiService.TrainManyItems(_videoTrainingSrvc.GetTrainings()); VideoTraining training = _videoTrainingSrvc.GetTrainings()[trainingItem - 1]; Console.WriteLine(training.Title); Console.WriteLine($"Link: {training.Link}"); Console.WriteLine($"Rating: {training.CheckRating()}"); Console.ReadLine(); } if (trainChoice == 1) { int trainingItem = _uiService.TrainManyItems(_liveTrainingSrvc.GetTrainings()); LiveTraining training = _liveTrainingSrvc.GetTrainings()[trainingItem - 1]; Console.WriteLine(training.Title); Console.WriteLine($"Time for next session: {training.NextSession}"); Console.WriteLine($"Time: {training.Time}"); Console.ReadLine(); } break; case "Upgrade to Premium": _uiService.UpgradeToPremium(); break; case "Reschedule training": List <LiveTraining> trainings = _liveTrainingSrvc.GetTrainings() .Where(x => x.Trainer.Id == _currentUser.Id).ToList(); if (trainings.Count == 0) { Console.WriteLine("No trainings"); Console.ReadLine(); } else { int trainingChoice = _uiService.ChooseEntiiesMenu(trainings); Console.WriteLine("How many days do you want to reschedule the training"); int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 30); _trainerUserSrvc.GetById(_currentUser.Id).ChangeSchedule(trainings[trainingChoice - 1], days); Console.WriteLine("Schedule changed!"); Console.ReadLine(); } break; case "Account": int accountChoice = _uiService.AccountMenu(); 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: _premiumUserSrvc.changeInfo(_currentUser.Id, firstName, lastName); break; case UserRole.Trainer: _trainerUserSrvc.changeInfo(_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; } } }