change install file
This commit is contained in:
parent
10eedb49b2
commit
b304da2bea
@ -9,22 +9,23 @@ $type_filter = $_GET['type'] ?? '';
|
|||||||
$user_filter = $_GET['user_id'] ?? '';
|
$user_filter = $_GET['user_id'] ?? '';
|
||||||
|
|
||||||
$params = [];
|
$params = [];
|
||||||
$where = ["due_date < CURDATE()", "status != 'closed'", "type != 'internal'"];
|
$where = ["m.due_date < CURDATE()", "s.name != 'closed'", "m.type != 'internal'"];
|
||||||
|
|
||||||
if ($type_filter) {
|
if ($type_filter) {
|
||||||
$where[] = "type = ?";
|
$where[] = "m.type = ?";
|
||||||
$params[] = $type_filter;
|
$params[] = $type_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user_filter) {
|
if ($user_filter) {
|
||||||
$where[] = "assigned_to = ?";
|
$where[] = "m.assigned_to = ?";
|
||||||
$params[] = $user_filter;
|
$params[] = $user_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
$where_clause = implode(" AND ", $where);
|
$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
|
FROM mailbox m
|
||||||
LEFT JOIN users u ON m.assigned_to = u.id
|
LEFT JOIN users u ON m.assigned_to = u.id
|
||||||
|
LEFT JOIN mailbox_statuses s ON m.status_id = s.id
|
||||||
WHERE $where_clause
|
WHERE $where_clause
|
||||||
ORDER BY m.due_date ASC";
|
ORDER BY m.due_date ASC";
|
||||||
|
|
||||||
@ -34,6 +35,19 @@ $overdue_items = $stmt->fetchAll();
|
|||||||
|
|
||||||
// Fetch all users for filter
|
// Fetch all users for filter
|
||||||
$users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetchAll();
|
$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">
|
<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>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-hover">
|
<table class="table table-hover align-middle">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>رقم المرجع</th>
|
<th>رقم المرجع</th>
|
||||||
<th>النوع</th>
|
<th>النوع</th>
|
||||||
<th>الموضوع</th>
|
<th>الموضوع</th>
|
||||||
<th>الموظف المسؤول</th>
|
<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>
|
<tbody>
|
||||||
<?php if (empty($overdue_items)): ?>
|
<?php if (empty($overdue_items)): ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7" class="text-center py-4 text-muted">لا توجد مهام متأخرة حالياً.</td>
|
<td colspan="8" class="text-center py-4 text-muted">لا توجد مهام متأخرة حالياً.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php foreach ($overdue_items as $item):
|
<?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");
|
$diff = $today->diff($due_date)->format("%a");
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
<td><?= htmlspecialchars($item['ref_no']) ?></td>
|
<td class="fw-bold"><?= htmlspecialchars($item['ref_no']) ?></td>
|
||||||
<td>
|
<td>
|
||||||
<span class="badge bg-<?= $item['type'] == 'inbound' ? 'info' : 'warning' ?>">
|
<span class="badge bg-<?= $item['type'] == 'inbound' ? 'info' : 'warning' ?>">
|
||||||
<?= $item['type'] == 'inbound' ? 'وارد' : 'صادر' ?>
|
<?= $item['type'] == 'inbound' ? 'وارد' : 'صادر' ?>
|
||||||
@ -107,6 +122,7 @@ $users = db()->query("SELECT id, full_name FROM users ORDER BY full_name")->fetc
|
|||||||
</td>
|
</td>
|
||||||
<td><?= htmlspecialchars($item['subject']) ?></td>
|
<td><?= htmlspecialchars($item['subject']) ?></td>
|
||||||
<td><?= htmlspecialchars($item['assigned_name'] ?? 'غير معين') ?></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"><?= $item['due_date'] ?></td>
|
||||||
<td class="text-danger fw-bold"><?= $diff ?> يوم</td>
|
<td class="text-danger fw-bold"><?= $diff ?> يوم</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
@ -12,14 +12,16 @@ $due_tomorrow = db()->query("
|
|||||||
SELECT m.*, u.email, u.full_name
|
SELECT m.*, u.email, u.full_name
|
||||||
FROM mailbox m
|
FROM mailbox m
|
||||||
JOIN users u ON m.assigned_to = u.id
|
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)
|
WHERE m.due_date = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
|
||||||
AND m.status != 'closed'
|
AND s.name != 'closed'
|
||||||
")->fetchAll();
|
")->fetchAll();
|
||||||
|
|
||||||
foreach ($due_tomorrow as $task) {
|
foreach ($due_tomorrow as $task) {
|
||||||
if (!empty($task['email'])) {
|
if (!empty($task['email'])) {
|
||||||
$subject = "تذكير: موعد نهائي لمهمة غداً - " . $task['ref_no'];
|
$subject = "تذكير: موعد نهائي لمهمة غداً - " . $task['ref_no'];
|
||||||
$html = "
|
$html = "
|
||||||
|
<div dir='rtl' style='font-family: Arial, sans-serif;'>
|
||||||
<h3>تذكير بموعد نهائي</h3>
|
<h3>تذكير بموعد نهائي</h3>
|
||||||
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
|
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
|
||||||
<p>هذا تذكير بأن المهمة التالية مستحقة غداً:</p>
|
<p>هذا تذكير بأن المهمة التالية مستحقة غداً:</p>
|
||||||
@ -29,6 +31,7 @@ foreach ($due_tomorrow as $task) {
|
|||||||
<li><b>تاريخ الاستحقاق:</b> " . $task['due_date'] . "</li>
|
<li><b>تاريخ الاستحقاق:</b> " . $task['due_date'] . "</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>يرجى متابعة المهمة وإغلاقها في الوقت المحدد.</p>
|
<p>يرجى متابعة المهمة وإغلاقها في الوقت المحدد.</p>
|
||||||
|
</div>
|
||||||
";
|
";
|
||||||
$res = MailService::sendMail($task['email'], $subject, $html);
|
$res = MailService::sendMail($task['email'], $subject, $html);
|
||||||
if ($res['success']) {
|
if ($res['success']) {
|
||||||
@ -45,14 +48,16 @@ $overdue = db()->query("
|
|||||||
SELECT m.*, u.email, u.full_name
|
SELECT m.*, u.email, u.full_name
|
||||||
FROM mailbox m
|
FROM mailbox m
|
||||||
JOIN users u ON m.assigned_to = u.id
|
JOIN users u ON m.assigned_to = u.id
|
||||||
|
JOIN mailbox_statuses s ON m.status_id = s.id
|
||||||
WHERE m.due_date < CURDATE()
|
WHERE m.due_date < CURDATE()
|
||||||
AND m.status != 'closed'
|
AND s.name != 'closed'
|
||||||
")->fetchAll();
|
")->fetchAll();
|
||||||
|
|
||||||
foreach ($overdue as $task) {
|
foreach ($overdue as $task) {
|
||||||
if (!empty($task['email'])) {
|
if (!empty($task['email'])) {
|
||||||
$subject = "تنبيه: مهمة متأخرة! - " . $task['ref_no'];
|
$subject = "تنبيه: مهمة متأخرة! - " . $task['ref_no'];
|
||||||
$html = "
|
$html = "
|
||||||
|
<div dir='rtl' style='font-family: Arial, sans-serif;'>
|
||||||
<h3 style='color: red;'>تنبيه: مهمة متأخرة</h3>
|
<h3 style='color: red;'>تنبيه: مهمة متأخرة</h3>
|
||||||
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
|
<p>عزيزي <b>" . htmlspecialchars($task['full_name']) . "</b>،</p>
|
||||||
<p>هذه المهمة قد تجاوزت الموعد النهائي المحدد:</p>
|
<p>هذه المهمة قد تجاوزت الموعد النهائي المحدد:</p>
|
||||||
@ -62,6 +67,7 @@ foreach ($overdue as $task) {
|
|||||||
<li><b>تاريخ الاستحقاق:</b> <span style='color: red;'>" . $task['due_date'] . "</span></li>
|
<li><b>تاريخ الاستحقاق:</b> <span style='color: red;'>" . $task['due_date'] . "</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>يرجى معالجة هذه المهمة في أقرب وقت ممكن.</p>
|
<p>يرجى معالجة هذه المهمة في أقرب وقت ممكن.</p>
|
||||||
|
</div>
|
||||||
";
|
";
|
||||||
$res = MailService::sendMail($task['email'], $subject, $html);
|
$res = MailService::sendMail($task['email'], $subject, $html);
|
||||||
if ($res['success']) {
|
if ($res['success']) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user