#!/bin/bash

set -e

DB_NAME="TAFDB"
DB_USER="TAF"
DB_PASS="TAF123*"
SQL_DIR="sql"
APP_DIR="/var/www/html/TAF"
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$REPO_DIR"
echo "[+] Updating packages..."
apt update && apt upgrade -y

echo "[+] Installing Apache, PHP, PostgreSQL, and PHP extensions..."
apt install -y apache2 postgresql php php-pgsql php-gd php-xml php-mbstring php-curl php-zip php-bcmath php-cli libapache2-mod-php unzip curl git

echo "[+] Enabling mod_rewrite and allowing .htaccess..."
a2enmod rewrite
echo "[+] Copying project files to $APP_DIR..."
rm -rf "$APP_DIR"
mkdir -p "$APP_DIR"
cp -r "$PWD/"* "$APP_DIR"

PSQL_CMD="sudo -u postgres psql -v ON_ERROR_STOP=1"


# Enable .htaccess override
APACHE_CONF="/etc/apache2/apache2.conf"
sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' "$APACHE_CONF"

echo "[+] Restarting Apache..."
apache2ctl -k graceful || apache2ctl -k restart

echo "[+] Configuring PostgreSQL..."
service postgresql start
$PSQL_CMD -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" >/dev/null 2>&1 || true
$PSQL_CMD -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" >/dev/null 2>&1 || true

SCHEMA_FILE="TAFDB.sql"
if [ "$DB_DRIVER" = "pgsql" ] && [ -f "$PWD/TAFDB.pgsql" ]; then
  SCHEMA_FILE="TAFDB.pgsql"
fi
if [ -f "$PWD/$SCHEMA_FILE" ]; then
  echo "[+] Importing main schema $SCHEMA_FILE..."
  sudo -u postgres psql -d "$DB_NAME" -f "$PWD/$SCHEMA_FILE" >/dev/null
fi
# Import test users if file provided
TEST_USERS_FILE="$REPO_DIR/test_users.sql"
if [ -f "$TEST_USERS_FILE" ]; then
    echo "Importing test users from $TEST_USERS_FILE"
    sudo -u postgres psql -d "$DB_NAME" -f "$TEST_USERS_FILE" >/dev/null
else
    echo "No test_users.sql file found. Skipping test user creation."
fi
if [ -d "$SQL_DIR" ]; then
  echo "[+] Importing SQL from $SQL_DIR..."
  for file in $(ls "$SQL_DIR"/*.sql 2>/dev/null | sort); do
    [ -f "$file" ] || continue
    echo "  -> $file"
    sudo -u postgres psql -d "$DB_NAME" -f "$file" >/dev/null
  done
else
  echo "[!] No $SQL_DIR directory found. Skipping SQL import."
fi

echo "[+] Setting permissions on $APP_DIR..."
chown -R www-data:www-data "$APP_DIR"
chmod -R 755 "$APP_DIR"

echo "[✓] Setup complete."
echo "→ Visit: http://localhost"
echo "→ DB: $DB_NAME | User: $DB_USER | Password: $DB_PASS"
exit 0
