#!/bin/bash

# SamCloud Dashboard Startup Script
# This script ensures the dashboard runs as a background service

SCRIPT_DIR="/Volumes/SamMgmt/Containers/SamCloud-Dashboard"
LOG_DIR="$SCRIPT_DIR/logs"
PID_FILE="$SCRIPT_DIR/samcloud.pid"

# Create logs directory if it doesn't exist
mkdir -p "$LOG_DIR"

# Function to start the service
start_service() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null 2>&1; then
            echo "SamCloud Dashboard is already running (PID: $PID)"
            return 0
        else
            rm -f "$PID_FILE"
        fi
    fi
    
    echo "Starting SamCloud Dashboard..."
    cd "$SCRIPT_DIR"
    nohup python3 samcloud_app.py > "$LOG_DIR/samcloud.log" 2> "$LOG_DIR/samcloud.error.log" &
    echo $! > "$PID_FILE"
    echo "SamCloud Dashboard started (PID: $(cat $PID_FILE))"
    echo "Access at: http://localhost:8383"
}

# Function to stop the service
stop_service() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null 2>&1; then
            echo "Stopping SamCloud Dashboard (PID: $PID)..."
            kill $PID
            rm -f "$PID_FILE"
            echo "SamCloud Dashboard stopped"
        else
            echo "SamCloud Dashboard is not running"
            rm -f "$PID_FILE"
        fi
    else
        echo "SamCloud Dashboard is not running"
    fi
}

# Function to check status
status_service() {
    if [ -f "$PID_FILE" ]; then
        PID=$(cat "$PID_FILE")
        if ps -p $PID > /dev/null 2>&1; then
            echo "SamCloud Dashboard is running (PID: $PID)"
            echo "Access at: http://localhost:8383"
        else
            echo "SamCloud Dashboard is not running (stale PID file)"
            rm -f "$PID_FILE"
        fi
    else
        echo "SamCloud Dashboard is not running"
    fi
}

# Function to restart the service
restart_service() {
    stop_service
    sleep 2
    start_service
}

# Main script logic
case "$1" in
    start)
        start_service
        ;;
    stop)
        stop_service
        ;;
    restart)
        restart_service
        ;;
    status)
        status_service
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}"
        echo ""
        echo "Commands:"
        echo "  start   - Start SamCloud Dashboard"
        echo "  stop    - Stop SamCloud Dashboard"
        echo "  restart - Restart SamCloud Dashboard"
        echo "  status  - Check if SamCloud Dashboard is running"
        echo ""
        echo "Default action (no argument): start"
        start_service
        ;;
esac
