#!/usr/bin/env bash
set -euo pipefail

# Run from project root on the cPanel server. This script never contains credentials.
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
BACKEND_DIR="$ROOT_DIR/backend"
cd "$BACKEND_DIR"

test -f .env.example || { echo "backend/.env.example is missing"; exit 1; }
if [ -f .env ]; then
  read -r -p "backend/.env already exists. Replace it? [y/N] " replace_env
  [[ "$replace_env" =~ ^[Yy]$ ]] || { echo "Stopped without changing .env"; exit 0; }
fi

read -r -p "MySQL host [127.0.0.1]: " db_host
db_host="${db_host:-127.0.0.1}"
read -r -p "Full cPanel database name [moyaplus_shop]: " db_name
db_name="${db_name:-moyaplus_shop}"
read -r -p "Full cPanel database user [moyaplus_shop]: " db_user
db_user="${db_user:-moyaplus_shop}"
read -r -s -p "Database password: " db_password
echo
read -r -p "SMTP host [mail.moyaplus.sa]: " smtp_host
smtp_host="${smtp_host:-mail.moyaplus.sa}"
read -r -p "SMTP user [support@moyaplus.sa]: " smtp_user
smtp_user="${smtp_user:-support@moyaplus.sa}"
read -r -s -p "SMTP password (leave blank to configure later): " smtp_password
echo

cp .env.example .env
escape_sed(){ printf '%s' "$1" | sed 's/[\\/&]/\\&/g'; }
db_host_escaped="$(escape_sed "$db_host")"; db_name_escaped="$(escape_sed "$db_name")"; db_user_escaped="$(escape_sed "$db_user")"; db_password_escaped="$(escape_sed "$db_password")"
smtp_host_escaped="$(escape_sed "$smtp_host")"; smtp_user_escaped="$(escape_sed "$smtp_user")"; smtp_password_escaped="$(escape_sed "$smtp_password")"
sed -i "s|^DB_HOST=.*|DB_HOST=$db_host_escaped|;s|^DB_DATABASE=.*|DB_DATABASE=$db_name_escaped|;s|^DB_USERNAME=.*|DB_USERNAME=$db_user_escaped|;s|^DB_PASSWORD=.*|DB_PASSWORD=$db_password_escaped|;s|^MAIL_HOST=.*|MAIL_HOST=$smtp_host_escaped|;s|^MAIL_USERNAME=.*|MAIL_USERNAME=$smtp_user_escaped|;s|^MAIL_PASSWORD=.*|MAIL_PASSWORD=$smtp_password_escaped|" .env
chmod 600 .env

composer install --no-dev --optimize-autoloader --no-interaction
php artisan key:generate --force
php artisan migrate --seed --force
php artisan storage:link
php artisan config:cache
php artisan route:cache
php artisan view:cache

echo "Installation completed. Confirm: https://api.shop.moyaplus.sa/api/v1/health"
