let currentPage = 'search';
let searchTimeout;
let currentVehicle = null; // متغير عام لتخزين بيانات المركبة الحالية
// المتغيرات العالمية
let currentOfficer = {
name: 'غير معروف',
badge: '0000'
};
// إضافة متغير عام لتخزين آخر عنصر إدخال نشط
let activeOfficerInput = null;
let currentTypeFilter = 'all';
let currentStatusFilter = 'all';
let allCases = []; // لتخزين جميع القضايا
// إضافة متغير عام لتخزين العساكر المحددين
let selectedOfficers = [];
window.addEventListener('message', function(event) {
console.log('Received message:', event.data);
if (event.data.type === "open") {
document.body.style.display = 'block';
showPage('search');
if (event.data.officer) {
currentOfficer = event.data.officer;
document.getElementById('officer-name').textContent = currentOfficer.name;
document.getElementById('officer-badge').textContent = `رقم الشارة: #${currentOfficer.badge}`;
}
} else if (event.data.type === "close") {
document.body.style.display = 'none';
} else if (event.data.type === "openVehicleActions" && currentVehicle) {
openVehicleActionsModal(currentVehicle.plate, currentVehicle.owner);
} else if (event.data.type === 'officersSearchResult' && activeOfficerInput) {
console.log('Received officers data:', event.data);
const suggestionsDiv = activeOfficerInput.parentElement.querySelector('.suggestions-list');
if (event.data.success && event.data.officers && event.data.officers.length > 0) {
console.log('Found officers:', event.data.officers);
suggestionsDiv.innerHTML = event.data.officers.map(officer => `
${officer.name} (${officer.citizenid})
${officer.rank}
`).join('');
} else {
console.log('No officers found');
suggestionsDiv.innerHTML = 'لا توجد نتائج
';
}
suggestionsDiv.style.display = 'block';
ensureSuggestionsVisible(suggestionsDiv);
}
});
// تأكد من أن body مخفي عند بداية التشغيل
document.addEventListener('DOMContentLoaded', function() {
document.body.style.display = 'none';
});
// Handle ESC key
document.addEventListener('keydown', function(event) {
if (event.keyCode === 27) { // ESC
fetch(`https://${GetParentResourceName()}/close`, {
method: 'POST'
});
}
if (event.key === 'Escape') {
// إخفاء الـ MDT
document.body.style.display = 'none';
fetch(`https://${GetParentResourceName()}/closeMDT`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({})
});
}
});
// تحديث دالة showPage
function showPage(pageName) {
// إخفاء جميع الصفحات
document.querySelectorAll('.page').forEach(page => {
page.classList.remove('active');
});
// إظهار الصفحة المطلوبة
document.getElementById(pageName + '-page').classList.add('active');
// تحديث الزر النشط في القائمة
document.querySelectorAll('.menu-item').forEach(item => {
item.classList.remove('active');
});
document.querySelector(`.menu-item[data-page="${pageName}"]`).classList.add('active');
// إذا كانت صفح القضايا، قم بتحديث القائمة
if (pageName === 'cases') {
loadAllCases();
}
}
// تحديث دالة loadAllCases لتظهر حالة التحميل
function loadAllCases() {
const casesList = document.querySelector('.cases-list');
// إظهار حالة التحميل
casesList.innerHTML = `
جاري تحميل القضايا...
`;
fetch(`https://${GetParentResourceName()}/getAllCases`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({})
})
.then(response => response.json())
.then(data => {
if (data.success) {
allCases = data.cases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
updateCasesDisplay();
} else {
casesList.innerHTML = `
حدث خطأ في تحميل القضايا
`;
}
})
.catch(error => {
console.error('Error loading cases:', error);
casesList.innerHTML = `
حدث خطأ في تحميل القضايا
`;
});
}
document.querySelector('.search-box input').addEventListener('input', function(e) {
clearTimeout(searchTimeout);
const searchText = e.target.value;
if (searchText.length >= 2) {
document.getElementById('search-results').innerHTML = 'جاري البحث...
';
searchTimeout = setTimeout(() => {
console.log('Searching for:', searchText); // للتأكد من إرسال البحث
fetch(`https://${GetParentResourceName()}/searchPerson`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ search: searchText })
})
.then(resp => resp.json())
.then(data => {
console.log('Search results:', data); // للتأكد من استلام النتائج
updateSearchResults(data);
})
.catch(error => {
console.error('Search error:', error);
document.getElementById('search-results').innerHTML = 'حدث ��طأ في البحث
';
});
}, 500);
}
});
function updateSearchResults(results) {
const container = document.getElementById('search-results');
container.innerHTML = '';
if (!results || results.length === 0) {
container.innerHTML = 'لم يتم العثور على نتائج
';
return;
}
results.forEach(result => {
const div = document.createElement('div');
div.className = 'search-result';
div.innerHTML = `
${result.name}
${result.is_wanted ? `
مطلوب
` : ''}
الهوية: ${result.citizenid}
الهاتف: ${result.phone}
تاريخ الميلاد: ${result.dob}
الجنس: ${result.gender}
البصمة: ${result.fingerprint || 'غير مسجل'}
إجراءات
`;
container.appendChild(div);
});
}
function viewDetails(citizenid) {
fetch(`https://${GetParentResourceName()}/getCitizenDetails`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
citizenid: citizenid
})
})
.then(resp => resp.json())
.then(data => {
// هنا يمكنك إضافة منطق لعرض التفاصيل الكاملة للمواطن
showCitizenDetails(data);
});
}
// تحديث الوقت
function updateTime() {
const now = new Date();
const time = now.toLocaleTimeString('ar-SA', { hour: '2-digit', minute: '2-digit' });
document.getElementById('current-time').textContent = time;
}
// تحديث الوقت كل دقيقة
setInterval(updateTime, 60000);
updateTime();
// إدارة الصفحات
document.querySelectorAll('.menu-item').forEach(item => {
item.addEventListener('click', function() {
// إزالة الفئة النشطة من جميع الأزرار
document.querySelectorAll('.menu-item').forEach(btn => btn.classList.remove('active'));
// إضافة افئة النشطة للزر المضغوط
this.classList.add('active');
// إظهار ا��صفحة المناسبة
const pageId = this.dataset.page;
showPage(pageId);
});
});
// عرض السجل الجنائي
function viewCriminalRecord(citizenid) {
fetch(`https://${GetParentResourceName()}/getCriminalRecord`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ citizenid })
})
.then(resp => resp.json())
.then(data => {
showCriminalRecordModal(data);
});
}
// عرض المركبات
function viewVehicles(citizenid) {
fetch(`https://${GetParentResourceName()}/getVehicles`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ citizenid })
})
.then(resp => resp.json())
.then(data => {
showVehiclesModal(data);
});
}
// إضافة للمطلوبين
function addToWanted(citizenid) {
const reason = prompt('سبب الإضافة للمطلوبين:');
if (reason) {
fetch(`https://${GetParentResourceName()}/addToWanted`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
citizenid,
reason
})
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
showNotification('تمت الإضافة للمطلوبين بنجاح', 'success');
} else {
showNotification('حدث خطأ أثناء الإضافة', 'error');
}
});
}
}
// إدارة الأدلة
function handleEvidence() {
const evidenceGrid = document.querySelector('.evidence-grid');
evidenceGrid.innerHTML = `
رفع دليل جديد
`;
}
// إدارة التقارير
function handleReports() {
const reportsList = document.querySelector('.reports-list');
fetch(`https://${GetParentResourceName()}/getReports`)
.then(resp => resp.json())
.then(data => {
updateReportsList(data);
});
}
// إظهار الإشعارات
function showNotification(message, type = 'info') {
const notification = document.createElement('div');
notification.className = `notification ${type}`;
notification.innerHTML = `
${message}
`;
document.body.appendChild(notification);
setTimeout(() => {
notification.remove();
}, 3000);
}
// إضافة أنماط CSS ديناميكية للإشعارات
const style = document.createElement('style');
style.textContent = `
.notification {
position: fixed;
top: 20px;
right: 20px;
padding: 15px 25px;
background: var(--surface-color);
border-radius: var(--border-radius);
color: var(--text-color);
display: flex;
align-items: center;
gap: 10px;
animation: slideIn 0.3s ease;
z-index: 1000;
}
.notification.success {
background: var(--success-color);
}
.notification.error {
background: var(--danger-color);
}
@keyframes slideIn {
from { transform: translateX(100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
.action-btn {
padding: 8px 15px;
margin: 5px;
border: none;
border-radius: 5px;
background: var(--primary-color);
color: var(--text-color);
cursor: pointer;
transition: var(--transition);
}
.action-btn:hover {
transform: translateY(-2px);
}
.action-btn.warning {
background: var(--warning-color);
color: #000;
}
.actions {
margin-top: 15px;
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.loading-cases {
text-align: center;
padding: 40px;
color: var(--text-secondary);
}
.loading-cases i {
font-size: 24px;
margin-bottom: 10px;
color: var(--primary-color);
}
.no-cases {
text-align: center;
padding: 40px;
color: var(--text-secondary);
}
.no-cases i {
font-size: 24px;
margin-bottom: 10px;
color: var(--danger-color);
}
`;
document.head.appendChild(style);
// تحديث معلومات الضابط
function updateOfficerInfo(data) {
document.querySelector('.officer-info h3').textContent = data.name;
document.querySelector('.officer-info span').textContent = data.rank;
}
// استقبال بيانات الضابط من اللعبة
window.addEventListener('message', function(event) {
const data = event.data;
if (data.type === "open") {
document.body.style.display = 'block';
if (data.officer) {
updateOfficerInfo({
name: data.officer.name,
rank: data.officer.rank
});
}
}
// ... باقي الكود
});
// البحث عن المركبات
document.querySelector('.vehicles-search input').addEventListener('input', function(e) {
const plate = e.target.value.trim();
if (plate.length >= 2) {
document.querySelector('.vehicles-list').innerHTML = '
';
fetch(`https://${GetParentResourceName()}/searchVehicle`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ plate: plate })
})
.then(resp => resp.json())
.then(data => {
console.log('Vehicle search results:', data);
updateVehicleResults(data);
})
.catch(error => {
console.error('Error searching for vehicle:', error);
document.querySelector('.vehicles-list').innerHTML = 'حدث خطأ في البحث
';
});
}
});
// تحديث نتا��ج البحث عن المركبات
function updateVehicleResults(vehicles) {
const container = document.querySelector('.vehicles-list');
container.innerHTML = '';
if (!vehicles || vehicles.length === 0) {
container.innerHTML = 'لم يتم العثور على المركبة
';
return;
}
vehicles.forEach(vehicle => {
const div = document.createElement('div');
div.className = 'vehicle-card';
div.innerHTML = `
معلومات المالك
الاسم: ${vehicle.owner.name}
رقم الهوية: ${vehicle.owner.citizenid}
إجراءات
`;
container.appendChild(div);
});
}
// حديث دالة معالجة إجراءات المر��بة
function handleVehicleActions(plate, owner, citizenid) {
openVehicleActionsModal(plate, owner, citizenid);
}
// تحديث دالة فتح نافذة اجراءات
function openVehicleActionsModal(plate, owner, citizenid) {
const modal = document.createElement('div');
modal.className = 'modal';
modal.innerHTML = `
رقم اللوحة: ${plate}
المالك: ${owner}
معلومات المالك
عرض تفاصيل المالك
`;
document.body.appendChild(modal);
modal.addEventListener('click', function(e) {
if (e.target === this) this.remove();
});
}
// إضافة دالة لعرض تفاصيل المالك
function showPersonDetails(citizenid) {
// إغلاق النافذة المنبثقة
document.querySelector('.modal').remove();
// تنفيذ البحث ن المواطن وعرض تفاصيله
fetch(`https://${GetParentResourceName()}/getPersonDetails`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ citizenid: citizenid })
})
.then(resp => resp.json())
.then(data => {
if (data.error) {
console.error('Error:', data.message);
return;
}
showPersonDetailsPage(data);
})
.catch(error => {
console.error('Error fetching person details:', error);
});
}
// معالجة الإجراءات المحددة
function handleVehicleAction(plate, action) {
switch(action) {
case 'flag':
fetch(`https://${GetParentResourceName()}/flagVehicle`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ plate })
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
showNotification('تم تعميم المركبة بنجاح', 'success');
document.querySelector('.modal').remove();
} else {
showNotification('حدث خطأ أثناء تعميم المركبة', 'error');
}
});
break;
case 'impound':
fetch(`https://${GetParentResourceName()}/impoundVehicle`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ plate })
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
showNotification('تم حجز المركبة بنجاح', 'success');
document.querySelector('.modal').remove();
} else {
showNotification('حدث خطأ أثناء حجز المركبة', 'error');
}
});
break;
}
}
// عرض تفاصيل المركبة
function showVehicleDetails(plate) {
fetch(`https://${GetParentResourceName()}/getVehicleDetails`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ plate })
})
.then(resp => resp.json())
.then(data => {
if (data.vehicle) {
const modal = document.createElement('div');
modal.className = 'modal';
modal.innerHTML = `
فاصيل المركبة
معلومات أساسية
المديل: ${data.vehicle.model}
اللوحة: ${data.vehicle.plate}
اللك: ${data.vehicle.owner}
اللون: ${data.vehicle.color}
السجل
${data.vehicle.history ? data.vehicle.history.map(h => `
${h.date}
${h.event}
`).join('') : '
لا يوجد سجل
'}
إغلاق
`;
document.body.appendChild(modal);
// إغلاق النافذة عند النقر خارها
modal.addEventListener('click', function(e) {
if (e.target === this) this.remove();
});
}
});
}
// تحديث دالة البحث عن القضايا
function searchCases(query) {
if (!query || query.trim() === '') {
// إذا كان حقل البحث فارغاً، قم بتحميل جميع القضايا
loadAllCases();
return;
}
fetch(`https://${GetParentResourceName()}/searchCases`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ query: query })
})
.then(response => response.json())
.then(data => {
if (data.success) {
allCases = data.cases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
updateCasesDisplay();
}
})
.catch(error => {
console.error('Error searching cases:', error);
showNotification('حدث خطأ أثناء البحث عن القضايا', 'error');
});
}
// دالة لتحميل جميع القضايا
function loadAllCases() {
fetch(`https://${GetParentResourceName()}/getAllCases`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({}) // إرسال object فارغ
})
.then(response => response.json())
.then(data => {
if (data.success) {
allCases = data.cases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
updateCasesDisplay();
} else {
console.error('Failed to load cases:', data.error);
showNotification(data.error || 'حدث خطأ أثناء تحميل القضايا', 'error');
}
})
.catch(error => {
console.error('Error loading cases:', error);
showNotification('حدث خطأ أثناء تحميل القضايا', 'error');
});
}
// تحميل القضايا عند فتح الصفحة
document.addEventListener('DOMContentLoaded', function() {
loadAllCases();
});
// تحديث عرض القضايا مع الفلترة
function updateCasesDisplay() {
const filteredCases = allCases.filter(caseItem => {
const matchesType = currentTypeFilter === 'all' || caseItem.type === currentTypeFilter;
const matchesStatus = currentStatusFilter === 'all' ||
(currentStatusFilter === 'executed' && caseItem.is_executed) ||
(currentStatusFilter === 'pending' && !caseItem.is_executed);
return matchesType && matchesStatus;
});
const casesList = document.querySelector('.cases-list');
if (!filteredCases || filteredCases.length === 0) {
casesList.innerHTML = 'لم يتم العثور على قضايا
';
return;
}
casesList.innerHTML = filteredCases.map(caseItem => displayCase(caseItem)).join('');
}
// تحديث مستمع الأحداث لحقل البحث
document.getElementById('case-search').addEventListener('input', function(e) {
if (searchTimeout) {
clearTimeout(searchTimeout);
}
searchTimeout = setTimeout(() => {
searchCases(e.target.value);
}, 500);
});
// دالة لإنشاء رقم بصمة فريد
function generateFingerprint(citizenid) {
// إنشاء رقم بصمة باستدام الـ citizenid كأساس
const base = citizenid.replace(/[^0-9]/g, ''); // استخراج الأرقام فقط
const timestamp = Date.now().toString().slice(-4); // آخر 4 أرقام من الطابع الزمني
return `FP-${base.slice(0,4)}-${timestamp}`;
}
// دالة للعودة للصفحة المحددة
function showPage(pageName) {
document.querySelectorAll('.page').forEach(page => page.style.display = 'none');
document.getElementById(pageName + '-page').style.display = 'block';
}
// تحديث معالج إجراءات العسكري
function handlePersonAction(citizenid, name) {
// جلب تفاصيل الشخص من السيرفر
fetch(`https://${GetParentResourceName()}/getPersonDetails`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
citizenid: citizenid
})
})
.then(resp => resp.json())
.then(details => {
if (details) {
showPersonDetailsPage(details);
} else {
showNotification('لم يتم العثور على معلومات المواطن', 'error');
}
})
.catch(error => {
console.error('Error fetching person details:', error);
showNotification('حدث خطأ أثناء جلب المعلومات', 'error');
});
}
// تحديث دالة البحث عن العساكر
function searchOfficers(input) {
clearTimeout(searchTimeout);
const searchText = input.value.trim();
if (searchText.length >= 2) {
activeOfficerInput = input;
searchTimeout = setTimeout(() => {
fetch(`https://${GetParentResourceName()}/searchOfficers`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ search: searchText })
});
}, 300);
} else {
const suggestionsDiv = input.parentElement.querySelector('.suggestions-list');
suggestionsDiv.style.display = 'none';
}
}
// إضافة وظيفة للتمرير التلقائي
function ensureSuggestionsVisible(suggestionsDiv) {
if (!suggestionsDiv) return;
const rect = suggestionsDiv.getBoundingClientRect();
const windowHeight = window.innerHeight;
const bottomSpace = windowHeight - rect.bottom;
// إذا كانت المسافة في الأسفل أقل من 100 بكسل
if (bottomSpace < 100) {
// حساب المسافة المطلوبة للتمرير
const scrollAmount = 100 - bottomSpace;
const mainContent = document.querySelector('.main-content');
if (mainContent) {
const currentScroll = mainContent.scrollTop;
mainContent.scrollTo({
top: currentScroll + scrollAmount,
behavior: 'smooth'
});
}
}
}
// تعديل معالج استجابة البحث عن الضباط
window.addEventListener('message', function(event) {
if (event.data.type === 'officersSearchResult' && activeOfficerInput) {
const suggestionsDiv = activeOfficerInput.parentElement.querySelector('.suggestions-list');
if (event.data.success && event.data.officers && event.data.officers.length > 0) {
suggestionsDiv.innerHTML = event.data.officers.map(officer => `
${officer.name} (${officer.citizenid})
${officer.rank}
`).join('');
} else {
suggestionsDiv.innerHTML = 'لا توجد نتائج
';
}
suggestionsDiv.style.display = 'block';
// استدعاء وظيفة التمرير التلقائي
ensureSuggestionsVisible(suggestionsDiv);
}
});
// تحديث دالة اختيار العسكري
function selectOfficer(nameWithId, element) {
const input = element.closest('.autocomplete-wrapper').querySelector('input');
input.value = nameWithId; // سيتم عرض الاسم مع الهوية في نفس الحقل
element.closest('.suggestions-list').style.display = 'none';
}
function viewCaseDetails(caseId) {
if (!caseId) {
showNotification('معرف القضية غير صالح', 'error');
return;
}
fetch(`https://${GetParentResourceName()}/getCaseDetails`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ caseId: caseId })
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
displayCaseDetails(data.case);
} else {
showNotification(data.error || 'حدث خطأ أثناء جلب تفاصيل القضية', 'error');
}
})
.catch(error => {
console.error('Error fetching case details:', error);
showNotification('حدث خطأ أثناء جلب تفاصيل القضية', 'error');
});
}
function displayCaseDetails(caseData) {
// أولاً، تحقق من وجود صفح�� ا��تف��ص��ل
let detailsPage = document.querySelector('.case-details-page');
if (!detailsPage) {
detailsPage = document.createElement('div');
detailsPage.className = 'page case-details-page';
document.querySelector('.main-content').appendChild(detailsPage);
}
// تحديث محتوى الصفحة
detailsPage.innerHTML = `
المعلومات الأساسية
نوع القضية: ${translateCaseType(caseData.type)}
المتهم: ${caseData.suspect_name || 'غير محدد'}
مدة السجن: ${caseData.jail_time} شهر
الغرامة: ${caseData.total_fines}$
الحالة:
${caseData.is_executed ? 'منفذة' : 'قيد الانتظار'}
تاريخ التسجيل: ${caseData.created_at}
منشئ القضية:
${caseData.creator_name || 'غير معروف'}
التهم
${Array.isArray(caseData.charges) ? caseData.charges.map(charge => `
${charge}
`).join('') : 'لا توجد تهم مسجلة '}
العساكر المشاركين
${Array.isArray(caseData.involved_officers) ? caseData.involved_officers.map(officer => `
${officer}
`).join('') : 'لا يوجد عساكر مسجلين '}
${caseData.crime_scene_photos && Array.isArray(caseData.crime_scene_photos) && caseData.crime_scene_photos.length > 0 ? `
صور مسرح الجريمة
${caseData.crime_scene_photos.map(photo => `
`).join('')}
` : ''}
${caseData.notes ? `
ملاحظات ا��عسكري
${caseData.notes}
` : ''}
`;
// إخفاء جميع الصفحات الأخرى وعرض صفحة التفاصيل
document.querySelectorAll('.page').forEach(page => page.style.display = 'none');
detailsPage.style.display = 'block';
}
// دالة لعرض معاينة الصور
function showImagePreview(imageUrl) {
const modal = document.createElement('div');
modal.className = 'modal image-preview-modal';
modal.innerHTML = `
`;
document.body.appendChild(modal);
}
// إضافة دالة showPersonDetailsPage المفقودة
function showPersonDetailsPage(personData) {
document.querySelectorAll('.page').forEach(page => page.style.display = 'none');
let detailsPage = document.getElementById('person-details-page');
if (!detailsPage) {
detailsPage = document.createElement('div');
detailsPage.id = 'person-details-page';
detailsPage.className = 'page';
document.querySelector('.main-content').appendChild(detailsPage);
}
detailsPage.innerHTML = `
المعلومات الأساسية
الاسم: ${personData.firstname} ${personData.lastname}
رقم الهوية: ${personData.citizenid}
الهاتف: ${personData.phone}
تاريخ الميلاد: ${personData.birthdate}
الجنس: ${personData.gender === 'male' ? 'ذكر' : 'أنثى'}
البصمة: ${personData.fingerprint || 'غير مسجل'}
معلومات إضافية
الوظيفة: ${personData.job}
الحساب البنكي: ${personData.accountnumber}
الرخص:
قيادة
سلاح
إضافة قضية
تسجيل قضية جديدة
عرض السجل
سجل القضايا السابقة
`;
detailsPage.style.display = 'block';
}
function createAddCasePage(citizenid) {
const page = document.createElement('div');
page.id = 'add-case-page';
page.className = 'page';
page.innerHTML = `
`;
document.querySelector('.main-content').appendChild(page);
showPage('add-case');
}
function toggleOfficersSection() {
const isExecuted = document.getElementById('case-executed').checked;
const officersSection = document.querySelector('.officers-section');
if (isExecuted) {
officersSection.style.display = 'block';
} else {
officersSection.style.display = 'none';
// إعادة تعيين الاختيارات عند إلغاء التفعيل
const countDisplay = document.querySelector('.selected-officers-count');
countDisplay.textContent = '';
const addOfficersBtn = document.querySelector('.add-officers-btn');
addOfficersBtn.dataset.selectedOfficers = '[]';
}
}
function getSelectedCharges() {
const charges = [];
const chargeInputs = document.querySelectorAll('.charge-input');
chargeInputs.forEach(input => {
const charge = input.value.trim();
if (charge) {
charges.push(charge);
}
});
return charges;
}
function getUploadedImages() {
const images = [];
const imageInputs = document.querySelectorAll('.image-url');
imageInputs.forEach(input => {
const url = input.value.trim();
if (url) {
images.push(url);
}
});
return images;
}
function submitCase(citizenid) {
// التحقق من الحقول المطلوبة
const type = document.getElementById('case-type').value;
const jailMonths = document.getElementById('jail-months')?.value || '0';
const totalFine = document.getElementById('total-fine').value;
const charges = getSelectedCharges();
const notes = document.getElementById('officer-notes')?.value || '';
const executed = document.getElementById('case-executed').checked;
// الحصول على الع��اكر المختارين وتحويلهم إلى التنسيق المطلوب
const addOfficersBtn = document.querySelector('.add-officers-btn');
const selectedOfficersRaw = addOfficersBtn.dataset.selectedOfficers ?
JSON.parse(addOfficersBtn.dataset.selectedOfficers) : [];
// تحويل صيغة العساكر إلى التنسيق المطلوب
const selectedOfficers = selectedOfficersRaw.map(officer =>
`${officer.name} (${officer.citizenid})`
);
// التحقق من البيانات المطلوبة
if (!type) {
showNotification('يجب اختيار نوع القضية', 'error');
return;
}
if (!charges || charges.length === 0) {
showNotification('يجب إضافة تهمة واحدة على الأقل', 'error');
return;
}
// التحق�� من العساكر المشاركين إذا كانت القضية منفذة
if (executed && (!selectedOfficers || selectedOfficers.length === 0)) {
showNotification('يجب إضافة عسكري واحد على الأقل للقضايا المنفذة', 'error');
return;
}
// تجهيز بيانات القضية
const caseData = {
type: type,
citizenid: citizenid,
jailMonths: jailMonths,
totalFine: totalFine,
charges: charges,
notes: notes,
executed: executed,
officers: selectedOfficers, // الآن بالتنسيق الجديد
imageLinks: getUploadedImages()
};
// إرسال البيانات إلى ��لسيرفر
fetch(`https://${GetParentResourceName()}/addCase`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(caseData)
})
.then(response => response.json())
.then(data => {
if (data.success) {
showNotification('تم إضافة القضية بنجاح', 'success');
showPage('search');
} else {
showNotification(data.error || 'حدث خطأ أثناء إضافة القضية', 'error');
}
})
.catch(error => {
console.error('Error:', error);
showNotification('حدث خطأ أثناء إضافة القضية', 'error');
});
}
function addChargeField() {
const container = document.getElementById('charges-container');
const newEntry = document.createElement('div');
newEntry.className = 'charge-entry';
newEntry.innerHTML = `
`;
container.appendChild(newEntry);
}
function addImageLinkField() {
const container = document.getElementById('image-links-container');
const newEntry = document.createElement('div');
newEntry.className = 'image-link-entry';
newEntry.innerHTML = `
`;
container.appendChild(newEntry);
}
function removeChargeField(button) {
const container = document.getElementById('charges-container');
if (container.children.length > 1) {
button.parentElement.remove();
}
}
function removeImageField(button) {
const container = document.getElementById('image-links-container');
if (container.children.length > 1) {
button.parentElement.remove();
}
}
function translateCaseType(type) {
const types = {
'criminal': 'جنائي',
'traffic': 'مرورية'
};
return types[type] || type;
}
// تعديل طريقة عرض القضايا
function displayCase(caseItem) {
const formattedDate = formatDate(caseItem.created_at);
return `
المتهم: ${caseItem.suspect_name || 'غير محدد'}
مدة السجن: ${caseItem.jail_time} شهر
الغرامة: ${caseItem.total_fines}$
${caseItem.charges ? `
التهم:
${caseItem.charges.map(charge => `
${charge}
`).join('')}
` : ''}
`;
}
// تحديث عرض القضايا مع الفلترة
function updateCasesDisplay() {
const filteredCases = allCases.filter(caseItem => {
const matchesType = currentTypeFilter === 'all' || caseItem.type === currentTypeFilter;
const matchesStatus = currentStatusFilter === 'all' ||
(currentStatusFilter === 'executed' && caseItem.is_executed) ||
(currentStatusFilter === 'pending' && !caseItem.is_executed);
return matchesType && matchesStatus;
});
const casesList = document.querySelector('.cases-list');
casesList.innerHTML = filteredCases.map(caseItem => displayCase(caseItem)).join('');
}
// إضافة مستمعي الأحداث لأزرار الفلترة
document.querySelectorAll('.filter-btn[data-type]').forEach(btn => {
btn.addEventListener('click', function() {
document.querySelectorAll('.filter-btn[data-type]').forEach(b => b.classList.remove('active'));
this.classList.add('active');
currentTypeFilter = this.dataset.type;
updateCasesDisplay();
});
});
document.querySelectorAll('.filter-btn[data-status]').forEach(btn => {
btn.addEventListener('click', function() {
document.querySelectorAll('.filter-btn[data-status]').forEach(b => b.classList.remove('active'));
this.classList.add('active');
currentStatusFilter = this.dataset.status;
updateCasesDisplay();
});
});
// تحديث وظيفة تحميل القضايا
function loadCases() {
fetch(`https://${GetParentResourceName()}/searchCases`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ query: '' })
})
.then(response => response.json())
.then(data => {
if (data.success) {
allCases = data.cases.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
updateCasesDisplay();
}
});
}
// دالة لتنسيق التاريخ والوقت
function formatDate(dateString) {
try {
const date = new Date(dateString);
// التحقق من صحة التاريخ
if (isNaN(date.getTime())) {
return dateString;
}
// الحصول على الساعة بنظام 12 ساعة
let hours = date.getHours();
const ampm = hours >= 12 ? 'م' : 'ص';
hours = hours % 12;
hours = hours ? hours : 12; // تحويل الساعة 0 إلى 12
// إضافة أصفار للدقائق إذا كانت أقل من 10
const minutes = date.getMinutes().toString().padStart(2, '0');
// تنسيق التاريخ والوقت
const formattedDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
const formattedTime = `${hours}:${minutes} ${ampm}`;
return `${formattedDate} ${formattedTime}`;
} catch (e) {
console.error('Error formatting date:', e);
return dateString;
}
}
// تحديث دالة عرض القضية
function displayCase(caseItem) {
const formattedDate = formatDate(caseItem.created_at);
return `
المتهم: ${caseItem.suspect_name || 'غير محدد'}
مدة السجن: ${caseItem.jail_time} شهر
الغرامة: ${caseItem.total_fines}$
${caseItem.charges ? `
التهم:
${caseItem.charges.map(charge => `
${charge}
`).join('')}
` : ''}
`;
}
function executeCase(caseNumber) {
showConfirmPopup({
title: 'تأكيد تنفيذ القضية',
message: `هل أنت متأكد من تنفيذ القضية رقم ${caseNumber}؟`,
icon: 'fa-check-circle',
confirmText: 'تنفيذ',
cancelText: 'إلغاء',
onConfirm: () => {
fetch(`https://${GetParentResourceName()}/executeCase`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
caseNumber: caseNumber
})
})
.then(response => response.json())
.then(data => {
if (data.success) {
showNotification('تم تنفيذ القضية بنجاح', 'success');
// تحديث عرض القضايا
loadCases();
} else {
showNotification(data.error || 'حدث خطأ أثناء تنفيذ القضية', 'error');
}
})
.catch(error => {
console.error('Error:', error);
showNotification('حدث خطأ أثناء تنفيذ القضية', 'error');
});
}
});
}
function showConfirmPopup({ title, message, icon, confirmText, cancelText, onConfirm }) {
// إزالة أي نافذة تأكيد سابقة
const existingPopup = document.querySelector('.confirm-popup-overlay');
if (existingPopup) {
existingPopup.remove();
}
// إنشاء نافذة التأكيد
const overlay = document.createElement('div');
overlay.className = 'confirm-popup-overlay';
overlay.innerHTML = `
`;
document.body.appendChild(overlay);
// إضافة مستمعي الأحداث للأزرار
const confirmBtn = overlay.querySelector('.confirm-btn.confirm');
const cancelBtn = overlay.querySelector('.confirm-btn.cancel');
confirmBtn.addEventListener('click', () => {
onConfirm();
overlay.remove();
});
cancelBtn.addEventListener('click', () => {
overlay.remove();
});
// إغلاق النافذة عند النقر خارجها
overlay.addEventListener('click', (e) => {
if (e.target === overlay) {
overlay.remove();
}
});
}
function showPersonHistory(citizenid, fullName) {
// إخفاء جميع الصفحات
document.querySelectorAll('.page').forEach(page => page.style.display = 'none');
// إنشاء أو تحديث صفحة السجل
let historyPage = document.getElementById('person-history-page');
if (!historyPage) {
historyPage = document.createElement('div');
historyPage.id = 'person-history-page';
historyPage.className = 'page';
document.querySelector('.main-content').appendChild(historyPage);
}
// عرض شاشة التحميل
historyPage.innerHTML = `
جاري التحميل...
`;
historyPage.style.display = 'block';
// طلب السجلات من السيرفر
fetch(`https://${GetParentResourceName()}/getPersonHistory`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ citizenid: citizenid })
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
displayPersonHistory(historyPage, data.cases, fullName);
} else {
historyPage.innerHTML = `
لا توجد سجلات
`;
}
});
}
function displayPersonHistory(page, cases, fullName) {
window.currentPersonCases = cases;
page.innerHTML = `
إجمالي القضايا: ${cases.length}
القضايا المنفذة: ${cases.filter(c => c.is_executed).length}
قيد الانتظار: ${cases.filter(c => !c.is_executed).length}
احصاء القضايا الغير منفذة
نوع القضية
الكل
جنائية
مرورية
حالة القضية
الكل
منفذة
قيد الانتظار
${generateCasesList(cases)}
`;
// إضافة أنماط CSS مخصصة
const style = document.createElement('style');
style.textContent = `
.history-controls {
background: var(--surface-color);
border-radius: var(--border-radius);
padding: 20px;
margin-bottom: 20px;
box-shadow: var(--box-shadow);
}
.search-section {
margin-bottom: 20px;
}
.search-box {
background: rgba(0, 0, 0, 0.2);
border-radius: var(--border-radius);
padding: 12px 20px;
display: flex;
align-items: center;
gap: 10px;
transition: var(--transition);
}
.search-box:focus-within {
background: rgba(0, 0, 0, 0.3);
transform: translateY(-2px);
}
.search-box input {
background: transparent;
border: none;
color: var(--text-color);
font-size: 1em;
width: 100%;
outline: none;
}
.quick-stats {
display: flex;
gap: 20px;
margin-bottom: 20px;
padding-bottom: 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.stat-item {
display: flex;
align-items: center;
gap: 10px;
color: var(--text-secondary);
font-size: 0.9em;
}
.filter-groups {
display: flex;
gap: 20px;
flex-wrap: wrap;
}
.filter-group {
flex: 1;
min-width: 300px;
}
.filter-label {
display: flex;
align-items: center;
gap: 8px;
color: var(--text-secondary);
margin-bottom: 10px;
font-size: 0.9em;
}
.filter-buttons {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.filter-btn {
background: rgba(0, 0, 0, 0.2);
border: none;
padding: 8px 15px;
border-radius: var(--border-radius);
color: var(--text-color);
cursor: pointer;
transition: var(--transition);
display: flex;
align-items: center;
gap: 8px;
font-size: 0.9em;
}
.filter-btn:hover {
background: rgba(255, 255, 255, 0.1);
transform: translateY(-2px);
}
.filter-btn.active {
background: var(--primary-color);
color: white;
}
.filter-btn i {
font-size: 0.9em;
}
.cases-list {
display: grid;
gap: 20px;
padding-bottom: 100px;
}
.summary-btn {
background: var(--primary-color);
color: white;
border: none;
padding: 8px 15px;
border-radius: var(--border-radius);
cursor: pointer;
transition: var(--transition);
display: flex;
align-items: center;
gap: 8px;
font-size: 0.9em;
}
.summary-btn:hover {
background: var(--primary-color-dark);
transform: translateY(-2px);
}
`;
document.head.appendChild(style);
}
// دالة لتوليد قائمة القضايا
function generateCasesList(cases) {
if (!cases || cases.length === 0) {
return 'لا توجد قضايا
';
}
return cases.map(caseItem => `
مدة السجن: ${caseItem.jail_time} شهر
الغرامة: ${caseItem.total_fines}$
${caseItem.charges ? `
التهم:
${caseItem.charges.map(charge => `
${charge}
`).join('')}
` : ''}
`).join('');
}
// متغيرات عامة لحفظ حالة الفلاتر
let currentSearchText = '';
// دالة الفلترة
function filterPersonHistory(filterType, value) {
if (filterType === 'type') {
currentTypeFilter = value;
// تحديث حالة الأزرار
document.querySelectorAll('.filter-btn[data-type]').forEach(btn => {
btn.classList.toggle('active', btn.dataset.type === value);
});
} else if (filterType === 'status') {
currentStatusFilter = value;
// تحديث حالة الأزرار
document.querySelectorAll('.filter-btn[data-status]').forEach(btn => {
btn.classList.toggle('active', btn.dataset.status === value);
});
} else {
// إذا تم استدعاء الدالة من البحث النصي
currentSearchText = document.getElementById('history-search').value.toLowerCase();
}
// تطبيق الفلاتر
let filteredCases = window.currentPersonCases;
// فلتر النوع
if (currentTypeFilter !== 'all') {
filteredCases = filteredCases.filter(c => c.type === currentTypeFilter);
}
// فلتر الحالة
if (currentStatusFilter !== 'all') {
filteredCases = filteredCases.filter(c =>
currentStatusFilter === 'executed' ? c.is_executed : !c.is_executed
);
}
// فلتر البحث النصي
if (currentSearchText) {
filteredCases = filteredCases.filter(c =>
c.case_number.toLowerCase().includes(currentSearchText) ||
(c.charges && c.charges.some(charge =>
charge.toLowerCase().includes(currentSearchText)
))
);
}
// تحديث العرض
document.getElementById('filtered-cases').innerHTML = generateCasesList(filteredCases);
}
function handleOfficerSelection() {
// حفظ العساكر المحددين مؤقتاً
selectedOfficers = Array.from(document.querySelectorAll('#selected-officers .selected-officer'))
.map(officer => ({
name: officer.dataset.name,
citizenid: officer.dataset.citizenid,
rank: officer.dataset.rank
}));
const page = document.createElement('div');
page.id = 'select-officers-page';
page.className = 'page';
page.innerHTML = `
`;
document.querySelector('.main-content').appendChild(page);
showPage('select-officers');
loadOfficers();
document.getElementById('officers-search').addEventListener('input', function(e) {
filterOfficers(e.target.value);
});
}
// تحديث عداد العساكر المحددين
function toggleOfficerSelection(element) {
element.classList.toggle('selected');
const officerData = {
name: element.dataset.name,
citizenid: element.dataset.citizenid,
rank: element.dataset.rank
};
if (element.classList.contains('selected')) {
// إضافة العسكري إلى القائمة إذا لم يكن موجوداً
if (!selectedOfficers.some(officer => officer.name === officerData.name)) {
selectedOfficers.push(officerData);
}
} else {
// إزالة العسكري من القائمة
selectedOfficers = selectedOfficers.filter(officer => officer.name !== officerData.name);
}
updateSelectedCount();
}
function updateSelectedCount() {
const countElement = document.getElementById('officers-selected-count');
if (countElement) {
const count = selectedOfficers.length;
if (count === 0) {
countElement.textContent = 'لم يتم اختيار أي عسكري';
} else if (count === 1) {
countElement.textContent = 'عسكري واحد محدد';
} else {
countElement.textContent = `${count} عساكر محددين`;
}
}
}
function loadOfficers() {
const officersGrid = document.querySelector('.officers-grid');
officersGrid.innerHTML = 'جاري تحميل قائمة العساكر...
';
fetch(`https://${GetParentResourceName()}/getAllOfficers`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({})
})
.then(response => response.json())
.then(data => {
if (data.success && data.officers) {
officersGrid.innerHTML = `
` + data.officers.map(officer => `
${officer.name}
(${officer.citizenid})
${officer.rank}
`).join('');
} else {
officersGrid.innerHTML = 'لم يتم العثور على عساكر
';
}
})
.catch(error => {
console.error('Error loading officers:', error);
officersGrid.innerHTML = 'حدث خطأ أثناء تحميل قائمة العساكر
';
});
}
function filterOfficers(search) {
const cards = document.querySelectorAll('.officer-card');
const searchTerm = search.toLowerCase();
cards.forEach(card => {
const name = card.dataset.name.toLowerCase();
const shouldShow = name.includes(searchTerm);
card.style.display = shouldShow ? 'flex' : 'none';
});
}
function confirmOfficerSelection() {
const selectedCount = document.querySelectorAll('.officer-card.selected').length;
const selectedOfficers = Array.from(document.querySelectorAll('.officer-card.selected')).map(card => ({
name: card.dataset.name,
citizenid: card.dataset.citizenid,
rank: card.dataset.rank
}));
// تحديث عدد العساكر المختارين في الفورم
const countDisplay = document.querySelector('.selected-officers-count');
if (selectedCount > 0) {
countDisplay.textContent = `تم اختيار ${selectedCount} ${selectedCount === 1 ? 'عسكري' : 'عساكر'}`;
countDisplay.style.display = 'inline-block';
} else {
countDisplay.style.display = 'none';
}
// تخزين العساكر المختارين في data attribute
const addOfficersBtn = document.querySelector('.add-officers-btn');
addOfficersBtn.dataset.selectedOfficers = JSON.stringify(selectedOfficers);
showPage('add-case');
}
function removeSelectedOfficer(button) {
button.closest('.selected-officer').remove();
}
function displayCasesPage() {
const casesPage = document.getElementById('cases-page');
casesPage.innerHTML = `
`;
}
function showPlayersPage() {
// إنشاء صفحة المواطنين
const page = document.createElement('div');
page.id = 'players-page';
page.className = 'page';
page.innerHTML = `
`;
document.querySelector('.main-content').appendChild(page);
loadPlayers();
showPage('players');
}
// تخزين البيانات الأصلية
let allPlayersData = [];
function loadPlayers() {
const playersGrid = document.querySelector('.players-grid');
playersGrid.innerHTML = 'جاري تحميل قائمة المواطنين...
';
fetch(`https://${GetParentResourceName()}/getPlayers`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({})
})
.then(resp => resp.json())
.then(data => {
if (data.success && data.players && data.players.length > 0) {
// تخزين البيانات الأصلية
allPlayersData = data.players;
renderPlayers(data.players);
} else {
playersGrid.innerHTML = 'لم يتم العثور على مواطنين
';
}
})
.catch(error => {
console.error('Error loading players:', error);
playersGrid.innerHTML = 'حدث خطأ أثناء تحميل ق��ئمة المواطنين
';
});
}
function filterPlayers(searchTerm) {
if (!allPlayersData.length) return;
searchTerm = searchTerm.toLowerCase().trim();
const filteredPlayers = searchTerm === '' ? allPlayersData : allPlayersData.filter(player => {
const fullName = `${player.firstname} ${player.lastname}`.toLowerCase();
const citizenId = player.citizenid.toLowerCase();
const fingerprint = (player.fingerprint || '').toLowerCase();
return fullName.includes(searchTerm) ||
citizenId.includes(searchTerm) ||
fingerprint.includes(searchTerm);
});
renderPlayers(filteredPlayers);
}
function renderPlayers(players) {
const playersGrid = document.querySelector('.players-grid');
if (!players || players.length === 0) {
playersGrid.innerHTML = 'لم يتم العثور على نتائج
';
return;
}
playersGrid.innerHTML = `
` + players.map(player => `
${player.firstname} ${player.lastname}
${player.citizenid}
${player.fingerprint ? `
${player.fingerprint}
` : ''}
إضافة قضية
`).join('');
}
// تحديث قائمة المطلوبين
function updateWantedList() {
fetch(`https://${GetParentResourceName()}/getWantedList`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({})
})
.then(resp => resp.json())
.then(data => {
if (data.success) {
displayWantedList(data.wanted);
}
});
}
// عرض قائمة المطلوبين
function displayWantedList(wanted) {
const wantedList = document.querySelector('.wanted-list');
if (!wantedList) return;
if (!wanted || wanted.length === 0) {
wantedList.innerHTML = 'لا يوجد مطلوبين حالياً
';
return;
}
// تجميع القضايا حسب المتهم
const groupedWanted = wanted.reduce((acc, person) => {
if (!acc[person.citizenid]) {
acc[person.citizenid] = {
name: person.name,
citizenid: person.citizenid,
cases: [],
total_fines: 0,
total_jail_time: 0
};
}
acc[person.citizenid].cases.push(person);
acc[person.citizenid].total_fines += parseInt(person.total_fines);
acc[person.citizenid].total_jail_time += parseInt(person.jail_time);
return acc;
}, {});
wantedList.innerHTML = Object.values(groupedWanted).map(person => `
إجمالي الغرامات
$${person.total_fines.toLocaleString()}
إجمالي مدة السجن
${person.total_jail_time} شهر
التهم
${person.cases.flatMap(c => c.charges).map(charge => `
${charge}
`).join('')}
`).join('');
}
// تحديث القائمة عند فتح صفحة المطلوبين
document.querySelector('.menu-item[data-page="wanted"]').addEventListener('click', function() {
updateWantedList();
});
// دالة عرض الملف الشخصي
function viewProfile(citizenid) {
// حفظ citizenid في متغير مؤقت
currentProfileCitizenId = citizenid;
// إنشاء صفحة الملف الشخصي
const page = document.createElement('div');
page.id = 'profile-page';
page.className = 'page';
page.innerHTML = `
`;
// إضافة الصفحة للمحتوى الرئيسي
document.querySelector('.main-content').appendChild(page);
// تحميل بيانات الملف الشخصي
fetch(`https://${GetParentResourceName()}/getPersonDetails`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
citizenid: citizenid
})
})
.then(response => response.json())
.then(data => {
if (data.error) {
document.querySelector('.profile-content').innerHTML = `
${data.message || 'حدث خطأ أثناء تحميل البيانات'}
`;
return;
}
// عرض البيانات
displayProfile(data);
})
.catch(error => {
console.error('Error loading profile:', error);
document.querySelector('.profile-content').innerHTML = `
حدث خطأ أثناء تحميل البيانات
`;
});
// الانتقال إلى صفحة الملف الشخصي
showPage('profile');
}
// دالة عرض بيانات الملف الشخصي
function displayProfile(data) {
const profileContent = document.querySelector('.profile-content');
profileContent.innerHTML = `
الاسم
${data.name}
رقم الهوية
${data.citizenid}
رقم الهاتف
${data.phone || 'غير متوفر'}
${data.criminal_record && data.criminal_record.length > 0 ? `
${data.criminal_record.map(record => `
الغرامة:
$${record.fine.toLocaleString()}
مدة السجن:
${record.jail_time} شهر
${record.description}
`).join('')}
` : '
لا يوجد سجل جنائي
'}
${data.vehicles && data.vehicles.length > 0 ? `
${data.vehicles.map(vehicle => `
${vehicle.model}
${vehicle.plate}
`).join('')}
` : '
لا توجد مركبات مسجلة
'}
`;
}
// تأكد من أن هذه الدالة موجودة في نفس النطاق مع باقي الدوال
function showCasesSummary(fullName, casesData) {
console.log("تم استدعاء showCasesSummary", { fullName, casesData }); // للتأكد من وصول البيانات
const pendingCases = casesData.filter(c => !c.is_executed);
const totalJailTime = pendingCases.reduce((sum, c) => sum + (parseInt(c.jail_time) || 0), 0);
const totalFines = pendingCases.reduce((sum, c) => sum + (parseInt(c.total_fines) || 0), 0);
// تجميع التهم
const allCharges = {};
pendingCases.forEach(c => {
if (c.charges) {
c.charges.forEach(charge => {
allCharges[charge] = (allCharges[charge] || 0) + 1;
});
}
});
// إنشاء صفحة الملخص
let summaryPage = document.getElementById('cases-summary-page');
if (!summaryPage) {
summaryPage = document.createElement('div');
summaryPage.id = 'cases-summary-page';
summaryPage.className = 'page';
}
summaryPage.innerHTML = `
إجمالي مدة السجن
${totalJailTime} شهر
إجمالي الغرامات
$${totalFines.toLocaleString()}
القضايا غير المنفذة
${pendingCases.length}
ملخص التهم
${Object.entries(allCharges).map(([charge, count]) => `
${charge}
${count}
`).join('')}
${pendingCases.length > 0 ? `
تنفيذ جميع القضايا
تحذير: هذا الإجراء لا يمكن التراجع عنه
` : ''}
`;
// إخفاء الصفحة السابقة
document.querySelectorAll('.page').forEach(page => {
page.style.display = 'none';
});
// إضافة الصفحة للـ DOM وإظهارها
const mainContent = document.querySelector('.main-content');
if (!document.getElementById('cases-summary-page')) {
mainContent.appendChild(summaryPage);
}
summaryPage.style.display = 'block';
// تحسين الأنماط
const style = document.createElement('style');
style.textContent = `
#cases-summary-page {
height: 100%;
display: flex;
flex-direction: column;
position: relative;
padding-bottom: 100px;
}
.summary-container {
flex: 1;
overflow-y: auto;
padding: 20px;
max-width: 1200px;
margin: 0 auto;
width: 100%;
}
.summary-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 25px;
margin-bottom: 30px;
}
.summary-card {
background: var(--surface-color);
border-radius: var(--border-radius);
padding: 25px;
display: flex;
align-items: center;
gap: 20px;
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
border: 1px solid rgba(255,255,255,0.1);
}
.summary-card:hover {
transform: translateY(-5px);
box-shadow: 0 12px 20px rgba(0,0,0,0.2);
}
.card-icon {
width: 70px;
height: 70px;
background: rgba(var(--primary-color-rgb), 0.15);
border-radius: 20px;
display: flex;
align-items: center;
justify-content: center;
transition: transform 0.3s ease;
}
.summary-card:hover .card-icon {
transform: scale(1.1);
}
.card-icon i {
font-size: 28px;
color: var(--primary-color);
}
.card-content h3 {
color: var(--text-secondary);
font-size: 1em;
margin-bottom: 8px;
font-weight: 500;
}
.card-value {
font-size: 1.8em;
font-weight: bold;
color: var(--text-color);
display: block;
}
.charges-summary {
background: var(--surface-color);
border-radius: var(--border-radius);
padding: 30px;
margin-bottom: 40px;
box-shadow: 0 8px 16px rgba(0,0,0,0.1);
border: 1px solid rgba(255,255,255,0.1);
}
.charges-summary h3 {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 25px;
color: var(--text-color);
font-size: 1.3em;
}
.charges-summary h3 i {
color: var(--primary-color);
}
.charges-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 20px;
}
.charge-item {
background: rgba(0, 0, 0, 0.2);
padding: 18px 20px;
border-radius: 15px;
display: flex;
justify-content: space-between;
align-items: center;
transition: transform 0.3s ease, background-color 0.3s ease;
border: 1px solid rgba(255,255,255,0.05);
}
.charge-item:hover {
transform: translateY(-3px);
background: rgba(0, 0, 0, 0.3);
}
.charge-name {
color: var(--text-color);
font-size: 1em;
flex: 1;
margin-right: 15px;
}
.charge-count {
background: var(--primary-color);
color: white;
padding: 5px 12px;
border-radius: 20px;
font-size: 0.9em;
font-weight: 500;
min-width: 35px;
text-align: center;
box-shadow: 0 4px 8px rgba(var(--primary-color-rgb), 0.3);
}
.execute-all-section {
position: fixed;
bottom: 0;
left: 0;
right: 0;
padding: 20px;
z-index: 100;
display: flex;
justify-content: center;
align-items: center;
gap: 30px;
}
.execute-all-btn {
background: var(--primary-color);
color: white;
border: none;
padding: 12px 25px;
border-radius: var(--border-radius);
font-size: 1em;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
gap: 12px;
box-shadow: 0 4px 12px rgba(var(--primary-color-rgb), 0.3);
min-width: 180px;
justify-content: center;
position: relative;
overflow: hidden;
}
.execute-all-btn::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(
45deg,
rgba(255,255,255,0.1) 0%,
rgba(255,255,255,0.2) 50%,
rgba(255,255,255,0.1) 100%
);
transform: translateX(-100%);
transition: transform 0.6s ease;
}
.execute-all-btn:hover::before {
transform: translateX(100%);
}
.execute-all-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(var(--primary-color-rgb), 0.4);
}
.execute-all-btn:active {
transform: translateY(0);
}
.execute-all-btn i {
font-size: 1.1em;
}
.warning-text {
color: #ffa726;
font-size: 0.9em;
display: flex;
align-items: center;
gap: 8px;
opacity: 0.9;
padding: 8px 15px;
border-radius: var(--border-radius);
}
.warning-text i {
font-size: 1.1em;
color: #ffa726;
}
@media (max-width: 768px) {
.execute-all-section {
flex-direction: column;
padding: 15px;
gap: 15px;
}
.execute-all-btn {
width: 100%;
padding: 15px;
}
.warning-text {
width: 100%;
justify-content: center;
text-align: center;
padding: 10px;
}
}
`;
// حذف أي نمط سابق لنفس الصفحة
const oldStyle = document.getElementById('summary-page-style');
if (oldStyle) {
oldStyle.remove();
}
// إضافة معرف للنمط الجديد
style.id = 'summary-page-style';
document.head.appendChild(style);
}
// دالة الرجوع
function backToHistory() {
document.getElementById('cases-summary-page').style.display = 'none';
document.getElementById('person-history-page').style.display = 'block';
}
// دالة تنفيذ جميع القضايا
function executeAllCases(fullName, caseIds) {
const overlay = document.createElement('div');
overlay.className = 'confirm-overlay';
const popup = document.createElement('div');
popup.className = 'confirm-popup';
popup.innerHTML = `
`;
document.body.appendChild(overlay);
document.body.appendChild(popup);
}
// دالة إغلاق النافذة المنبثقة
function closeConfirmPopup() {
document.querySelector('.confirm-overlay')?.remove();
document.querySelector('.confirm-popup')?.remove();
}
// دالة تأكيد التنفيذ
function confirmExecuteAll(fullName, caseIds) {
fetch(`https://${GetParentResourceName()}/executeAllCases`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ caseIds: caseIds })
})
.then(response => response.json())
.then(data => {
if (data.success) {
// تحديث الصفحة
window.currentPersonCases = window.currentPersonCases.map(c => {
if (caseIds.includes(c.id)) {
c.is_executed = true;
}
return c;
});
// إغلاق النافذة المنبثقة
closeConfirmPopup();
// العودة لصفحة السجل
backToHistory();
}
});
}
// تحديث أنماط النافذة المنبثقة
// تحديث HTML النافذة المنبثقة
function executeAllCases(fullName, caseIds) {
const overlay = document.createElement('div');
overlay.className = 'confirm-overlay';
const popup = document.createElement('div');
popup.className = 'confirm-popup';
popup.innerHTML = `
`;
document.body.appendChild(overlay);
document.body.appendChild(popup);
}