File "read.php"
Full path: /home2/santhos2/public_html/bharath-coe.firstmatrix.in.net/api/marksheets/read.php
File size: 4.8 KiB (4919 bytes)
MIME-type: text/x-php
Charset: utf-8
<?php
require_once '../../config/config.php';
header('Content-Type: application/json');
function respond($ok, $msg, $extra = []) {
echo json_encode(($ok ? ['status' => 'success'] : ['status' => 'error']) + ['message' => $msg] + $extra);
exit;
}
try {
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
case 'GET':
handleRead();
break;
case 'POST':
handleCreate();
break;
case 'PUT':
handleUpdate();
break;
case 'DELETE':
handleDelete();
break;
default:
respond(false, 'Method not allowed');
}
} catch (Exception $e) {
respond(false, $e->getMessage());
}
function handleRead() {
global $pdo;
$examDate = $_GET['exam_date'] ?? '';
$session = $_GET['session'] ?? '';
$staffId = $_GET['staff_id'] ?? '';
$status = $_GET['status'] ?? '';
$where = [];
$params = [];
if ($examDate) {
$where[] = "s.exam_date = ?";
$params[] = $examDate;
}
if ($session) {
$where[] = "s.session = ?";
$params[] = $session;
}
if ($staffId) {
$where[] = "s.staff_id = ?";
$params[] = $staffId;
}
if ($status) {
$where[] = "s.status = ?";
$params[] = $status;
}
$whereClause = $where ? 'WHERE ' . implode(' AND ', $where) : '';
$sql = "
SELECT s.*,
st.first_name, st.last_name, st.staff_code
FROM squads s
LEFT JOIN staff st ON s.staff_id = st.staff_id
$whereClause
ORDER BY s.exam_date DESC, s.session, s.squad_name
";
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
respond(true, 'Squad data retrieved successfully', ['data' => $data]);
}
function handleCreate() {
global $pdo;
$input = json_decode(file_get_contents('php://input'), true);
$squadName = $input['squad_name'] ?? '';
$examDate = $input['exam_date'] ?? '';
$session = $input['session'] ?? '';
$staffId = $input['staff_id'] ?? '';
$status = $input['status'] ?? 'Active';
if (!$squadName || !$examDate || !$session || !$staffId) {
respond(false, 'Missing required fields: squad_name, exam_date, session, staff_id');
}
// Check if staff already assigned to squad on this date/session
$checkStmt = $pdo->prepare("
SELECT squad_id FROM squads
WHERE exam_date = ? AND session = ? AND staff_id = ?
");
$checkStmt->execute([$examDate, $session, $staffId]);
if ($checkStmt->fetch()) {
respond(false, 'Staff already assigned to squad on this date/session');
}
$sql = "
INSERT INTO squads
(squad_name, exam_date, session, staff_id, status)
VALUES (?, ?, ?, ?, ?)
";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute([$squadName, $examDate, $session, $staffId, $status]);
if ($result) {
respond(true, 'Squad member created successfully', ['squad_id' => $pdo->lastInsertId()]);
} else {
respond(false, 'Failed to create squad member');
}
}
function handleUpdate() {
global $pdo;
$input = json_decode(file_get_contents('php://input'), true);
$squadId = $input['squad_id'] ?? '';
if (!$squadId) {
respond(false, 'Squad ID is required');
}
$fields = [];
$params = [];
$allowedFields = ['squad_name', 'exam_date', 'session', 'staff_id', 'status'];
foreach ($allowedFields as $field) {
if (isset($input[$field])) {
$fields[] = "$field = ?";
$params[] = $input[$field];
}
}
if (empty($fields)) {
respond(false, 'No fields to update');
}
$params[] = $squadId;
$sql = "UPDATE squads SET " . implode(', ', $fields) . " WHERE squad_id = ?";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute($params);
if ($result) {
respond(true, 'Squad member updated successfully');
} else {
respond(false, 'Failed to update squad member');
}
}
function handleDelete() {
global $pdo;
$input = json_decode(file_get_contents('php://input'), true);
$squadId = $input['squad_id'] ?? '';
if (!$squadId) {
respond(false, 'Squad ID is required');
}
$stmt = $pdo->prepare("DELETE FROM squads WHERE squad_id = ?");
$result = $stmt->execute([$squadId]);
if ($result) {
respond(true, 'Squad member deleted successfully');
} else {
respond(false, 'Failed to delete squad member');
}
}
?>