package menu import ( "marmic/servicetrade-toolbox/internal/api" "marmic/servicetrade-toolbox/internal/ui" ) type MenuItem struct { Name string Handler func(*api.Session) Submenu []MenuItem } func GetMainMenu() []MenuItem { return []MenuItem{ {"Administration", HandleAdministration, nil}, {"Assets", HandleAssets, nil}, {"Companies", HandleCompanies, nil}, {"Contacts", HandleContacts, nil}, {"Contracts", HandleContracts, nil}, {"Generic Tools", HandleGenericTools, nil}, {"Invoices", HandleInvoices, nil}, {"Jobs", HandleJobs, nil}, {"Locations", HandleLocations, nil}, {"Notifications", HandleNotifications, nil}, {"Quotes", HandleQuotes, nil}, {"Services", HandleServices, nil}, {"Tags", HandleTags, nil}, {"Users", HandleUsers, nil}, } } func DisplayMenuAndGetChoice(menuItems []MenuItem, title string) int { for { displayMenuItems := make([]string, len(menuItems)+1) for i, item := range menuItems { displayMenuItems[i] = item.Name } displayMenuItems[len(menuItems)] = "Back/Exit" ui.DisplayMenu(displayMenuItems, title) choice, err := ui.GetUserChoice(len(displayMenuItems)) if err == nil { return choice } ui.DisplayMessage("Invalid input. Please try again.") ui.PressEnterToContinue() } } // Placeholder functions for other main menu items func HandleAdministration(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Administration menu placeholder") ui.PressEnterToContinue() } func HandleAssets(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Assets menu placeholder") ui.PressEnterToContinue() } func HandleCompanies(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Companies menu placeholder") ui.PressEnterToContinue() } func HandleContacts(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Contacts menu placeholder") ui.PressEnterToContinue() } func HandleContracts(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Contracts menu placeholder") ui.PressEnterToContinue() } func HandleGenericTools(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Generic Tools menu placeholder") ui.PressEnterToContinue() } func HandleInvoices(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Invoices menu placeholder") ui.PressEnterToContinue() } func HandleLocations(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Locations menu placeholder") ui.PressEnterToContinue() } func HandleNotifications(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Notifications menu placeholder") ui.PressEnterToContinue() } func HandleQuotes(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Quotes menu placeholder") ui.PressEnterToContinue() } func HandleServices(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Services menu placeholder") ui.PressEnterToContinue() } func HandleTags(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Tags menu placeholder") ui.PressEnterToContinue() } func HandleUsers(session *api.Session) { ui.ClearScreen() ui.DisplayMessage("Users menu placeholder") ui.PressEnterToContinue() }