#!/bin/bash
#
# Synex Control - Sistema de Administración Central
# Main menu for system administration modules
#

set -euo pipefail

# Script directory and paths
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LIB_DIR="$SCRIPT_DIR/lib"
MODULES_DIR="$SCRIPT_DIR/modules"

# Load common library
if [ -f "$LIB_DIR/common.sh" ]; then
    source "$LIB_DIR/common.sh"
else
    echo "ERROR: Cannot find common.sh library"
    exit 1
fi

# Module paths
MODULE_USERS="$MODULES_DIR/synex-control-users"
MODULE_NET="$MODULES_DIR/synex-control-net"
MODULE_SERVICES="$MODULES_DIR/synex-control-services"

# Verify root privileges
verify_root() {
    if [ "$EUID" -ne 0 ]; then
        print_error "$(msg main_requires_root)"
        exit 1
    fi
}

# Main menu
show_main_menu() {
    # Set initial breadcrumb
    breadcrumb_set "Synex Control"

    while true; do
        clear
        show_header "$(msg main_title)"

        echo ""
        echo "  1) $(msg main_menu_users)"
        echo "  2) $(msg main_menu_network)"
        echo "  3) $(msg main_menu_services)"
        echo ""
        echo "  0) $(msg main_menu_exit)"
        echo ""

        read_menu_option "$(msg main_select_option) "
        local option="$MENU_INPUT"

        # ESC or 0 pressed - exit
        [[ "$option" == "ESC" || "$option" == "0" ]] && {
            clear
            echo ""
            print_info "$(msg main_goodbye)"
            echo ""
            exit 0
        }

        case "$option" in
            1)
                if [ -x "$MODULE_USERS" ]; then
                    "$MODULE_USERS"
                else
                    print_error "$(msg main_module_not_found): synex-control-users"
                    pause_execution
                fi
                ;;
            2)
                if [ -x "$MODULE_NET" ]; then
                    "$MODULE_NET"
                else
                    print_error "$(msg main_module_not_found): synex-control-net"
                    pause_execution
                fi
                ;;
            3)
                if [ -x "$MODULE_SERVICES" ]; then
                    "$MODULE_SERVICES"
                else
                    print_error "$(msg main_module_not_found): synex-control-services"
                    pause_execution
                fi
                ;;
            *)
                print_error "$(msg main_invalid_option)"
                pause_execution
                ;;
        esac
    done
}

# Signal handling
trap 'echo ""; print_warning "$(msg main_interrupted)"; exit 130' INT TERM

# Main execution
main() {
    verify_root
    show_main_menu
}

main
