<?php
// fetch_schedule.php
// Autors: Kārlis Mālnieks
include('db_connection.php');

// Iegūstam parametrus no pieprasījuma
$user_level = isset($_GET['user_level']) ? (int)$_GET['user_level'] : 0;
$user_id = isset($_GET['user_id']) ? (int)$_GET['user_id'] : 0;
$class_id = isset($_GET['class_id']) ? (int)$_GET['class_id'] : null;
$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d'); // Noklusējuma datums ir šodien

// Pārbaudām, vai ir derīgi pieprasījuma parametri
if ($user_level <= 0 || $user_id <= 0 || empty($date)) {
    echo json_encode(['success' => false, 'message' => 'Invalid request parameters']);
    exit();
}

// Ja lietotājs ir administrātors (user_level === 3), bet nav norādīts klase, atgriežam tukšu sarakstu
if ($user_level === 3 && empty($class_id)) {
    echo json_encode(['success' => true, 'schedule' => []]);
    exit();
}

// Izveidojam SQL vaicājumu
$query = "SELECT cs.id, cs.date, cs.position, s.name AS subject_name, r.room_number, 
                 e.username AS teacher_name, 
                 c.class_name
          FROM class_schedule cs
          JOIN subjects s ON cs.subject_id = s.id
          JOIN rooms r ON cs.room_id = r.id
          LEFT JOIN emails_v e ON cs.teacher_id = e.id
          LEFT JOIN classes c ON cs.class_id = c.id
          WHERE cs.date = :date";

// Atkarībā no lietotāja līmeņa pievienojam atbilstošos filtrus
if ($user_level === 1) {
    $query .= " AND cs.class_id = :class_id"; // Ja lietotājs ir skolēns, pievieno filtru pēc klases
} elseif ($user_level === 2) {
    $query .= " AND cs.teacher_id = :user_id"; // Ja lietotājs ir skolotājs, pievieno filtru pēc skolotāja ID
} elseif ($user_level === 3) {
    if ($class_id) {
        $query .= " AND cs.class_id = :class_id"; // Ja lietotājs ir administrātors un ir norādīta klase, pievieno filtru
    }
} else {
    echo json_encode(['success' => false, 'message' => 'Invalid user level']);
    exit();
}

try {
    $stmt = $pdo->prepare($query); // Sagatavojam SQL vaicājumu
    $stmt->bindParam(':date', $date); // Piesaistām datumu vaicājumam

    // Atbilstoši lietotāja līmenim piesaistām papildu parametrus
    if ($user_level === 1) {
        $stmt->bindParam(':class_id', $class_id); // Skolēnam piesaistām klasi
    } elseif ($user_level === 2) {
        $stmt->bindParam(':user_id', $user_id); // Skolotājam piesaistām skolotāja ID
    } elseif ($user_level === 3) {
        if ($class_id) {
            $stmt->bindParam(':class_id', $class_id); // Administrators var izvēlēties klasi
        }
    }

    $stmt->execute(); // Izpildām vaicājumu
    
    $schedule = $stmt->fetchAll(PDO::FETCH_ASSOC); // Iegūstam visus ierakstus no rezultātiem

    if (count($schedule) > 0) {
        echo json_encode(['success' => true, 'schedule' => $schedule]); // Atgriežam atrasto stundu sarakstu
    } else {
        echo json_encode(['success' => true, 'schedule' => []]); // Ja nav atrasti ieraksti, atgriežam tukšu sarakstu
    }
} catch (PDOException $e) {
    echo json_encode(['success' => false, 'message' => 'Error executing query: ' . $e->getMessage()]);
}
?>
