File "declaration.php"

Full path: /home2/santhos2/public_html/bharath-coe.firstmatrix.in.net/api/qp_setter/declaration.php
File size: 3.31 KiB (3392 bytes)
MIME-type: text/x-php
Charset: utf-8

Download   Open   Back

<?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_declarations (
    id INT AUTO_INCREMENT PRIMARY KEY,
    assignment_id INT NOT NULL,
    staff_id INT NOT NULL,
    answers_json TEXT NULL,
    decl_name VARCHAR(255) NULL,
    decl_course VARCHAR(255) NULL,
    decl_date DATE NULL,
    decl_signature VARCHAR(255) NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY uq_decl (assignment_id, staff_id)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

  if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    $st = $pdo->prepare('SELECT answers_json, decl_name, decl_course, decl_date, decl_signature FROM qp_setter_declarations WHERE assignment_id = ? AND staff_id = ?');
    $st->execute([$assignmentId, $staffId]);
    $row = $st->fetch(PDO::FETCH_ASSOC);
    if ($row) {
      // Set session flag that declaration is completed (if loading existing data)
      $_SESSION['declaration_completed'] = true;
      
      $data = [
        'answers' => json_decode($row['answers_json'] ?? '[]', true),
        'name' => $row['decl_name'] ?? '',
        'course' => $row['decl_course'] ?? '',
        'date' => $row['decl_date'] ?? '',
        'signature' => $row['decl_signature'] ?? ''
      ];
      echo json_encode(['status'=>'success','data'=>$data]);
    } else {
      echo json_encode(['status'=>'success','data'=>null]);
    }
    exit;
  }

  if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true) ?: [];
    $answers = $input['answers'] ?? [];
    $name = trim((string)($input['name'] ?? ''));
    $course = trim((string)($input['course'] ?? ''));
    $date = trim((string)($input['date'] ?? ''));
    $signature = trim((string)($input['signature'] ?? ''));

    $json = json_encode($answers, JSON_UNESCAPED_UNICODE);
    $st = $pdo->prepare('INSERT INTO qp_setter_declarations (assignment_id, staff_id, answers_json, decl_name, decl_course, decl_date, decl_signature) VALUES (?,?,?,?,?,?,?)
                         ON DUPLICATE KEY UPDATE answers_json=VALUES(answers_json), decl_name=VALUES(decl_name), decl_course=VALUES(decl_course), decl_date=VALUES(decl_date), decl_signature=VALUES(decl_signature)');
    $st->execute([$assignmentId, $staffId, $json, $name, $course, $date, $signature]);

    // Set session flag that declaration is completed
    $_SESSION['declaration_completed'] = true;

    echo json_encode(['status'=>'success','message'=>'Declaration saved']);
    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()]);
}
?>


PHP File Manager