#!/usr/bin/env bash
# =============================================================================
#  Agency PM — Docker first-run initialiser
#  Run once after `docker compose up -d` to migrate and seed the database.
#  Usage:  bash scripts/docker-init.sh
# =============================================================================
set -e

CYAN='\033[0;36m'; GREEN='\033[0;32m'; BOLD='\033[1m'; NC='\033[0m'
info()    { echo -e "${CYAN}[INFO]${NC}  $*"; }
success() { echo -e "${GREEN}[OK]${NC}    $*"; }

echo -e "${BOLD}${CYAN}  Agency PM — Docker Init${NC}"
echo ""

# Wait for containers
info "Waiting for containers to be healthy..."
sleep 5

# .env for Laravel inside container
info "Setting up .env..."
docker compose exec app bash -c "
  if [ ! -f .env ]; then
    cp .env.example .env
    echo '.env created'
  fi
  # Patch Docker-specific values
  sed -i 's|^APP_URL=.*|APP_URL=http://localhost:8000|' .env
  sed -i 's|^DB_HOST=.*|DB_HOST=db|' .env
  sed -i 's|^DB_DATABASE=.*|DB_DATABASE=agencypm|' .env
  sed -i 's|^DB_USERNAME=.*|DB_USERNAME=agencypm_user|' .env
  sed -i 's|^DB_PASSWORD=.*|DB_PASSWORD=agencypm_pass|' .env
  sed -i 's|^FRONTEND_URL=.*|FRONTEND_URL=http://localhost:5173|' .env
  sed -i 's|^SANCTUM_STATEFUL_DOMAINS=.*|SANCTUM_STATEFUL_DOMAINS=localhost:5173|' .env
"

info "Generating app key..."
docker compose exec app php artisan key:generate --ansi

echo ""
read -rp "  Seed demo data? [y/N] " SEED
if [[ "$SEED" =~ ^[Yy]$ ]]; then
  info "Migrating + seeding..."
  docker compose exec app php artisan migrate:fresh --seed --force
else
  info "Running migrations..."
  docker compose exec app php artisan migrate --force
fi

info "Creating storage symlink..."
docker compose exec app php artisan storage:link 2>/dev/null || true

info "Creating default admin..."
docker compose exec app php artisan tinker --execute="
\App\Models\User::firstOrCreate(
  ['email' => 'admin@agencypm.local'],
  [
    'name'      => 'Admin',
    'password'  => bcrypt('Admin@123'),
    'role'      => 'super_admin',
    'is_active' => true,
  ]
);
echo 'Admin ready.';
"

echo ""
success "Docker setup complete!"
echo ""
echo -e "  🌐 App  → ${BOLD}http://localhost:5173${NC}"
echo -e "  🔌 API  → ${BOLD}http://localhost:8000/api/v1${NC}"
echo ""
echo -e "  👤 Login: admin@agencypm.local  /  Admin@123"
echo ""
