#!/bin/bash
set -euo pipefail

FRONT_DOMAIN="${1:-}"
API_DOMAIN="${2:-}"
DB_HOST="${3:-127.0.0.1}"
DB_NAME="${4:-}"
DB_USER="${5:-}"
DB_PASS="${6:-}"
JWT_SECRET="${7:-}"

if [ -z "$FRONT_DOMAIN" ] || [ -z "$API_DOMAIN" ] || [ -z "$DB_NAME" ] || [ -z "$DB_USER" ] || [ -z "$DB_PASS" ]; then
  echo "Pemakaian:"
  echo "  bash setup-laravel.sh <DOMAIN_FRONTEND> <DOMAIN_BACKEND> <DB_HOST> <DB_NAME> <DB_USER> <DB_PASS> [JWT_SECRET]"
  exit 1
fi

ROOT="$(cd "$(dirname "$0")" && pwd)"
API="$ROOT/api"
FE="$ROOT/frontend"

if [ -z "$JWT_SECRET" ]; then
  JWT_SECRET="$(head -c 32 /dev/urandom | od -An -tx1 | tr -d ' \n')"
fi

echo "==> Menulis api/.env"
cat > "$API/.env" <<EOF
APP_NAME=PADEBERKINEM
APP_ENV=production
APP_KEY=
APP_DEBUG=false
APP_URL=$API_DOMAIN
FRONTEND_URL=$FRONT_DOMAIN

DB_CONNECTION=mysql
DB_HOST=$DB_HOST
DB_PORT=3306
DB_DATABASE=$DB_NAME
DB_USERNAME=$DB_USER
DB_PASSWORD=$DB_PASS

JWT_SECRET=$JWT_SECRET
JWT_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d

SESSION_DRIVER=cookie
CACHE_STORE=file
QUEUE_CONNECTION=sync
STORAGE_PATH=
EOF

echo "==> Menulis frontend/.env.local"
cat > "$FE/.env.local" <<EOF
NODE_ENV=production
NEXT_PUBLIC_API_URL=/api
NEXT_PUBLIC_APP_NAME=PADEBERKINEM
NEXT_PUBLIC_APP_URL=$FRONT_DOMAIN
NEXT_PUBLIC_GOOGLE_CLIENT_ID=
BACKEND_INTERNAL_URL=$API_DOMAIN/api
EOF

cd "$API"
if [ ! -f composer.phar ]; then
  curl -sS https://getcomposer.org/installer | php
fi
php composer.phar config policy.advisories.block false
php composer.phar install --no-dev --optimize-autoloader
php artisan key:generate --force
mkdir -p bootstrap/cache storage/framework/cache/data storage/framework/sessions storage/framework/views storage/logs
chmod -R 775 bootstrap/cache storage

echo "==> Seed minimal (roles + admin)"
php artisan app:seed-minimal

echo ""
echo "Selesai setup Laravel."
echo "Domain backend harus diarahkan ke: .../api/public"
echo "Lanjutkan:"
echo "  bash remove-node-backend.sh"
