<?php
session_start();
require_once '../config/database.php';

// Check if user is logged in and has admin role
if (!isset($_SESSION['user_id']) || $_SESSION['user_role'] !== 'admin') {
    $_SESSION['error_message'] = 'আপনার এই কাজের অনুমতি নেই।';
    header('Location: list.php');
    exit();
}

// Get teacher ID from URL
$teacher_id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

if ($teacher_id <= 0) {
    $_SESSION['error_message'] = 'অবৈধ শিক্ষক আইডি।';
    header('Location: list.php');
    exit();
}

try {
    // Get teacher info first including user_id
    $stmt = $pdo->prepare("SELECT first_name, last_name, user_id, photo FROM teachers WHERE id = ?");
    $stmt->execute([$teacher_id]);
    $teacher = $stmt->fetch();
    
    if (!$teacher) {
        $_SESSION['error_message'] = 'শিক্ষক খুঁজে পাওয়া যায়নি।';
        header('Location: list.php');
        exit();
    }
    
    $teacher_name = $teacher['first_name'] . ' ' . $teacher['last_name'];
    
    // Check if teacher is assigned to any classes
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM class_teachers WHERE teacher_id = ?");
    $stmt->execute([$teacher_id]);
    $class_count = $stmt->fetchColumn();
    
    if ($class_count > 0) {
        $_SESSION['error_message'] = 'এই শিক্ষক বর্তমানে ' . $class_count . ' টি ক্লাসে নির্ধারিত, তাই মুছে ফেলা যাবে না। প্রথমে ক্লাস থেকে অ্যাসাইনমেন্ট মুছে ফেলুন।';
        header('Location: list.php');
        exit();
    }
    
    // Check if teacher is assigned to any subjects
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM class_subjects WHERE teacher_id = ?");
    $stmt->execute([$teacher_id]);
    $subject_count = $stmt->fetchColumn();
    
    if ($subject_count > 0) {
        $_SESSION['error_message'] = 'এই শিক্ষক বর্তমানে ' . $subject_count . ' টি বিষয়ে নির্ধারিত, তাই মুছে ফেলা যাবে না। প্রথমে বিষয় থেকে অ্যাসাইনমেন্ট মুছে ফেলুন।';
        header('Location: list.php');
        exit();
    }
    
    // Check if teacher has any assignments
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM assignments WHERE teacher_id = ?");
    $stmt->execute([$teacher_id]);
    $assignment_count = $stmt->fetchColumn();
    
    if ($assignment_count > 0) {
        $_SESSION['error_message'] = 'এই শিক্ষক বর্তমানে ' . $assignment_count . ' টি অ্যাসাইনমেন্টে নির্ধারিত, তাই মুছে ফেলা যাবে না। প্রথমে অ্যাসাইনমেন্ট থেকে অ্যাসাইনমেন্ট মুছে ফেলুন।';
        header('Location: list.php');
        exit();
    }
    
    // Check if teacher has any exam duties
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM exam_room_duties WHERE teacher_id = ?");
    $stmt->execute([$teacher_id]);
    $duty_count = $stmt->fetchColumn();
    
    if ($duty_count > 0) {
        $_SESSION['error_message'] = 'এই শিক্ষক বর্তমানে ' . $duty_count . ' টি পরীক্ষার ডিউটিতে নির্ধারিত, তাই মুছে ফেলা যাবে না। প্রথমে ডিউটি থেকে অ্যাসাইনমেন্ট মুছে ফেলুন।';
        header('Location: list.php');
        exit();
    }
    
    // Start transaction
    $pdo->beginTransaction();
    
    try {
        // Delete teacher photo if exists
        if (!empty($teacher['photo'])) {
            $photo_path = '../' . $teacher['photo'];
            if (file_exists($photo_path)) {
                @unlink($photo_path);
            }
        }
        
        // Remove teacher from timetable entries (CASCADE DELETE will handle this in newer DB versions)
        $stmt = $pdo->prepare("DELETE FROM timetable WHERE teacher_id = ?");
        $stmt->execute([$teacher_id]);
        
        // Handle user account deletion if exists
        if (!empty($teacher['user_id'])) {
            $user_id_to_delete = $teacher['user_id'];
            
            // Set user_id to NULL first to avoid constraint violation
            $stmt = $pdo->prepare("UPDATE teachers SET user_id = NULL WHERE id = ?");
            $stmt->execute([$teacher_id]);
            
            // Delete the user account
            $stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
            $stmt->execute([$user_id_to_delete]);
        }
        
        // Now delete the teacher record
        $stmt = $pdo->prepare("DELETE FROM teachers WHERE id = ?");
        $result = $stmt->execute([$teacher_id]);
        
        if ($result && $stmt->rowCount() > 0) {
            $pdo->commit();
            $_SESSION['success_message'] = 'শিক্ষক "' . $teacher_name . '" সফলভাবে মুছে ফেলা হয়েছে।';
        } else {
            throw new Exception('শিক্ষক মুছে ফেলতে সমস্যা হয়েছে।');
        }
        
    } catch (Exception $e) {
        $pdo->rollBack();
        error_log("Teacher deletion error: " . $e->getMessage());
        throw $e;
    }
    
} catch (Exception $e) {
    $_SESSION['error_message'] = 'শিক্ষক মুছে ফেলতে ব্যর্থ: ' . $e->getMessage();
}

header('Location: list.php');
exit();
?>