<?php
require_once '../../config/config.php';
if (session_status() !== PHP_SESSION_ACTIVE) { session_start(); }
header('Content-Type: application/json');

try {
  // Check for URL parameters first, then fall back to session
  $staffId = (int)($_GET['staff_id'] ?? $_SESSION['qps_staff_id'] ?? 0);
  $assignmentId = (int)($_GET['assignment_id'] ?? $_SESSION['qps_assignment_id'] ?? 0);
  if (!$staffId || !$assignmentId) { http_response_code(401); echo json_encode(['status'=>'error','message'=>'Unauthorized']); exit; }

  // Ensure table exists
  $pdo->exec("CREATE TABLE IF NOT EXISTS qp_setter_claims (
    id INT AUTO_INCREMENT PRIMARY KEY,
    assignment_id INT NOT NULL,
    staff_id INT NOT NULL,
    name VARCHAR(255) NULL,
    designation VARCHAR(255) NULL,
    department VARCHAR(255) NULL,
    institution_name_address TEXT NULL,
    mobile_no VARCHAR(20) NULL,
    email_id VARCHAR(255) NULL,
    bank_name VARCHAR(255) NULL,
    branch_name VARCHAR(255) NULL,
    bank_account_number VARCHAR(50) NULL,
    ifsc_code VARCHAR(20) NULL,
    pan_number VARCHAR(20) NULL,
    courses_json TEXT NULL,
    total_amount DECIMAL(10,2) NULL,
    amount_in_words TEXT NULL,
    signature_date DATE NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uq_claim (assignment_id, staff_id)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

  if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $st = $pdo->prepare('SELECT * FROM qp_setter_claims WHERE assignment_id = ? AND staff_id = ?');
    $st->execute([$assignmentId, $staffId]);
    $row = $st->fetch(PDO::FETCH_ASSOC);
    if ($row) {
      // Remove internal fields
      unset($row['id'], $row['created_at'], $row['updated_at']);
      echo json_encode(['status'=>'success','data'=>$row]);
    } else {
      echo json_encode(['status'=>'success','data'=>null]);
    }
    exit;
  }

  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true) ?: [];
    
    // Extract all form fields
    $fields = [
      'name', 'designation', 'department', 'institution_name_address',
      'mobile_no', 'email_id', 'bank_name', 'branch_name',
      'bank_account_number', 'ifsc_code', 'pan_number',
      'courses_json', 'total_amount', 'amount_in_words', 'signature_date'
    ];
    
    $values = [];
    $placeholders = [];
    $updateClauses = [];
    
    foreach ($fields as $field) {
      $value = trim((string)($input[$field] ?? ''));
      if ($field === 'total_amount' && $value !== '') {
        $value = (float)$value;
      }
      $values[] = $value;
      $placeholders[] = '?';
      $updateClauses[] = "$field=VALUES($field)";
    }

    $sql = "INSERT INTO qp_setter_claims (assignment_id, staff_id, " . implode(', ', $fields) . ") 
            VALUES (?, ?, " . implode(', ', $placeholders) . ")
            ON DUPLICATE KEY UPDATE " . implode(', ', $updateClauses);
    
    $st = $pdo->prepare($sql);
    $st->execute(array_merge([$assignmentId, $staffId], $values));

    echo json_encode(['status'=>'success','message'=>'Claim form saved successfully']);
    exit;
  }

  http_response_code(405); echo json_encode(['status'=>'error','message'=>'Method not allowed']);
} catch (Throwable $e) {
  http_response_code(500);
  echo json_encode(['status'=>'error','message'=>$e->getMessage()]);
}
?>
