change install file

This commit is contained in:
Flatlogic Bot 2026-02-28 07:03:36 +00:00
parent 10eedb49b2
commit b304da2bea
3 changed files with 51 additions and 29 deletions

View File

@ -9,22 +9,23 @@ $type_filter = $_GET['type'] ?? '';
$user_filter = $_GET['user_id'] ?? '';
$params = [];
$where = ["due_date < CURDATE()", "status != 'closed'", "type != 'internal'"];
$where = ["m.due_date < CURDATE()", "s.name != 'closed'", "m.type != 'internal'"];
if ($type_filter) {
$where[] = "type = ?";
$where[] = "m.type = ?";
$params[] = $type_filter;
}
if ($user_filter) {
$where[] = "assigned_to = ?";
$where[] = "m.assigned_to = ?";
$params[] = $user_filter;
}
$where_clause = implode(" AND ", $where);
$sql = "SELECT m.*, u.full_name as assigned_name
$sql = "SELECT m.*, u.full_name as assigned_name, s.name as status_name, s.color as status_color
FROM mailbox m
LEFT JOIN users u ON m.assigned_to = u.id
LEFT JOIN mailbox_statuses s ON m.status_id = s.id
WHERE $where_clause
ORDER BY m.due_date ASC";
@ -34,6 +35,19 @@ $overdue_items = $stmt->fetchAll();
// Fetch all users for filter
$users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetchAll();
function getStatusBadgeForReport($item) {
$status_name = $item['status_name'] ?? 'غير معروف';
$status_color = $item['status_color'] ?? '#6c757d';
// Translation for default statuses
$display_name = $status_name;
if ($status_name == 'received') $display_name = 'تم الاستلام';
if ($status_name == 'in_progress') $display_name = 'قيد المعالجة';
if ($status_name == 'closed') $display_name = 'مكتمل';
return '<span class="badge" style="background-color: ' . $status_color . ';">' . htmlspecialchars($display_name) . '</span>';
}
?>
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
@ -75,13 +89,14 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover">
<table class="table table-hover align-middle">
<thead>
<tr>
<th>رقم المرجع</th>
<th>النوع</th>
<th>الموضوع</th>
<th>الموظف المسؤول</th>
<th>الحالة</th>
<th>تاريخ الاستحقاق</th>
<th>الأيام المتأخرة</th>
<th>الإجراءات</th>
@ -90,7 +105,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
<tbody>
<?php if (empty($overdue_items)): ?>
<tr>
<td colspan="7" class="text-center py-4 text-muted">لا توجد مهام متأخرة حالياً.</td>
<td colspan="8" class="text-center py-4 text-muted">لا توجد مهام متأخرة حالياً.</td>
</tr>
<?php else: ?>
<?php foreach ($overdue_items as $item):
@ -99,7 +114,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
$diff = $today->diff($due_date)->format("%a");
?>
<tr>
<td><?= htmlspecialchars($item['ref_no']) ?></td>
<td class="fw-bold"><?= htmlspecialchars($item['ref_no']) ?></td>
<td>
<span class="badge bg-<?= $item['type'] == 'inbound' ? 'info' : 'warning' ?>">
<?= $item['type'] == 'inbound' ? 'وارد' : 'صادر' ?>
@ -107,6 +122,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
</td>
<td><?= htmlspecialchars($item['subject']) ?></td>
<td><?= htmlspecialchars($item['assigned_name'] ?? 'غير معين') ?></td>
<td><?= getStatusBadgeForReport($item) ?></td>
<td class="text-danger fw-bold"><?= $item['due_date'] ?></td>
<td class="text-danger fw-bold"><?= $diff ?> يوم</td>
<td>
@ -123,4 +139,4 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
</div>
</div>
<?php require_once 'includes/footer.php'; ?>
<?php require_once 'includes/footer.php'; ?>

View File

@ -12,23 +12,26 @@ $due_tomorrow = db()->query("
SELECT m.*, u.email, u.full_name
FROM mailbox m
JOIN users u ON m.assigned_to = u.id
JOIN mailbox_statuses s ON m.status_id = s.id
WHERE m.due_date = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
AND m.status != 'closed'
AND s.name != 'closed'
")->fetchAll();
foreach ($due_tomorrow as $task) {
if (!empty($task['email'])) {
$subject = "تذكير: موعد نهائي لمهمة غداً - " . $task['ref_no'];
$html = "
<h3>تذكير بموعد نهائي</h3>
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
<p>هذا تذكير بأن المهمة التالية مستحقة غداً:</p>
<ul>
<li><b>رقم المرجع:</b> " . htmlspecialchars($task['ref_no']) . "</li>
<li><b>الموضوع:</b> " . htmlspecialchars($task['subject']) . "</li>
<li><b>تاريخ الاستحقاق:</b> " . $task['due_date'] . "</li>
</ul>
<p>يرجى متابعة المهمة وإغلاقها في الوقت المحدد.</p>
<div dir='rtl' style='font-family: Arial, sans-serif;'>
<h3>تذكير بموعد نهائي</h3>
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
<p>هذا تذكير بأن المهمة التالية مستحقة غداً:</p>
<ul>
<li><b>رقم المرجع:</b> " . htmlspecialchars($task['ref_no']) . "</li>
<li><b>الموضوع:</b> " . htmlspecialchars($task['subject']) . "</li>
<li><b>تاريخ الاستحقاق:</b> " . $task['due_date'] . "</li>
</ul>
<p>يرجى متابعة المهمة وإغلاقها في الوقت المحدد.</p>
</div>
";
$res = MailService::sendMail($task['email'], $subject, $html);
if ($res['success']) {
@ -45,23 +48,26 @@ $overdue = db()->query("
SELECT m.*, u.email, u.full_name
FROM mailbox m
JOIN users u ON m.assigned_to = u.id
JOIN mailbox_statuses s ON m.status_id = s.id
WHERE m.due_date < CURDATE()
AND m.status != 'closed'
AND s.name != 'closed'
")->fetchAll();
foreach ($overdue as $task) {
if (!empty($task['email'])) {
$subject = "تنبيه: مهمة متأخرة! - " . $task['ref_no'];
$html = "
<h3 style='color: red;'>تنبيه: مهمة متأخرة</h3>
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
<p>هذه المهمة قد تجاوزت الموعد النهائي المحدد:</p>
<ul>
<li><b>رقم المرجع:</b> " . htmlspecialchars($task['ref_no']) . "</li>
<li><b>الموضوع:</b> " . htmlspecialchars($task['subject']) . "</li>
<li><b>تاريخ الاستحقاق:</b> <span style='color: red;'>" . $task['due_date'] . "</span></li>
</ul>
<p>يرجى معالجة هذه المهمة في أقرب وقت ممكن.</p>
<div dir='rtl' style='font-family: Arial, sans-serif;'>
<h3 style='color: red;'>تنبيه: مهمة متأخرة</h3>
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
<p>هذه المهمة قد تجاوزت الموعد النهائي المحدد:</p>
<ul>
<li><b>رقم المرجع:</b> " . htmlspecialchars($task['ref_no']) . "</li>
<li><b>الموضوع:</b> " . htmlspecialchars($task['subject']) . "</li>
<li><b>تاريخ الاستحقاق:</b> <span style='color: red;'>" . $task['due_date'] . "</span></li>
</ul>
<p>يرجى معالجة هذه المهمة في أقرب وقت ممكن.</p>
</div>
";
$res = MailService::sendMail($task['email'], $subject, $html);
if ($res['success']) {
@ -72,4 +78,4 @@ foreach ($overdue as $task) {
}
}
echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL;
echo "[" . date('Y-m-d H:i:s') . "] Reminder process finished." . PHP_EOL;