예제 #1
0
        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;
                }
            }
        }