#!/bin/bash

set -e

echo "🚀 Setting up MatematikaNusantara Docker Environment"

# Check if Docker is installed
if ! command -v docker &> /dev/null; then
    echo "❌ Docker is not installed. Please install Docker first."
    exit 1
fi

if ! command -v docker-compose &> /dev/null; then
    echo "❌ Docker Compose is not installed. Please install Docker Compose first."
    exit 1
fi

# Copy environment file if not exists
if [ ! -f .env ]; then
    echo "📝 Creating .env from .env.docker..."
    cp .env.docker .env
    echo "⚠️  Please edit .env and set your APP_KEY and other credentials"
else
    echo "✅ .env file already exists"
fi

# Generate APP_KEY if not set
if ! grep -q "APP_KEY=base64:" .env; then
    echo "🔑 Generating application key..."
    docker run --rm -v $(pwd):/app -w /app php:8.2-cli php artisan key:generate --force || true
fi

# Create necessary directories
echo "📁 Creating necessary directories..."
mkdir -p storage/app/public
mkdir -p storage/framework/{cache,sessions,testing,views}
mkdir -p storage/logs
mkdir -p bootstrap/cache

# Set permissions
echo "🔒 Setting permissions..."
chmod -R 775 storage bootstrap/cache

# Build Docker image
echo "🏗️  Building Docker image..."
docker-compose -f docker-compose.prod.yml build

# Start services
echo "▶️  Starting services..."
docker-compose -f docker-compose.prod.yml up -d

# Wait for MySQL to be ready
echo "⏳ Waiting for MySQL to be ready..."
sleep 10

# Run migrations
echo "🗄️  Running database migrations..."
docker-compose -f docker-compose.prod.yml exec -T app php artisan migrate --force

# Create storage link
echo "🔗 Creating storage link..."
docker-compose -f docker-compose.prod.yml exec -T app php artisan storage:link

# Cache configuration
echo "⚡ Caching configuration..."
docker-compose -f docker-compose.prod.yml exec -T app php artisan config:cache
docker-compose -f docker-compose.prod.yml exec -T app php artisan route:cache
docker-compose -f docker-compose.prod.yml exec -T app php artisan view:cache

echo ""
echo "✨ Setup complete!"
echo ""
echo "📌 Your application is running at: http://localhost:8080"
echo ""
echo "Useful commands:"
echo "  - View logs: docker-compose -f docker-compose.prod.yml logs -f"
echo "  - Stop: docker-compose -f docker-compose.prod.yml down"
echo "  - Restart: docker-compose -f docker-compose.prod.yml restart"
echo "  - Run artisan: docker-compose -f docker-compose.prod.yml exec app php artisan [command]"
echo ""
