using Business.Business.Sales; using Business.Business.UserManagment; using Models.Models; using System; using System.Collections.Generic; using System.Text; namespace Display.Views { public class AdminView : ManagerView { User currentUser; public AdminView(User currentUser) : base(currentUser) { this.currentUser = currentUser; } /// /// Shows the avaliable to the user commands. /// /// /// The main menu. /// public override void ShowAvaliableCommands() { base.ShowAvaliableCommands(); Console.WriteLine("3. Administration"); } /// /// Asks the user to choose which group of action to use. /// public override void ActionHandle() { try { while (true) { Console.Clear(); ShowAvaliableCommands(); Console.Write("> "); int input = int.Parse(Console.ReadLine()); if (input == 0) { Environment.Exit(0); } else if (input == 1) { SaleHandle(); } else if (input == 2) { ManageHandle(); } else if (input == 3) { AdminHandle(); } else Console.WriteLine("Invalid operation"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Selection menu with admin actions. /// /// /// Requires role level 3 (Admin). /// public void AdminHandle() { bool running = true; while (running) { Console.WriteLine(); Console.WriteLine("=== ADMINISTRATION ==="); Console.WriteLine("0. Back"); Console.WriteLine(); Console.WriteLine("User Managment"); Console.WriteLine("1. List all users"); Console.WriteLine("2. Get user by id or name"); Console.WriteLine("3. List users by name"); Console.WriteLine("4. Register user"); Console.WriteLine("5. Update role"); Console.WriteLine("6. Update username"); Console.WriteLine("7. Update password"); Console.WriteLine("8. Delete user"); Console.WriteLine(); Console.WriteLine("Product Managment"); Console.WriteLine("9. Add product"); Console.WriteLine("10. List all products"); Console.Write("> "); try { int choice = int.Parse(Console.ReadLine()); switch (choice) { case 1: GetAllUsers(); break; case 2: Get(); break; case 3: GetByApproximateName(); break; case 4: RegisterItem(); break; case 5: UpdateRole(); break; case 6: UpdateName(); break; case 7: UpdatePassword(); break; case 8: Delete(); break; case 9: AddItem(); break; case 10: GetAllItems(); break; case 0: running = false; break; default: Console.WriteLine("Invalid Option!"); break; } } catch (Exception e) { Console.WriteLine(e.Message); } } } /// /// Lists all products from the database. /// private void GetAllItems() { try { ProductController productctrl = new ProductController(currentUser); Console.WriteLine("Getting all items..."); Console.WriteLine("ID - Name - Amount - Price"); foreach (var item in productctrl.GetAll()) { Console.WriteLine($"{item.Id} - {item.Name} - {item.AmountInStock} - {item.Price} "); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Lists all registered users from the database. /// public void GetAllUsers() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Getting all users..."); Console.WriteLine("User ID - Username - Role"); foreach (var item in userctl.GetAll()) { Console.WriteLine($"{item.Id} - {item.Name} - {item.Role.Name} "); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Lists info about a user using their ID or name from the database. /// public void Get() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Getting user..."); Console.Write("Get user by ID or Name: "); string input = Console.ReadLine(); int.TryParse(input, out int inputId); if (inputId != 0) { Console.WriteLine(userctl.Get(inputId)); } else { Console.WriteLine(userctl.Get(input)); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Lists all users which match the search term from the database. /// public void GetByApproximateName() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Getting by name..."); Console.Write("Enter name: "); string input = Console.ReadLine(); foreach (var item in userctl.GetByApproximateName(input)) { Console.WriteLine($"{item.Id} {item.Name} {item.Role.Name}"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Registers a user using the provided data. /// public void RegisterItem() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Registering user..."); Console.Write("Enter username: "); string username = Console.ReadLine(); Console.Write("Enter password: "); string password = Console.ReadLine(); Console.Write("Enter role ID or name (default 1, Cashier): "); string role = Console.ReadLine(); bool result = int.TryParse(role, out int roleId); if (role == null) { userctl.RegisterItem(username, password); Console.WriteLine("Registered user successfully"); } else if (result) { userctl.RegisterItem(username, password, roleId); Console.WriteLine("Registered user successfully"); } else { userctl.RegisterItem(username, password, role); Console.WriteLine("Registered user successfully"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Changes the role given to a specific user. /// public void UpdateRole() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Updating role..."); Console.Write("Enter username: "); string username = Console.ReadLine(); Console.Write("Enter new role ID or name: "); string role = Console.ReadLine(); bool result = int.TryParse(role, out int roleId); if (result) { userctl.UpdateRole(username, roleId); Console.WriteLine("Updated role successfully"); } else { userctl.UpdateRole(username, role); Console.WriteLine("Updated role successfully"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Renames a user. /// public void UpdateName() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Updating username..."); Console.Write("Enter username or ID: "); string user = Console.ReadLine(); Console.Write("Enter new username: "); string username = Console.ReadLine(); bool result = int.TryParse(user, out int userId); if (result) { userctl.UpdateName(userId, username); Console.WriteLine("Updated username successfully"); } else { userctl.UpdateName(user, username); Console.WriteLine("Updated username successfully"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Changes a users' password. /// public void UpdatePassword() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Updating password..."); Console.Write("Enter username or ID: "); string user = Console.ReadLine(); Console.Write("Enter new password: "); string username = Console.ReadLine(); bool result = int.TryParse(user, out int userId); if (result) { userctl.UpdatePassword(userId, username); Console.WriteLine("Updated password successfully"); } else { userctl.UpdatePassword(user, username); Console.WriteLine("Updated password successfully"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Deletes a user from the database. /// public void Delete() { try { UserController userctl = new UserController(currentUser); Console.WriteLine("Deleting user..."); Console.Write("Enter username or ID: "); string user = Console.ReadLine(); bool result = int.TryParse(user, out int userId); if (result) { userctl.Delete(userId); Console.WriteLine("Deleted successfully"); } else { userctl.Delete(user); Console.WriteLine("Deleted successfully"); } } catch (Exception e) { Console.WriteLine(e.Message); } } /// /// Add product to the database. /// public void AddItem() { ProductController productctrl = new ProductController(currentUser); try { Console.WriteLine("Adding item to database..."); Console.Write("Enter product name: "); string product = Console.ReadLine(); Console.Write("Enter price: "); double price = double.Parse(Console.ReadLine()); productctrl.AddItem(product, price); } catch (Exception e) { Console.WriteLine(e.Message); } } } }