static void Main(string[] args)
        {
            if (File.Exists(_filePath))
            {
                using (StreamReader sr = new StreamReader(_filePath))
                {
                    while (true)
                    {
                        var lineToConvert = sr.ReadLine();
                        if (lineToConvert == "")
                        {
                            break;
                        }
                        User user = JsonConvert.DeserializeObject <User>(lineToConvert);
                        _userServices.Register(user);
                    }
                };

                File.Delete(_filePath);
            }

            Seed();
            bool mainMenu = true;

            while (mainMenu)
            {
                Console.WriteLine("Welcome.");
                if (_loggedUser == null)
                {
                    var choice = _uiServices.LogInMenu();
                    Console.Clear();
                    switch (choice)
                    {
                    case 1:
                        Console.WriteLine("Please enter your username: "******"Please enter your password: "******"Your account is deactivated. Do you want to activate it?");
                            while (true)
                            {
                                var answer = Console.ReadLine();
                                if (answer == "Yes")
                                {
                                    _loggedUser.Status = AccountStatus.Active;
                                    break;
                                }
                                if (answer == "No")
                                {
                                    _loggedUser = null;
                                    break;
                                }
                                break;
                            }
                        }

                        break;

                    case 2:
                        var user = RegistrationHelper.GetData();
                        _loggedUser = _userServices.Register(user);
                        break;
                    }
                    continue;
                }

                _uiServices.Welcome(_loggedUser);

                Console.Clear();
                int    userMainMenuChoice = _uiServices.MainMenu();
                string mainMenuChoice     = _uiServices.MainMenuItems[userMainMenuChoice - 1];
                switch (mainMenuChoice)
                {
                case "Track":
                    Console.WriteLine("What activity do you want to track?");
                    int    userTrackChoice = _uiServices.TrackMenu();
                    string trackMenuChoice = _uiServices.TrackMenuItems[userTrackChoice - 1];

                    switch (trackMenuChoice)
                    {
                    case "Reading":
                        int timeReading = _trackServices.TrackActivity();
                        _trackServices.TrackReading(timeReading, _loggedUser);
                        break;

                    case "Exercising":
                        int timeExercising = _trackServices.TrackActivity();
                        _trackServices.TrackExercising(timeExercising, _loggedUser);
                        break;

                    case "Working":
                        int timeWorking = _trackServices.TrackActivity();
                        _trackServices.TrackWorking(timeWorking, _loggedUser);
                        break;

                    case "Hobbies":
                        int timeHobbies = _trackServices.TrackActivity();
                        _trackServices.TrackHobbies(timeHobbies, _loggedUser);
                        break;

                    case "Exit Application":
                        mainMenu = false;
                        break;
                    }
                    break;

                case "User Statistics":
                    Console.WriteLine("Which activity statistics do you want to see?");
                    int    userStatisticsChoice = _uiServices.StatisticsMenu();
                    string statisticsMenuChoice = _uiServices.StatisticsMenuItems[userStatisticsChoice - 1];
                    switch (statisticsMenuChoice)
                    {
                    case "Reading":
                        var totalTimeReading = StatisticsHelper.TotalTime(_loggedUser.ReadingSessions);
                        if (totalTimeReading == 0)
                        {
                            Console.WriteLine("You have not recorded any reading activity.");
                            break;
                        }
                        Console.WriteLine($"The total time reading is {totalTimeReading} minutes.");
                        Console.WriteLine($"The average time reading for all sessions is {totalTimeReading / _loggedUser.ReadingSessions.Count} minutes.");
                        int totalPages = 0;
                        foreach (var session in _loggedUser.ReadingSessions)
                        {
                            totalPages += session.Pages;
                        }
                        Console.WriteLine($"Your total number of pages read is {totalPages}");
                        Console.WriteLine($"Your favorite type is {StatisticsHelper.FavoriteReadingType(_loggedUser)}");
                        break;

                    case "Exercising":
                        var totalTimeExercising = StatisticsHelper.TotalTime(_loggedUser.ExercisingSessions);
                        if (totalTimeExercising == 0)
                        {
                            Console.WriteLine("You have not recorded any exercising activity.");
                            break;
                        }
                        Console.WriteLine($"The total time reading is {totalTimeExercising} minutes.");
                        Console.WriteLine($"The average time reading for all sessions is {totalTimeExercising / _loggedUser.ExercisingSessions.Count} minutes.");
                        Console.WriteLine($"Your favorite type is {StatisticsHelper.FavoriteExercisingType(_loggedUser)}");
                        break;

                    case "Working":
                        var totalTimeWorking = StatisticsHelper.TotalTime(_loggedUser.WorkingSessions);
                        if (totalTimeWorking == 0)
                        {
                            Console.WriteLine("You have not recorded any working activity.");
                            break;
                        }
                        Console.WriteLine($"The total time reading is {totalTimeWorking} minutes.");
                        Console.WriteLine($"You have spent {StatisticsHelper.TotalTime(_loggedUser.WorkingSessions.Where(x => x.Place == WorkingPlace.Home).ToList())} minutes working at home.");
                        Console.WriteLine($"You have spent {StatisticsHelper.TotalTime(_loggedUser.WorkingSessions.Where(x => x.Place == WorkingPlace.Office).ToList())} minutes working in the office.");
                        break;

                    case "Hobbies":
                        var totalTimeHobbies = StatisticsHelper.TotalTime(_loggedUser.AllHobbbies);
                        if (totalTimeHobbies == 0)
                        {
                            Console.WriteLine("You have not recorded any hobbies.");
                            break;
                        }
                        Console.WriteLine($"The total time reading is {totalTimeHobbies} minutes.");
                        Console.WriteLine("The names of all your hobbies are: ");
                        foreach (var name in StatisticsHelper.AllHobbiesNames(_loggedUser))
                        {
                            Console.WriteLine(name);
                        }
                        break;

                    case "Global":
                        var totalReading    = StatisticsHelper.TotalTime(_loggedUser.ReadingSessions);
                        var totalExercising = StatisticsHelper.TotalTime(_loggedUser.ExercisingSessions);
                        var totalWorking    = StatisticsHelper.TotalTime(_loggedUser.WorkingSessions);
                        var totalHobbies    = StatisticsHelper.TotalTime(_loggedUser.AllHobbbies);
                        var totalTime       = totalReading + totalExercising + totalWorking + totalHobbies;
                        if (totalTime == 0)
                        {
                            Console.WriteLine("You have not recorded any activity.");
                            break;
                        }
                        var favorite = "Reading";
                        if (totalExercising > totalReading)
                        {
                            favorite = "Exercising";
                        }
                        if (totalWorking > totalReading && totalWorking > totalExercising)
                        {
                            favorite = "Working";
                        }
                        if (totalHobbies > totalReading && totalHobbies > totalExercising && totalHobbies > totalWorking)
                        {
                            favorite = "Hobbies";
                        }
                        Console.WriteLine($"The total time of all activities recorded is {totalTime} minutes.");
                        Console.WriteLine($"According to time spent on each activity your favorite one is {favorite}");
                        break;

                    case "Back To Main Menu":
                        break;
                    }
                    break;

                case "Account Management":
                    int    userAccountManagementChoice = _uiServices.AccountManagementMenu();
                    string accountManagementMenuChoice = _uiServices.AccountManagementMenuItems[userAccountManagementChoice - 1];
                    switch (accountManagementMenuChoice)
                    {
                    case "Change Password":
                        Console.WriteLine("Please enter your current password for validation:");
                        var currentPassword = Console.ReadLine();
                        Console.WriteLine("Please enter your new password:"******"Change First Name":
                        Console.WriteLine("Please enter your new First Name:");
                        var newFirstName = Console.ReadLine();
                        _userServices.ChangeFirstName(_loggedUser, newFirstName);
                        break;

                    case "Change Last Name":
                        Console.WriteLine("Please enter your new Last Name:");
                        var newLastName = Console.ReadLine();
                        _userServices.ChangeLastName(_loggedUser, newLastName);
                        break;

                    case "Deactivate Account":
                        _userServices.DeactivateAccount(_loggedUser);
                        break;

                    case "Back To Main Menu":
                        break;
                    }
                    break;

                case "Log out":
                    _loggedUser = null;
                    break;
                }
            }

            if (!Directory.Exists(_folderPath))
            {
                Directory.CreateDirectory(_folderPath);
            }

            if (!File.Exists(_filePath))
            {
                File.Create(_filePath).Close();
            }

            foreach (var user in _userServices.GetAllUsers())
            {
                string jsonString = JsonConvert.SerializeObject(user);
                using (StreamWriter sw = new StreamWriter(_filePath, true))
                {
                    sw.Write(jsonString);
                }
            }
        }