public Message GetAnyWantedMessage()
        {
            string AnyMessage = MenuStyle.Horizontal(new List <string> {
                "All Messages", "Back"
            });
            List <Message> Messages = new List <Message>();

            switch (AnyMessage)
            {
            case "All Messages":
                Messages = GetAllMessages();
                break;

            default:
                return(null);
            }
            if (Messages.Count > 0)
            {
                string SelectedMessage = MenuStyle.Vertical(Messages.Select(m => "Message ID: " + m.Id.ToString() + ", at: " + $"{m.TimeSent.ToShortDateString()}" + $", {m.Sender.UserName} " + "sent: " + m.Body + ", to " + $"{m.Receiver.UserName}").ToList());
                return(Messages.Single(pm => "Message ID: " + pm.Id.ToString() + ", at: " + $"{pm.TimeSent.ToShortDateString()}" + $", {pm.Sender.UserName} " + "sent: " + pm.Body + ", to " + $"{pm.Receiver.UserName}" == SelectedMessage));
            }
            else
            {
                Console.WriteLine("No Messages to Display");
                Thread.Sleep(1600);
                return(null);
            }
        }
        public void ManageUserMenu()
        {
            while (true)
            {
                string AdminSelection = MenuStyle.Vertical(new List <string>
                {
                    "Create User",
                    "Update User Access",
                    "Delete User",
                    "Back"
                });
                switch (AdminSelection)
                {
                case "Create User":
                    mu.CreateUser();
                    break;

                case "Update User Access":
                    mu.UpdateUserAccess();
                    break;

                case "Delete User":
                    mu.DeleteUser();
                    break;

                default:
                    return;
                }
            }
        }
        public void MessagesMenu()
        {
            while (true)
            {
                string Choice = MenuStyle.Vertical(new List <string>
                {
                    "Create Message",
                    "Inbox",
                    "View Sent",
                    "Show All Messages",
                    "Edit Message",
                    "Delete Message",
                    "Back"
                });

                switch (Choice)
                {
                case "Create Message":
                    PersonalMessage.CreateMessage();
                    break;

                case "Inbox":
                    PersonalMessage.ShowReceivedMessages();
                    break;

                case "View Sent":
                    PersonalMessage.ShowSentMessages();
                    break;

                case "Show All Messages":
                    PersonalMessage.ShowAllMessages();
                    break;

                case "Edit Message":
                    PersonalMessage.UpdateMessage();
                    break;

                case "Delete Message":
                    PersonalMessage.DeleteMessage();
                    break;

                case "Back":
                    return;
                }
            }
        }
        public static User SelectUser()
        {
            List <User>   UsersList    = DataProvider.ReadUserData();
            List <string> UsernameList = UsersList
                                         .Where(user => user.Id != ActiveUser.Id)
                                         .Select(UserInList => UserInList.UserName)
                                         .ToList();

            if (UsernameList.Count > 0)
            {
                string SelectedUsername = MenuStyle.Vertical(UsernameList);
                return(UsersList.Single(UserOfList => SelectedUsername == UserOfList.UserName));
            }
            else
            {
                Console.WriteLine("No Users to Display");
                Thread.Sleep(1600);
                return(null);
            }
        }
        public void ShowMenu()
        {
            if (ActiveUser != null)
            {
                MessageActions View        = new MessageActions(DataProvider, ActiveUser);
                SignInRegister InitialMenu = new SignInRegister(DataProvider);
                SpecificMenu   MenuActions = new SpecificMenu(DataProvider, ActiveUser);
                while (true)
                {
                    string selecteditem = string.Empty;

                    switch (ActiveUser.UserAccess)
                    {
                    case Role.visitor:
                        selecteditem = MenuStyle.Vertical(new List <string> {
                            "Create Message", "Inbox", "View Sent", "Log Out", "Exit"
                        });
                        break;

                    case Role.user:
                        selecteditem = MenuStyle.Vertical(new List <string> {
                            "Create Message", "Inbox", "View Sent", "Edit Message", "Delete Message", "Log Out", "Exit"
                        });
                        break;

                    case Role.moderator:
                        selecteditem = MenuStyle.Vertical(new List <string> {
                            "Messages", "Log Out", "Exit"
                        });
                        break;

                    case Role.administrator:
                        selecteditem = MenuStyle.Vertical(new List <string> {
                            "Manage Users", "Messages", "Log Out", "Exit"
                        });
                        break;
                    }
                    switch (selecteditem)
                    {
                    case "Manage Users":
                        MenuActions.ManageUserMenu();
                        break;

                    case "Messages":
                        MenuActions.MessagesMenu();
                        break;

                    case "Create Message":
                        View.CreateMessage();
                        break;

                    case "Inbox":
                        View.ShowReceivedMessages();
                        break;

                    case "View Sent":
                        View.ShowSentMessages();
                        break;

                    case "Edit Message":
                        View.UpdateMessage();
                        break;

                    case "Delete Message":
                        View.DeleteMessage();
                        break;

                    case "Log Out":
                        return;

                    case "Exit":
                        Console.WriteLine("\tThank you for watching");
                        Thread.Sleep(1600);
                        Environment.Exit(0);
                        break;
                    }
                }
            }
        }