#!/bin/bash

# Docker Environment Verification Script for MEDIX Q

echo "╔════════════════════════════════════════╗"
echo "║   MEDIX Q - Docker Verification       ║"
echo "╚════════════════════════════════════════╝"
echo ""

PASSED=0
FAILED=0

# Check Docker
echo "1️⃣  Checking Docker installation..."
if command -v docker &> /dev/null; then
    VERSION=$(docker --version)
    echo "   ✅ $VERSION"
    ((PASSED++))
else
    echo "   ❌ Docker is not installed"
    ((FAILED++))
fi

# Check Docker Compose
echo ""
echo "2️⃣  Checking Docker Compose..."
if command -v docker-compose &> /dev/null; then
    VERSION=$(docker-compose --version)
    echo "   ✅ $VERSION"
    ((PASSED++))
elif docker compose version &> /dev/null; then
    echo "   ✅ Docker Compose V2 available"
    ((PASSED++))
else
    echo "   ❌ Docker Compose is not installed"
    ((FAILED++))
fi

# Check Docker daemon
echo ""
echo "3️⃣  Checking Docker daemon..."
if docker info &> /dev/null; then
    echo "   ✅ Docker daemon is running"
    ((PASSED++))
else
    echo "   ❌ Docker daemon is not running"
    echo "      Start Docker Desktop or service"
    ((FAILED++))
fi

# Check disk space
echo ""
echo "4️⃣  Checking available disk space..."
if command -v df &> /dev/null; then
    AVAILABLE=$(df -h . | awk 'NR==2 {print $4}')
    echo "   ✅ Available space: $AVAILABLE"
    ((PASSED++))
else
    echo "   ⚠️  Could not check disk space"
fi

# Check port 3000
echo ""
echo "5️⃣  Checking if port 3000 is available..."
if command -v netstat &> /dev/null; then
    if ! netstat -tuln 2>/dev/null | grep -q ':3000'; then
        echo "   ✅ Port 3000 is available"
        ((PASSED++))
    else
        echo "   ⚠️  Port 3000 might be in use"
        ((FAILED++))
    fi
elif command -v lsof &> /dev/null; then
    if ! lsof -i :3000 &> /dev/null; then
        echo "   ✅ Port 3000 is available"
        ((PASSED++))
    else
        echo "   ⚠️  Port 3000 is in use"
        ((FAILED++))
    fi
else
    echo "   ⚠️  Could not check port availability"
fi

# Check required files
echo ""
echo "6️⃣  Checking required files..."
FILES=("Dockerfile" "docker-compose.yml" "package.json")
MISSING=0
for file in "${FILES[@]}"; do
    if [ -f "$file" ]; then
        echo "   ✅ $file"
    else
        echo "   ❌ $file - MISSING"
        ((MISSING++))
    fi
done
if [ $MISSING -eq 0 ]; then
    ((PASSED++))
else
    ((FAILED++))
fi

# Summary
echo ""
echo "╔════════════════════════════════════════╗"
echo "║          Verification Summary         ║"
echo "╚════════════════════════════════════════╝"
echo ""
echo "Passed: ✅ $PASSED"
echo "Failed: ❌ $FAILED"
echo ""

if [ $FAILED -eq 0 ]; then
    echo "🎉 All checks passed! You're ready to run:"
    echo "   ./docker-start.sh"
    exit 0
else
    echo "⚠️  Some checks failed. Please fix the issues above."
    exit 1
fi
