public bool ChangeSchedule(LiveTraining liveTraining, int days)
 {
     if (days <= 0)
     {
         return(false);
     }
     liveTraining.NextSession = liveTraining.NextSession.AddDays(days);
     return(true);
 }
Пример #2
0
        static void Main(string[] args)
        {
            PopulateDb();

            while (true)
            {
                if (currentUser == null)
                {
                    // I) prvo da izbere dali saka da se LOGIRA ili REGISTRIRA
                    //#####################################################
                    //Enter a number to choose one of the following:
                    // 1) Log In
                    // 2) Register
                    int userChoice = uiSrvc.LogInMenu();

                    //ako odbral da se logira LOGIN
                    //______________________________
                    if (userChoice == 1)
                    {
                        //treba da izbere vo koja uloga ke se logira
                        int      userRoleChoice = uiSrvc.RoleMenu();
                        UserRole role           = (UserRole)userRoleChoice;
                        Console.Clear();

                        //da vnese username i password za da se logira
                        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:"******"Account":
                    // mu se otvara sledniov izbor
                    // 1) Change Info,
                    // 2) Check Subscription,
                    // 3) Change password
                    int accountUserChoice = uiSrvc.AccountMenu(currentUser.Role);
                    Console.Clear();
                    // Change Info
                    if (accountUserChoice == 1)
                    {
                        Console.WriteLine("Enter new first name:");
                        string newFirstName = Console.ReadLine();
                        Console.WriteLine("Enter new last name:");
                        string newLastName = Console.ReadLine();

                        switch (currentUser.Role)
                        {
                        case UserRole.Standard:
                            standardUserSrvc.ChangeInfo(currentUser.Id, newFirstName, newLastName);
                            break;

                        case UserRole.Premium:
                            premiumUserSrvc.ChangeInfo(currentUser.Id, newFirstName, newLastName);
                            break;

                        case UserRole.Trainer:
                            trainerUserSrvc.ChangeInfo(currentUser.Id, newFirstName, newLastName);
                            break;
                        }
                    }
                    // Check Subscription
                    else if (accountUserChoice == 2)
                    {
                        Console.WriteLine($"Your subscription is {currentUser.Role}");
                        Console.ReadLine();
                    }
                    // Change password
                    else
                    {
                        Console.WriteLine("Enter old password");
                        string oldPassword = Console.ReadLine();
                        Console.WriteLine("Enter new password");
                        string newPassword = Console.ReadLine();
                        switch (currentUser.Role)
                        {
                        case UserRole.Standard:
                            standardUserSrvc.ChangePassword(currentUser.Id, oldPassword, newPassword);
                            break;

                        case UserRole.Premium:
                            premiumUserSrvc.ChangePassword(currentUser.Id, oldPassword, newPassword);
                            break;

                        case UserRole.Trainer:
                            trainerUserSrvc.ChangePassword(currentUser.Id, oldPassword, newPassword);
                            break;
                        }
                    }
                    break;

                case "Log Out":
                    currentUser = null;
                    break;

                case "Train":
                    //mu se pojavuva menito so izbor:
                    // 1) Video
                    // 2) Live
                    int userTrainingsChoice = 1;
                    if (currentUser.Role == UserRole.Premium)
                    {
                        userTrainingsChoice = uiSrvc.TrainingsMenu();
                    }
                    // -Video trainings:
                    if (userTrainingsChoice == 1)
                    {
                        int           videoTreiningItem = uiSrvc.TrainingMenuItems(videoTrainings.GetAllTrainings());
                        VideoTraining videoTraining     = videoTrainings.GetAllTrainings()[videoTreiningItem - 1];
                        Console.WriteLine(videoTraining.Title);
                        Console.WriteLine($"Link: {videoTraining.Link}");
                        Console.WriteLine($"Rating: {videoTraining.CheckRating()}");
                        Console.WriteLine($"Time: {videoTraining.Time} minutes.");
                        Console.ReadLine();
                    }
                    // -Live trainings:
                    if (userTrainingsChoice == 2)
                    {
                        int          liveTrainingItem = uiSrvc.TrainingMenuItems(liveTrainings.GetAllTrainings());
                        LiveTraining liveTraining     = liveTrainings.GetAllTrainings()[liveTrainingItem - 1];
                        Console.WriteLine(liveTraining.Title);
                        Console.WriteLine($"The training starts at: {liveTraining.NextSession}");
                        Console.WriteLine($"Rating: {liveTraining.Rating}");
                        Console.WriteLine($"Time: {liveTraining.Time} minutes.");
                        Console.ReadLine();
                    }
                    break;

                case "Upgrade to premium":
                    uiSrvc.UpgradeToPremium();
                    break;

                case "Reschedule training":
                    List <LiveTraining> trainings = liveTrainings.GetAllTrainings().Where(x => x.Trainer.Id == currentUser.Id).ToList();

                    if (trainings.Count == 0)
                    {
                        Console.WriteLine("No trainings!");
                        Console.ReadLine();
                    }
                    else
                    {
                        int userLiveTrainingChoice = uiSrvc.ChooseEntitiesMenu(trainings);
                        Console.WriteLine("How many days wpuld you like to reschedule the training?");
                        int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 100);
                        trainerUserSrvc.GetUserById(currentUser.Id).ChangeSchedule(trainings[userLiveTrainingChoice], days);
                        Console.WriteLine("Schedule changed!");
                        Console.ReadLine();
                    }
                    break;

                default:
                    break;
                }
            }
        }
        static void Main(string[] args)
        {
            Seed();
            while (true)
            {
                Console.Clear();
                int loginChoice = _uiService.LogInMenu();
                Console.Clear();
                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:"******"Link: {training.Link}");
                    Console.WriteLine($"Rating: {training.CheckRating()}");
                    Console.WriteLine($"Time: {training.Time} minutes");
                    Console.ReadLine();
                }
                if (trainChoice == 2)
                {
                    int          trainingItem = _uiService.TrainMenuItems(_liveTrainings.GetTrainings());
                    LiveTraining training     = _liveTrainings.GetTrainings()[trainingItem - 1];
                    Console.WriteLine(training.Title);
                    Console.WriteLine($"THE TRAINING STARTS AT: {training.NextSession}");
                    Console.WriteLine($"Rating: {training}");
                    Console.WriteLine($"Time: {training} minutes");
                }
                break;

            case MenuItemsConstants.UpgradeToPremium:
                _uiService.UpgradeToPremium();
                break;

            case MenuItemsConstants.RescheduelTraining:
                var trainings = _liveTrainings
                                .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(), 100);
                    _trainerUserSrvc.GetById(_currentUser.Id)
                    .ChangeSchedule(trainings[trainingChoice - 1], days);
                    Console.WriteLine("Schedule changed!");
                    Console.ReadLine();
                }
                break;

            case MenuItemsConstants.Account:
                break;

            case MenuItemsConstants.LogOut:
                _currentUser = null;
                break;

            default:
                break;
            }
        }
Пример #4
0
        static void Main(string[] args)
        {
            //call seed when you don't work with file db
            Seed();

            //List<VideoTraining> videoTrainingsDb = _videoTrainingService.GetAllTrainings();
            //Trainer trainerBill = _trainerService.LogIn("bill", "bill");
            //Trainer trainerPaul = _trainerService.LogIn("paul.paulsky", "paul.paulsky3");
            //_trainerService.ChangePassword(trainerPaul.Id, "paul.paulsky3", "paul.paulsky3333");
            //Trainer paulDb = _trainerService.ChangeInfo(trainerPaul.Id, "PaulUpdated", "Paulsky2");



            //int hashedString = "test123".GetHashCode();
            //int hashedString2 = "test123".GetHashCode();


            int option = _uiService.LogInMenu();

            Console.Clear();
            if (option == 1) //login
            {
                int roleChoice = _uiService.RoleMenu();
                Console.WriteLine("Enter username");
                string username = Console.ReadLine();
                if (string.IsNullOrEmpty(username))
                {
                    throw new Exception("You must enter username");
                }
                Console.WriteLine("Enter password");
                string password = Console.ReadLine();
                if (string.IsNullOrEmpty(password))
                {
                    throw new Exception("You must enter password");
                }
                UserRole role = (UserRole)roleChoice;
                switch (role)
                {
                case UserRole.Standard:
                    _currentUser = _standardUserService.LogIn(username, password);
                    break;

                case UserRole.Premium:
                    _currentUser = _premiumUserService.LogIn(username, password);
                    break;

                case UserRole.Trainer:
                    _currentUser = _trainerService.LogIn(username, password);
                    break;
                }
            }
            else
            {
                StandardUser standardUser = _uiService.FillNewUserData();
                _currentUser = _standardUserService.Register(standardUser);
            }

            int    mainMenuOption = _uiService.MainMenu(_currentUser.Role);
            string menuItem       = _uiService.MenuItems[mainMenuOption - 1];

            switch (menuItem)
            {
            case "Train":
                int trainOption = 1;
                if (_currentUser.Role == UserRole.Premium)
                {
                    trainOption = _uiService.TrainMenu();
                }
                if (trainOption == 1)    //video
                {
                    List <VideoTraining> videoTrainings = _videoTrainingService.GetAllTrainings();
                    int           trainingOption        = _uiService.TrainMenuItems(videoTrainings);
                    VideoTraining videoTraining         = videoTrainings[trainingOption - 1];
                    Console.WriteLine("You chose:");
                    Console.WriteLine($"{videoTraining.Title} - {videoTraining.Time} minutes");
                    Console.ReadLine();
                }
                else
                {
                    List <LiveTraining> liveTrainings = _liveTrainingService.GetAllTrainings();
                    int          trainingChoice       = _uiService.TrainMenuItems(liveTrainings);
                    LiveTraining liveTraining         = liveTrainings[trainingChoice - 1];
                    Console.WriteLine(liveTraining.Title);
                    Console.WriteLine($"{liveTraining.Time} - Trainer: {liveTraining.Trainer.FirstName}");
                    Console.ReadLine();
                }
                break;

            case "Upgrade to Premium":
                _uiService.UpgradeToPremiumInfo();
                _standardUserService.RemoveById(_currentUser.Id);
                _currentUser = _premiumUserService.Register(new PremiumUser()
                {
                    FirstName = _currentUser.FirstName,
                    LastName  = _currentUser.LastName,
                    Username  = _currentUser.Username,
                    Password  = _currentUser.Password
                });
                break;

            case "Reschedule training":
                List <LiveTraining> liveTrainingsForCurrentUser = _liveTrainingService.GetAllTrainings()
                                                                  .Where(x => x.Trainer.Id == _currentUser.Id).ToList();
                if (liveTrainingsForCurrentUser.Count == 0)
                {
                    Console.WriteLine("There are no live trainings!");
                }
                else
                {
                    int trainingItem = _uiService.TrainMenuItems(liveTrainingsForCurrentUser);
                    Console.WriteLine("Enter number of days");
                    int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 10);
                    //try boxing and unboxing of current user to cast to Trainer
                    _trainerService.GetById(_currentUser.Id)
                    .Reschedule(liveTrainingsForCurrentUser[trainingItem - 1], days);
                }

                break;

            case "Log Out":
                _currentUser = null;
                break;

            case "Account":
                int accountChoice = _uiService.AccountMenu();
                if (accountChoice == 1)
                {
                    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:
                        _trainerService.ChangeInfo(_currentUser.Id, firstName, lastName);
                        break;
                    }
                }
                else
                {
                    Console.WriteLine("Enter old password:"******"Enter new password:");
                    string newPassword = Console.ReadLine();
                    switch (_currentUser.Role)
                    {
                    case UserRole.Standard:
                        _standardUserService.ChangePassword(_currentUser.Id, oldPassword, newPassword);
                        break;

                    case UserRole.Premium:
                        _premiumUserService.ChangePassword(_currentUser.Id, oldPassword, newPassword);
                        break;

                    case UserRole.Trainer:
                        _trainerService.ChangePassword(_currentUser.Id, oldPassword, newPassword);
                        break;
                    }
                }
                break;
            }


            Console.ReadLine();
        }
Пример #5
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(_videoTrainings.GetTrainings());
                        VideoTraining training     = _videoTrainings.GetTrainings()[trainingItem - 1];
                        Console.WriteLine(training.Title);
                        Console.WriteLine($"Link: {training.Link}");
                        Console.WriteLine($"Raiting: {training.CheckRating()}");
                        Console.WriteLine($"Time: {training.Time} minutes");
                        Console.ReadLine();
                    }
                    if (trainChoice == 2)
                    {
                        int          trainingItem = _uiService.TrainMenuItems(_liveTrainings.GetTrainings());
                        LiveTraining training     = _liveTrainings.GetTrainings()[trainingItem - 1];
                        Console.WriteLine(training.Title);
                        Console.WriteLine($"THE TRAINING STARTS AT: {training.NextSession}");
                        Console.WriteLine($"Raiting: {training.CheckRating()}");
                        Console.WriteLine($"Time: {training.Time} minutes");
                        Console.ReadLine();
                    }
                    break;

                case "Upgrade to Premium":
                    _uiService.UpgradeToPremium();
                    break;

                case "Reschedule Training":
                    List <LiveTraining> trainings = _liveTrainings.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);
                        _trainerUserSrvc.GetById(_currentUser.Id).ChangeSchedule(trainings[trainingChoice - 1], days);
                        Console.WriteLine("Schedule changed!");
                        Console.ReadLine();
                    }
                    break;

                case "Account":
                    int accountChoice = _uiService.AccountMenu(_currentUser.Role);
                    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:
                            _standardUserSrvc.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)
                    {
                        //CheckSubscription
                        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;
                }
            }
        }
Пример #6
0
        static void Main(string[] args)
        {
            // Calling the seed method in order to fill in the database with inital data if it is empty
            Seed();
            while (true)
            {
                // If it is null, it means that nobody is logged in
                // We can generate the menu for log in
                if (_currentUser == null)
                {
                    // Menu for log in or register
                    // Program -> Log in Menu method -> Generate a new menu method -> Validate a number
                    // Validate a number -> Generate a new menu mehod -> Log in Menu method -> Program
                    int loginChoice = _uiSrvc.LogInMenu();
                    // This if checks if the number the user entered is 1. If it is give them log in menu
                    if (loginChoice == 1)
                    {
                        // Menu for the user role if they want to log in
                        int roleChoice = _uiSrvc.RoleMenu();
                        // We map the user choice of 1 2 or 3 to the enum so we can have it as an enum
                        UserRole role = (UserRole)roleChoice;
                        // UserRole brokenRole = UserRole.1; // This will not work
                        // UserRole standard = (UserRole)1; // This will work and will get the Standard enum since it is number 1 in the enum
                        Console.Clear();
                        // Give the log in menu if they want to log in
                        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":
                    // We have 2 kinds of training: Video and Live
                    // But standard users only have access to Video and not Live, while Premium have access to both
                    // Because this is the case we set the default choice to 1, which corelates to Video Trainings
                    // IF the user is premium we give them a choice to pick Live or Video and then change the choice accordingly
                    int trainChoice = 1;
                    if (_currentUser.Role == UserRole.Premium)
                    {
                        trainChoice = _uiSrvc.TrainMenu();
                    }
                    // Video trainings
                    if (trainChoice == 1)
                    {
                        int           trainingItem = _uiSrvc.TrainMenuItems(_videoTrainings.GetTrainings());
                        VideoTraining training     = _videoTrainings.GetTrainings()[trainingItem - 1];
                        Console.WriteLine(training.Title);
                        Console.WriteLine($"Link: {training.Link}");
                        Console.WriteLine($"Raiting: {training.CheckRating()}");
                        Console.WriteLine($"Time: {training.Time} minutes");
                        Console.ReadLine();
                    }
                    // Live trainings
                    if (trainChoice == 2)
                    {
                        int          trainingItem = _uiSrvc.TrainMenuItems(_liveTrainings.GetTrainings());
                        LiveTraining training     = _liveTrainings.GetTrainings()[trainingItem - 1];
                        Console.WriteLine(training.Title);
                        Console.WriteLine($"THE TRAINING STARTS AT: {training.NextSession}");
                        Console.WriteLine($"Raiting: {training.CheckRating()}");
                        Console.WriteLine($"Time: {training.Time} minutes");
                        Console.ReadLine();
                    }
                    break;

                case "Upgrade to Premium":
                    _uiSrvc.UpgradeToPremium();
                    break;

                case "Reschedule training":
                    List <LiveTraining> trainings = _liveTrainings.GetTrainings().Where(x => x.Trainer.Id == _currentUser.Id).ToList();
                    if (trainings.Count == 0)
                    {
                        Console.WriteLine("No Trainings!");
                        Console.ReadLine();
                    }
                    else
                    {
                        int trainingChoice = _uiSrvc.ChooseEntiiesMenu(trainings);
                        Console.WriteLine("How many days do you want to reschedule the training:");
                        int days = ValidationHelper.ValidateNumber(Console.ReadLine(), 100);
                        _trainerUserSrvc.GetUserById(_currentUser.Id).ChangeSchedule(trainings[trainingChoice - 1], days);
                        Console.WriteLine("Schedule changed!");
                        Console.ReadLine();
                    }
                    break;

                case "Account":
                    int accountChoice = _uiSrvc.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:
                            _standardUserSrvc.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;
                }
            }
        }
Пример #7
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(_videoTrainings.GetTrainings());
                        VideoTraining training     = _videoTrainings.GetTrainings()[trainingItem - 1];
                        Console.WriteLine(training.Title);
                        Console.WriteLine($"Link: {training.Link}");
                        Console.WriteLine($"Raiting: {training.Rating}");
                        Console.WriteLine($"Time: {training.Time} minutes");
                        Console.ReadLine();
                    }
                    if (trainChoice == 2)
                    {
                        int          trainingItem = _uiService.TrainMenuItems(_liveTrainings.GetTrainings());
                        LiveTraining training     = _liveTrainings.GetTrainings()[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":

                    break;

                case "Reschedule training":

                    break;

                case "Account":

                    break;

                case "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;
                }
            }
        }