#!/bin/bash

# --- Script untuk Mengupload File PDF sebagai Attachment ke Firefly III ---
# Berdasarkan dokumentasi resmi, hanya file yang dikirim dalam request pertama.
# Untuk menghubungkan attachment dengan transaksi/bill, perlu update terpisah.

# Gantilah nilai berikut dengan nilai yang sesuai:
# - FIREFLY_URL: URL instance Firefly III Anda
# - ACCESS_TOKEN: Token akses personal yang valid
# - PDF_FILE_PATH: Path ke file PDF yang akan diupload

# Contoh menjalankan:
# FIREFLY_URL="http://localhost:8080" ACCESS_TOKEN="token_anda" PDF_FILE_PATH="/path/to/your/file.pdf" ./upload_attachment.sh

if [[ -z "${FIREFLY_URL}" || -z "${ACCESS_TOKEN}" || -z "${PDF_FILE_PATH}" ]]; then
  echo "Error: FIREFLY_URL, ACCESS_TOKEN, dan PDF_FILE_PATH harus diset."
  echo "Contoh penggunaan:"
  echo "FIREFLY_URL=\"http://localhost:8080\" ACCESS_TOKEN=\"token_anda\" PDF_FILE_PATH=\"/path/to/your/file.pdf\" ./upload_attachment.sh"
  exit 1
fi

# Cek apakah file PDF ada
if [[ ! -f "${PDF_FILE_PATH}" ]]; then
  echo "Error: File PDF tidak ditemukan di path: ${PDF_FILE_PATH}"
  exit 1
fi

echo "Mengupload attachment ke Firefly III..."
echo "URL: $FIREFLY_URL"
echo "File: $PDF_FILE_PATH"
echo ""

# Upload file sebagai attachment (tanpa menghubungkan ke transaksi/bill dulu)
RESPONSE=$(curl -s -w "%{http_code}" -X POST "${FIREFLY_URL}/api/v1/attachments" \
  -H "Authorization: Bearer ${ACCESS_TOKEN}" \
  -H "Accept: application/json" \
  -F "file=@${PDF_FILE_PATH}")

HTTP_CODE="${RESPONSE: -3}"
JSON_RESPONSE="${RESPONSE%???}"

echo "HTTP Code: $HTTP_CODE"
if [[ "$HTTP_CODE" -eq 200 ]] || [[ "$HTTP_CODE" -eq 201 ]]; then
  echo "Attachment berhasil diupload!"
  echo "Response:"
  echo "$JSON_RESPONSE" | jq '.'
  
  # Ekstrak ID attachment dari response untuk update berikutnya (jika diperlukan)
  ATTACHMENT_ID=$(echo "$JSON_RESPONSE" | jq -r '.data.id')
  echo ""
  echo "Attachment ID: $ATTACHMENT_ID"
  echo "Untuk menghubungkan attachment ini dengan transaksi/bill, gunakan script update_attachment.sh"
else
  echo "Gagal mengupload attachment."
  if [[ -n "$JSON_RESPONSE" ]]; then
    echo "Response: $JSON_RESPONSE"
  fi
fi