<?php
// تفعيل عرض الأخطاء لغرض التطوير
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$pageTitle = 'إدارة مرفقات الالمستشفى';
include '../../includes/header.php';

// التحقق من صلاحية المستخدم
checkLogin();
if (!hasPermission('view_company_data')) {
    $_SESSION['error_message'] = 'ليس لديك صلاحية لإدارة المرفقات.';
    header('Location: ../dashboard.php');
    exit();
}

$db = getDB();
$errors = [];
$successMessage = '';

// جلب معرف الالمستشفى من الرابط
$company_id = $_GET['company_id'] ?? null;
if (empty($company_id)) {
    $_SESSION['error_message'] = 'لم يتم تحديد الالمستشفى.';
    header('Location: index.php');
    exit();
}

// جلب اسم الالمستشفى
$company = $db->select("SELECT company_name FROM `companies` WHERE id = ?", [$company_id]);
if (empty($company)) {
    $_SESSION['error_message'] = 'الالمستشفى غير موجودة.';
    header('Location: index.php');
    exit();
}
$company_name = $company[0]['company_name'];

// --- رفع الملفات ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['attachment'])) {
    $upload_dir = '../../uploads/company_attachments/';
    if (!is_dir($upload_dir)) mkdir($upload_dir, 0777, true);

    $file = $_FILES['attachment'];
    $file_name = basename($file['name']);
    $file_temp = $file['tmp_name'];
    $file_error = $file['error'];
    $file_size = $file['size'];
    $file_type = $file['type'];
    $renewal_date = $_POST['renewal_date'] ?? null;

    if ($file_error !== UPLOAD_ERR_OK) {
        $errors[] = 'حدث خطأ أثناء رفع الملف.';
    } else {
        $unique_name = uniqid() . '_' . $file_name;
        $destination = $upload_dir . $unique_name;

        if (move_uploaded_file($file_temp, $destination)) {
            try {
                $created_at = date('Y-m-d H:i:s');
                $db->insert(
                    "INSERT INTO `company_attachments` 
                    (company_id, file_path, file_name, file_size, file_type, renewal_date, created_at) 
                    VALUES (?, ?, ?, ?, ?, ?, ?)",
                    [$company_id, $destination, $file_name, $file_size, $file_type, $renewal_date, $created_at]
                );
                $_SESSION['success_message'] = 'تم رفع الملف بنجاح!';
            } catch (Exception $e) {
                unlink($destination);
                error_log("DB Error: " . $e->getMessage());
                $_SESSION['error_message'] = 'حدث خطأ أثناء حفظ الملف في قاعدة البيانات.';
            }
        } else {
            $_SESSION['error_message'] = 'فشل نقل الملف إلى المجلد المحدد.';
        }
    }
    header("Location: manage_attachments.php?company_id=$company_id");
    exit();
}

// --- حذف الملفات ---
if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['file_id'])) {
    $file_id = $_GET['file_id'];
    try {
        $file_info = $db->select("SELECT file_path FROM `company_attachments` WHERE id = ? AND company_id = ?", [$file_id, $company_id]);
        if (!empty($file_info)) {
            $file_path = $file_info[0]['file_path'];
            if (file_exists($file_path)) unlink($file_path);
            $db->delete("DELETE FROM `company_attachments` WHERE id = ?", [$file_id]);
            $_SESSION['success_message'] = 'تم حذف المرفق بنجاح!';
        } else {
            $_SESSION['error_message'] = 'المرفق غير موجود أو لا ينتمي لهذه الالمستشفى.';
        }
    } catch (Exception $e) {
        error_log("DB Error: " . $e->getMessage());
        $_SESSION['error_message'] = 'حدث خطأ أثناء حذف المرفق.';
    }
    header("Location: manage_attachments.php?company_id=$company_id");
    exit();
}

// --- تعديل تاريخ التجديد ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && ($_POST['action'] ?? '') === 'update_renewal_date') {
    $file_id = $_POST['file_id'] ?? null;
    $new_renewal_date = $_POST['new_renewal_date'] ?: null;

    if ($file_id) {
        try {
            $exists = $db->select("SELECT id FROM `company_attachments` WHERE id = ? AND company_id = ?", [$file_id, $company_id]);
            if (!empty($exists)) {
                $db->update("UPDATE `company_attachments` SET renewal_date = ? WHERE id = ?", [$new_renewal_date, $file_id]);
                $_SESSION['success_message'] = 'تم تعديل تاريخ التجديد بنجاح!';
            } else {
                $_SESSION['error_message'] = 'المرفق غير موجود أو لا ينتمي لهذه الالمستشفى.';
            }
        } catch (Exception $e) {
            error_log("DB Error: " . $e->getMessage());
            $_SESSION['error_message'] = 'حدث خطأ أثناء تعديل تاريخ التجديد.';
        }
    }
    header("Location: manage_attachments.php?company_id=$company_id");
    exit();
}

// --- جلب المرفقات ---
$filter_param = $_GET['filter'] ?? null;
if ($filter_param === 'needs_renewal') {
    $today = new DateTime();
    $limit_date = (clone $today)->modify('+60 days')->format('Y-m-d');
    $attachments = $db->select("SELECT * FROM `company_attachments` WHERE company_id = ? AND (renewal_date <= ? OR renewal_date < CURDATE()) ORDER BY renewal_date ASC", [$company_id, $limit_date]);
} else {
    $attachments = $db->select("SELECT * FROM `company_attachments` WHERE company_id = ? ORDER BY created_at DESC", [$company_id]);
}

// عرض رسائل النجاح والأخطاء
$successMessage = $_SESSION['success_message'] ?? '';
unset($_SESSION['success_message']);
$errors = isset($_SESSION['error_message']) ? [$_SESSION['error_message']] : [];
unset($_SESSION['error_message']);

?>

<style>
.modal-backdrop.show {
    opacity: 0.5;
    background-color: rgba(0,0,0,0.5);
}
</style>

<div class="content-area">
    <div class="page-header d-flex justify-content-between align-items-center">
        <div>
            <h2 class="page-title">إدارة المرفقات لـ: <?= htmlspecialchars($company_name) ?></h2>
            <p class="page-subtitle">إضافة وعرض وحذف المرفقات المرتبطة بهذه الالمستشفى.</p>
        </div>
        <div>
            <a href="index.php" class="btn btn-secondary"><i class="fas fa-arrow-left me-2"></i>العودة إلى المستشفى</a>
        </div>
    </div>

    <?php if ($successMessage): ?>
        <div class="alert alert-success mt-3"><?= htmlspecialchars($successMessage) ?></div>
    <?php endif; ?>
    <?php if ($errors): ?>
        <div class="alert alert-danger mt-3"><ul><?php foreach($errors as $err): ?><li><?= htmlspecialchars($err) ?></li><?php endforeach; ?></ul></div>
    <?php endif; ?>

    <!-- رفع ملف -->
    <div class="card shadow-sm mt-4 mb-4">
        <div class="card-header"><h5 class="card-title mb-0">رفع مرفق جديد</h5></div>
        <div class="card-body">
            <form action="manage_attachments.php?company_id=<?= htmlspecialchars($company_id) ?>" method="POST" enctype="multipart/form-data">
                <div class="row align-items-end">
                    <div class="col-md-5 mb-3">
                        <label class="form-label">اختر ملفًا</label>
                        <input type="file" class="form-control" name="attachment" required>
                    </div>
                    <div class="col-md-4 mb-3">
                        <label class="form-label">تاريخ التجديد (اختياري)</label>
                        <input type="date" class="form-control" name="renewal_date">
                    </div>
                    <div class="col-md-3 mb-3">
                        <?php if (hasPermission('manage_companies')): ?>
                        <button type="submit" class="btn btn-primary w-100"><i class="fas fa-upload me-2"></i>رفع الملف</button>
                        <?php endif; ?>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <!-- فلترة المرفقات -->
    <div class="d-flex justify-content-end my-3">
        <a href="manage_attachments.php?company_id=<?= htmlspecialchars($company_id) ?>&filter=needs_renewal" class="btn btn-info me-2">
            <i class="fas fa-exclamation-circle me-2"></i>عرض المرفقات التي تحتاج تجديد
        </a>
        <a href="manage_attachments.php?company_id=<?= htmlspecialchars($company_id) ?>" class="btn btn-outline-info">
            <i class="fas fa-list me-2"></i>عرض كل المرفقات
        </a>
    </div>

    <!-- جدول المرفقات -->
    <div class="card shadow-sm">
        <div class="card-header"><h5 class="card-title mb-0">المرفقات الحالية (<?= count($attachments) ?>)</h5></div>
        <div class="card-body">
            <?php if ($attachments): ?>
            <div class="table-responsive">
                <table class="table table-hover table-striped">
                    <thead>
                        <tr>
                            <th>اسم الملف</th>
                            <th>حجم الملف</th>
                            <th>تاريخ الرفع</th>
                            <th>تاريخ التجديد</th>
                            <th class="text-center">الإجراءات</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($attachments as $att): 
                            $row_class = '';
                            $renewal_alert = '';
                            if ($att['renewal_date']) {
                                $diff = (new DateTime())->diff(new DateTime($att['renewal_date']));
                                if ($diff->days <= 60 && !$diff->invert) {
                                    $renewal_alert = '<span class="badge bg-danger text-white me-2"><i class="fas fa-exclamation-triangle"></i> قريباً</span>';
                                    $row_class = 'table-warning';
                                } elseif ($diff->invert) {
                                    $renewal_alert = '<span class="badge bg-danger me-2"><i class="fas fa-exclamation-circle"></i> منتهي</span>';
                                    $row_class = 'table-danger';
                                }
                            }
                        ?>
                        <tr class="<?= $row_class ?>">
                            <td>
                                <a href="<?= htmlspecialchars($att['file_path']) ?>" target="_blank" class="text-decoration-none">
                                    <i class="fas fa-file me-2"></i><?= htmlspecialchars($att['file_name']) ?>
                                </a>
                            </td>
                            <td><?= round($att['file_size']/1024,2) ?> KB</td>
                            <td><?= htmlspecialchars($att['created_at']) ?></td>
                            <td><?= $renewal_alert ?><?= $att['renewal_date'] ?: 'غير محدد' ?></td>
                            <td class="text-center">
                                <?php if (hasPermission('manage_companies')): ?>
                                <button onclick="confirmEditAttachment(<?= $att['id'] ?>, <?= $company_id ?>, '<?= $att['renewal_date'] ?>')" class="btn btn-sm btn-info me-2"><i class="fas fa-edit"></i></button>
                                <button onclick="confirmDeleteAttachment(<?= $att['id'] ?>, <?= $company_id ?>)" class="btn btn-sm btn-danger"><i class="fas fa-trash-alt"></i></button>
                                <?php endif; ?>
                            </td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
            <?php else: ?>
            <div class="alert alert-info text-center">لا توجد مرفقات لهذه الالمستشفى بعد.</div>
            <?php endif; ?>
        </div>
    </div>
</div>

<script>
function confirmDeleteAttachment(fileId, companyId){
    if(confirm("هل أنت متأكد من حذف هذا المرفق؟ سيتم حذف الملف من الخادم أيضاً.")){
        window.location.href = `manage_attachments.php?action=delete&company_id=${companyId}&file_id=${fileId}`;
    }
}

function confirmEditAttachment(fileId, companyId, currentDate){
    let newDate = prompt("أدخل تاريخ التجديد الجديد (YYYY-MM-DD):", currentDate);
    if(newDate !== null){
        const form = document.createElement('form');
        form.method = 'POST';
        form.action = `manage_attachments.php?company_id=${companyId}`;
        form.innerHTML = `
            <input type="hidden" name="action" value="update_renewal_date">
            <input type="hidden" name="file_id" value="${fileId}">
            <input type="hidden" name="new_renewal_date" value="${newDate}">
        `;
        document.body.appendChild(form);
        form.submit();
    }
}
</script>

<?php include '../../includes/footer.php'; ?>
