Esempio n. 1
0
        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;
                }
            }
        }