#!/bin/sh
# ============================================================
#  會計收支表新頁面 + 會計管理改名收租管理
#  （每筆交易 CRUD、文件上傳、打印PDF、匯出Excel、
#   分年/月篩選、批量下載ZIP、文件管理頁查看收支表文件）
#  適用：154.94.239.207 (BT Panel)
#  請以 root 執行（寶塔面板「終端機」內貼上）
#  上傳檔案：scp C:\laragon\www\worker-system\wkr_statement.tar.gz root@154.94.239.207:/home/wing/wkr_tmp/
# ============================================================
set -e

PROJ=/www/wwwroot/faithfulness
BASE=/home/wing/wkr_tmp

echo "=== [1/5] 備份資料庫 ==="
export MYSQL_PWD=$(grep '^DB_PASSWORD=' $PROJ/.env | cut -d= -f2)
DB_USER=$(grep '^DB_USERNAME=' $PROJ/.env | cut -d= -f2)
DB_NAME=$(grep '^DB_DATABASE=' $PROJ/.env | cut -d= -f2)
mkdir -p $BASE/backup
/www/server/mysql/bin/mysqldump -h 127.0.0.1 -u "$DB_USER" --single-transaction "$DB_NAME" > $BASE/backup/db_before_statement_$(date +%Y%m%d).sql 2>/dev/null || true
ls -la $BASE/backup/db_before_statement_*.sql 2>/dev/null | tail -1
echo "備份完成"

echo "=== [2/5] 解壓 ==="
mkdir -p $BASE/extract_stmt
tar -xzf $BASE/wkr_statement.tar.gz -C $BASE/extract_stmt
echo "完成"

echo "=== [3/5] 備份舊檔 + 複製新檔 ==="
mkdir -p $BASE/backup/files_stmt
for f in app/Services/DocumentStorageService.php app/Policies/DocumentPolicy.php app/Providers/AppServiceProvider.php app/Http/Controllers/DocumentController.php routes/web.php resources/views/layouts/admin.blade.php resources/views/accounting/index.blade.php resources/views/documents/index.blade.php; do
  mkdir -p $BASE/backup/files_stmt/$(dirname $f)
  cp -a $PROJ/$f $BASE/backup/files_stmt/$f 2>/dev/null || true
done
cp -a $BASE/extract_stmt/app/Models/AccountingTransaction.php $PROJ/app/Models/
cp -a $BASE/extract_stmt/app/Exports/AccountingTransactionsExport.php $PROJ/app/Exports/
cp -a $BASE/extract_stmt/app/Http/Controllers/AccountingStatementController.php $PROJ/app/Http/Controllers/
cp -a $BASE/extract_stmt/app/Http/Controllers/DocumentController.php $PROJ/app/Http/Controllers/
cp -a $BASE/extract_stmt/app/Services/DocumentStorageService.php $PROJ/app/Services/
cp -a $BASE/extract_stmt/app/Policies/DocumentPolicy.php $PROJ/app/Policies/
cp -a $BASE/extract_stmt/app/Providers/AppServiceProvider.php $PROJ/app/Providers/
cp -a $BASE/extract_stmt/database/migrations/2026_09_07_190000_create_accounting_transactions_table.php $PROJ/database/migrations/
cp -a $BASE/extract_stmt/routes/web.php $PROJ/routes/
mkdir -p $PROJ/resources/views/accounting/statement
cp -a $BASE/extract_stmt/resources/views/accounting/statement/*.blade.php $PROJ/resources/views/accounting/statement/
cp -a $BASE/extract_stmt/resources/views/accounting/index.blade.php $PROJ/resources/views/accounting/
cp -a $BASE/extract_stmt/resources/views/documents/index.blade.php $PROJ/resources/views/documents/
cp -a $BASE/extract_stmt/resources/views/documents/transaction.blade.php $PROJ/resources/views/documents/
cp -a $BASE/extract_stmt/resources/views/layouts/admin.blade.php $PROJ/resources/views/layouts/
mkdir -p $PROJ/public/css/pages/accounting
cp -a $BASE/extract_stmt/public/css/pages/accounting/statement.css $PROJ/public/css/pages/accounting/
chown -R www:www $PROJ/app $PROJ/database $PROJ/routes $PROJ/resources $PROJ/public/css
echo "完成"

echo "=== [4/5] migration + 清快取 ==="
cd $PROJ
sudo -u www /usr/bin/php artisan migrate --force
sudo -u www /usr/bin/php artisan optimize:clear 2>&1 | tail -1

echo "=== [5/5] 驗證 ==="
sudo -u www /usr/bin/php artisan migrate:status 2>/dev/null | tail -2
sudo -u www /usr/bin/php artisan tinker --execute="echo 'accounting_transactions table: '.(Illuminate\Support\Facades\Schema::hasTable('accounting_transactions')?'OK':'MISSING').PHP_EOL;" 2>/dev/null | tail -1
echo "-- statement routes: $(sudo -u www /usr/bin/php artisan route:list 2>/dev/null | grep -c accounting.statement) (9 = OK)"
echo "-- sidebar 收租管理: $(grep -c '收租管理' resources/views/layouts/admin.blade.php) (>=1 = OK)"
echo "-- sidebar 會計收支表: $(grep -c '會計收支表' resources/views/layouts/admin.blade.php) (>=1 = OK)"
echo "=== 全部完成，Ctrl+F5 重新整理頁面 ==="
