#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."

if [[ ! -f .env ]]; then
  cp .env.example .env
  secret=$(openssl rand -hex 32 2>/dev/null || echo "change_me_run_openssl_rand_hex_32")
  sed -i "s/CHATWOOT_SECRET_KEY_BASE=change_me_run_openssl_rand_hex_32/CHATWOOT_SECRET_KEY_BASE=${secret}/" .env
  echo "Created .env with random SECRET_KEY_BASE."
fi

# shellcheck disable=SC1091
source .env

if docker ps -a --format '{{.Names}}' | grep -q '^chatwoot-rails$'; then
  echo "NOTE: Old CRM-bundled containers (chatwoot-rails on :3000) exist."
  echo "      Stop them first OR set CHATWOOT_HOST_PORT=3001 in .env"
  echo "      cd /var/www/html/crm/instances/crm && docker compose -f docker-compose.chatwoot.yml down"
fi

echo "Pulling images..."
docker compose pull

echo "Starting embedded postgres + redis (--profile embedded-db)..."
docker compose --profile embedded-db up -d postgres redis
sleep 6

if ! docker compose exec -T postgres psql -U "${POSTGRES_USERNAME:-chatwoot}" -d "${POSTGRES_DATABASE:-chatwoot}" -c 'select 1' >/dev/null 2>&1; then
  echo "Waiting for postgres..."
  sleep 8
fi

export POSTGRES_HOST=postgres

echo "Preparing database (first install only; safe to re-run)..."
docker compose run --rm rails bundle exec rails db:chatwoot_prepare

echo "Starting web + worker..."
docker compose up -d rails sidekiq

port="${CHATWOOT_HOST_PORT:-3000}"
url="${CHATWOOT_FRONTEND_URL:-http://localhost:${port}}"

echo ""
echo "Chatwoot standalone is up."
echo "  URL: ${url}"
echo "  Login: ${url}/app/login"
echo ""
echo "Create admin via UI (signup enabled) or:"
echo "  ./scripts/create-admin.sh"
echo ""
echo "Website widget token: Settings → Inboxes → Website → Configuration"
echo "Qiyasy UI .env:"
echo "  VITE_LIVE_CHAT_ENABLED=true"
echo "  VITE_CHATWOOT_WEBSITE_TOKEN=<token>"
echo "  VITE_CHATWOOT_BASE_URL=${url}"
