#!/bin/bash
#
# Start Local Development Environment with Email Testing
#
# This script starts:
# 1. Mailpit (email testing at http://localhost:8025)
# 2. Laravel backend (API at http://localhost:8000)
# 3. Queue worker (for processing emails)
#
# Usage: ./scripts/start-local-dev-with-email.sh

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_ROOT"

# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

echo "============================================"
echo "Starting Local Development Environment"
echo "============================================"
echo ""

# Check if Mailpit is installed
if ! command -v mailpit &> /dev/null; then
    echo -e "${YELLOW}Mailpit not installed. Installing via Homebrew...${NC}"
    brew install mailpit
fi

# Check if MySQL is running
if ! pgrep -x "mysqld" > /dev/null; then
    echo -e "${YELLOW}MySQL not running. Starting MySQL...${NC}"
    brew services start mysql
    sleep 3
fi

# Backup current .env
if [ -f .env ]; then
    cp .env .env.backup-$(date +%Y%m%d-%H%M%S)
    echo -e "${GREEN}✓ Backed up .env${NC}"
fi

# Extract existing DB password
DB_PASSWORD_VALUE=$(grep "^DB_PASSWORD=" .env 2>/dev/null | cut -d'=' -f2- || echo "")

# Configure .env for local email testing
cat > .env.local-email << ENV_EOF
# Local Email Testing Configuration
# Temporary settings for email development/testing

# MySQL (use local dev database)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=showprima_dev
DB_USERNAME=showprima
DB_PASSWORD=${DB_PASSWORD_VALUE}

# Mailpit (local email testing - modern MailHog replacement)
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=noreply@showprima.test
MAIL_FROM_NAME="Global Gala (Local Dev)"

# Queue (use database driver for simplicity)
QUEUE_CONNECTION=database

# App URLs
APP_URL=http://localhost:8000
FRONTEND_URL=http://localhost:3002

# Keep other settings from original .env
ENV_EOF

# Merge with existing .env
if [ -f .env ]; then
    # Copy non-mail/db settings from original .env
    grep -v "^MAIL_\|^DB_\|^QUEUE_\|^APP_URL\|^FRONTEND_URL" .env >> .env.local-email || true
fi

mv .env.local-email .env
echo -e "${GREEN}✓ Configured .env for local email testing${NC}"
echo ""

# Start Mailpit in background
echo -e "${BLUE}Starting Mailpit...${NC}"
mailpit > storage/logs/mailpit.log 2>&1 &
MAILPIT_PID=$!
echo $MAILPIT_PID > storage/mailpit.pid
sleep 2
echo -e "${GREEN}✓ Mailpit started (PID: $MAILPIT_PID)${NC}"
echo -e "   Web UI: ${BLUE}http://localhost:8025${NC}"
echo ""

# Start Laravel server
echo -e "${BLUE}Starting Laravel API server...${NC}"
php artisan serve --host=localhost --port=8000 > storage/logs/laravel-serve.log 2>&1 &
LARAVEL_PID=$!
echo $LARAVEL_PID > storage/laravel-serve.pid
sleep 2
echo -e "${GREEN}✓ Laravel API server started (PID: $LARAVEL_PID)${NC}"
echo -e "   API URL: ${BLUE}http://localhost:8000${NC}"
echo ""

# Start Queue Worker
echo -e "${BLUE}Starting Queue Worker...${NC}"
php artisan queue:work --tries=3 --timeout=90 > storage/logs/queue-worker.log 2>&1 &
QUEUE_PID=$!
echo $QUEUE_PID > storage/queue-worker.pid
sleep 2
echo -e "${GREEN}✓ Queue Worker started (PID: $QUEUE_PID)${NC}"
echo ""

echo "============================================"
echo -e "${GREEN}Local Development Environment Ready!${NC}"
echo "============================================"
echo ""
echo "Services running:"
echo "  • Mailpit Web UI: http://localhost:8025"
echo "  • Laravel API:    http://localhost:8000"
echo "  • Queue Worker:   Running in background"
echo ""
echo "Logs:"
echo "  • Mailpit:       tail -f storage/logs/mailpit.log"
echo "  • Laravel:       tail -f storage/logs/laravel-serve.log"
echo "  • Queue:         tail -f storage/logs/queue-worker.log"
echo "  • Application:   tail -f storage/logs/laravel.log"
echo ""
echo "Test email system:"
echo "  ./scripts/test-email-system.sh your@email.com"
echo ""
echo "Stop all services:"
echo "  ./scripts/stop-local-dev.sh"
echo ""
