beginTransaction(); if ($action === 'add') { if (!canAdd('inbound')) throw new Exception('ليس لديك صلاحية الإضافة.'); $stmt = db()->prepare("INSERT INTO inbound_mail (ref_no, date_registered, due_date, sender, recipient, subject, description, status_id, assigned_to, created_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); $stmt->execute([$ref_no, $date_registered, $due_date, $sender, $recipient, $subject, $description, $status_id, $assigned_to, $_SESSION['user_id']]); $id = db()->lastInsertId(); $success = 'تم إضافة البريد الوارد بنجاح.'; } else { if (!canEdit('inbound')) throw new Exception('ليس لديك صلاحية التعديل.'); $stmt = db()->prepare("UPDATE inbound_mail SET ref_no = ?, date_registered = ?, due_date = ?, sender = ?, recipient = ?, subject = ?, description = ?, status_id = ?, assigned_to = ? WHERE id = ?"); $stmt->execute([$ref_no, $date_registered, $due_date, $sender, $recipient, $subject, $description, $status_id, $assigned_to, $id]); $success = 'تم تحديث بيانات البريد الوارد بنجاح.'; } // Handle file uploads if (isset($_FILES['attachments']) && !empty($_FILES['attachments']['name'][0])) { $upload_dir = 'uploads/attachments/'; if (!is_dir($upload_dir)) mkdir($upload_dir, 0777, true); for ($i = 0; $i < count($_FILES['attachments']['name']); $i++) { if ($_FILES['attachments']['error'][$i] === 0) { $filename = time() . '_' . $_FILES['attachments']['name'][$i]; $filepath = $upload_dir . $filename; if (move_uploaded_file($_FILES['attachments']['tmp_name'][$i], $filepath)) { $stmt = db()->prepare("INSERT INTO inbound_attachments (mail_id, display_name, file_path, file_name, file_size) VALUES (?, ?, ?, ?, ?)"); $stmt->execute([$id, $_FILES['attachments']['name'][$i], $filepath, $_FILES['attachments']['name'][$i], $_FILES['attachments']['size'][$i]]); } } } } db()->commit(); } catch (Exception $e) { db()->rollBack(); $error = 'خطأ: ' . $e->getMessage(); } } elseif ($action === 'delete') { if (!canDelete('inbound')) { $error = 'ليس لديك صلاحية الحذف.'; } else { $stmt = db()->prepare("DELETE FROM inbound_mail WHERE id = ?"); $stmt->execute([$id]); $success = 'تم حذف البريد الوارد بنجاح.'; } } } } // Fetch stats $total_stmt = db()->query("SELECT COUNT(*) FROM inbound_mail"); $total_inbound = $total_stmt->fetchColumn(); $pending_stmt = db()->prepare("SELECT COUNT(*) FROM inbound_mail WHERE status_id IN (SELECT id FROM mailbox_statuses WHERE is_default = 1 OR name LIKE '%قيد%')"); $pending_stmt->execute(); $pending_inbound = $pending_stmt->fetchColumn(); // Search and Filter $where = "WHERE 1=1"; $params = []; if (isset($_GET['search']) && !empty($_GET['search'])) { $where .= " AND (m.ref_no LIKE ? OR m.subject LIKE ? OR m.sender LIKE ? OR m.recipient LIKE ?)"; $search = "%" . $_GET['search'] . "%"; $params = array_merge($params, [$search, $search, $search, $search]); } if (isset($_GET['status_id']) && !empty($_GET['status_id'])) { $where .= " AND m.status_id = ?"; $params[] = $_GET['status_id']; } if (isset($_GET['my_tasks'])) { $where .= " AND m.assigned_to = ?"; $params[] = $_SESSION['user_id']; } $query = "SELECT m.*, s.name as status_name, s.color as status_color, u.full_name as assigned_to_name, (SELECT GROUP_CONCAT(display_name SEPARATOR '|||') FROM inbound_attachments WHERE mail_id = m.id) as attachment_names FROM inbound_mail m LEFT JOIN mailbox_statuses s ON m.status_id = s.id LEFT JOIN users u ON m.assigned_to = u.id $where ORDER BY m.date_registered DESC, m.id DESC"; $stmt = db()->prepare($query); $stmt->execute($params); $mails = $stmt->fetchAll(); $statuses = db()->query("SELECT * FROM mailbox_statuses ORDER BY id ASC")->fetchAll(); $users = db()->query("SELECT id, full_name, username FROM users ORDER BY full_name ASC")->fetchAll(); $default_status_id = db()->query("SELECT id FROM mailbox_statuses WHERE is_default = 1 LIMIT 1")->fetchColumn() ?: ($statuses[0]['id'] ?? null); $deepLinkData = null; if (isset($_GET['id'])) { $dlStmt = db()->prepare("SELECT m.*, (SELECT GROUP_CONCAT(display_name SEPARATOR '|||') FROM inbound_attachments WHERE mail_id = m.id) as attachment_names FROM inbound_mail m WHERE m.id = ?"); $dlStmt->execute([$_GET['id']]); $deepLinkData = $dlStmt->fetch(); } ?>
إدارة جميع المراسلات الواردة والمهام المسندة.
| رقم القيد | التاريخ | الموضوع | الجهة المرسلة | الحالة | المسؤول | الإجراءات |
|---|---|---|---|---|---|---|
|
لا يوجد بريد وارد حالياً. |
||||||
| = htmlspecialchars($mail['ref_no']) ?> | = date('Y-m-d', strtotime($mail['date_registered'])) ?> |
= htmlspecialchars($mail['subject']) ?>
= count(explode('|||', $mail['attachment_names'])) ?> مرفقات
|
= htmlspecialchars($mail['sender']) ?> | = htmlspecialchars($mail['status_name']) ?> |
|
|