public static User SelectUser(UserManager activeUserManager) { List <string> selectUserItems = new List <string>(); using (var database = new DatabaseStuff()) { List <User> availableUsers = database.Users.ToList(); try { foreach (User user in availableUsers) { if (user.UserName != activeUserManager.UserName) { selectUserItems.Add(user.UserName); } } } catch (Exception e) { Console.WriteLine(e); } if (selectUserItems.Count == 0) { Console.WriteLine("\n\n\tNo users in database!"); Console.ReadKey(); return(null); } selectUserItems.Add("Back"); string selectedUserName = Menus.VerticalMenu(StringsFormatted.SelectUser, selectUserItems); if (selectedUserName.Contains("Back")) { return(null); } Console.Clear(); return(database.Users.Single(i => i.UserName == selectedUserName)); } }
public static void ManageUsers(UserManager activeUserManager) { List <string> ChangeUserMenuItems = new List <string> { "Permissions", "Delete User", "Create a NEW User", "Back" }; string manageUsersChoice = Menus.VerticalMenu(StringsFormatted.ManageUsers, ChangeUserMenuItems); if (manageUsersChoice.Contains("Create")) { ManageUserFunctions.CreateNewUser(); return; } else if (manageUsersChoice.Contains("Back")) { return; } User receiver = ManageUserFunctions.SelectUser(activeUserManager); if (receiver is null) { return; } if (manageUsersChoice == "Delete User") { ManageUserFunctions.DeleteUser(receiver); } else if (manageUsersChoice == "Permissions") { ManageUserFunctions.ChangeUserPermissions(receiver); } }
public static void MainMenu(UserManager activeUserManager) { while (true) { using (var database = new DatabaseStuff()) { // Probe the database for the nuber of unread messages in chat and unread mail int unreadChatMessages = database.Users.Include("UnreadChatMessages").Single(c => c.UserName == activeUserManager.UserName).UnreadChatMessages.Count; // Create the Menu items common to all users List <string> mainMenuItems = new List <string> { $"Chat ({unreadChatMessages})", "Personal Messages", "Log Out", "Exit" }; // Add more options for User and Administrator access. if (activeUserManager.UserAccess == Accessibility.administrator) { mainMenuItems.Insert(2, "Manage Users"); mainMenuItems.Insert(3, "Messages History"); } else if (activeUserManager.UserAccess == Accessibility.user) { mainMenuItems.Insert(2, "Messages History"); } // Acquire the choice of function from the user using a vertical menu string userChoice = Menus.VerticalMenu(StringsFormatted.MainMenu, mainMenuItems); // Check what the user chose and act accordingly if (userChoice.Contains("Chat")) { MenuFunctions.ShowChat(activeUserManager); } else if (userChoice.Contains("Personal Messages")) { MenuFunctions.PersonalMessages(activeUserManager); } else if (userChoice.Contains("Messages History")) { MenuFunctions.CommunicationHistory(activeUserManager); } else if (userChoice.Contains("Manage Users")) { MenuFunctions.ManageUsers(activeUserManager); } else if (userChoice.Contains("Log Out")) { return; } else if (userChoice.Contains("Exit")) { Environment.Exit(0); } } } }
public static void ChangeUserPermissions(User changingUser) { List <string> manageUserItems; if (changingUser.UserAccess == Accessibility.administrator) { manageUserItems = new List <string>() { "downgrade to USER", "downgrade to GUEST", "Back" }; } else if (changingUser.UserAccess == Accessibility.user) { manageUserItems = new List <string>() { "upgrade to ADMINISTRATOR", "downgrade to GUEST", "Back" }; } else { manageUserItems = new List <string>() { "upgrade to ADMINISTRATOR", "upgrade to USER", "Back" }; } string changeOfAccess = Menus.VerticalMenu($"\n\n\t{changingUser.UserName} is {changingUser.UserAccess}, how do you want to change his permissions?", manageUserItems); using (var database = new DatabaseStuff()) { User changedUser = database.Users.Single(i => i.UserName == changingUser.UserName); if (changeOfAccess.Contains("ADMINISTRATOR")) { changedUser.UserAccess = Accessibility.administrator; } else if (changeOfAccess.Contains("USER")) { changedUser.UserAccess = Accessibility.user; } else if (changeOfAccess.Contains("GUEST")) { changedUser.UserAccess = Accessibility.guest; } else { return; } database.SaveChanges(); } Console.Write($"\n\n\tYou did {changeOfAccess}, the user: {changingUser.UserName}\n\n\tOK"); Console.ReadKey(); }
public static int SelectChatMessage() { Console.Clear(); string chat = StringsFormatted.Chat + "\n\n"; List <string> chatMessages = new List <string>(); using (var database = new DatabaseStuff()) { List <ChatMessage> DBChatMessages = database.Chat.Include("Sender").ToList(); foreach (ChatMessage chatMessage in DBChatMessages) { chatMessages.Add($"{chatMessage.Id}. {chatMessage.TimeSent.ToString("dd/MM HH:mm")} {chatMessage.Sender.UserName}: {chatMessage.Text}"); } } return(int.Parse(Menus.VerticalMenu(chat, chatMessages).Split('.').First())); }
public static void PersonalMessages(UserManager activeUserManager) { while (true) { using (var database = new DatabaseStuff()) { // Probe the database for the sent and received personal messages List <Message> receivedMessages = database.Messages.Include("Sender").Where(message => message.Receiver.Id == activeUserManager.TheUser.Id).ToList(); List <Message> sentMessages = database.Messages.Include("Receiver").Where(message => message.Sender.Id == activeUserManager.TheUser.Id).ToList(); int countReceivedMessages = receivedMessages.Count; int countUnreadReceivedMessages = receivedMessages.Count(message => message.IsRead == false); int countSentMessages = sentMessages.Count; int countUnreadSentMessages = sentMessages.Count(message => message.IsRead == false); string inbox = $"Inbox ({countUnreadReceivedMessages}/{countReceivedMessages})"; string sent = $"Sent ({countUnreadSentMessages}/{countSentMessages})"; // Create the Message Menu items common to all users List <string> messageMenuItems = new List <string> { $"Create NEW", $"{inbox}", $"{sent}", "Back" }; // Acquire the choice of function from the user using a vertical menu string userChoice = Menus.VerticalMenu(StringsFormatted.PersonalMessages, messageMenuItems); if (userChoice.Contains("Create")) { PersonalMessageFunctions.SendEmail(activeUserManager); } else if (userChoice.Contains("Inbox")) { PersonalMessageFunctions.PresentAndManipulateMessage(activeUserManager, receivedMessages); } else if (userChoice.Contains("Sent")) { PersonalMessageFunctions.PresentAndManipulateMessage(activeUserManager, sentMessages, Received: false); } else { return; } } } }
public static void EditChatMessages() { int chosenMessageID = SelectChatMessage(); List <string> editOptions = new List <string>() { "Update", "Delete", "Back" }; string editChoice = Menus.VerticalMenu(StringsFormatted.Options, editOptions); if (editChoice.Contains("Update")) { UpdateChatMessage(chosenMessageID); } else if (editChoice.Contains("Delete")) { DeleteChatMessage(chosenMessageID); } }
public static Message SelectMessage(UserManager activeUserManager, List <Message> Messages, bool Received) { List <string> selectMessageItems = new List <string>(); string receiverName; using (var database = new DatabaseStuff()) { int UserId = database.Users.Single(i => i.UserName == activeUserManager.UserName).Id; foreach (Message message in Messages) { if (Received) { receiverName = message.Sender.UserName; } else { receiverName = message.Receiver.UserName; } selectMessageItems.Add(CustomizeAppearanceOfMessage(message, receiverName, Received)); } selectMessageItems.Add("Back"); string oMessage = Menus.VerticalMenu(StringsFormatted.OpenMessage, selectMessageItems); if (oMessage.Contains("Back")) { return(null); } int messageID = int.Parse(oMessage.Split('|')[1]); Console.Clear(); return(database.Messages.Single(i => i.Id == messageID)); } }