دورة تطوير نظام إدارة الأعراس والمناسبات ودعوات QR عمليًا

واجهة تتفهم حالة الحضور والحصر

واجهة تتفهم حالة الحضور والحصر — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي
وقت الدراسة
12 دقيقة

المسار: تطوير نظام إدارة الأعراس ودعوات QR الوحدة: توليد وقراءة رموز QR

مدخل إلى الدرس: واجهة تتفهم حالة الحضور والحصر

واجهة تتفهم حالة الحضور والحصر — نظام إدارة الأعراس والمناسبات ودعوات QR | Next.js وPrisma | أديب الصلوي

طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.

أهداف هذا الدرس

  • تغيير مظهر الدعوة بعد التسجيل أو انتهاء الحدث.
  • إدارة حدّ القبول/الحضور (MaxGuests) بصفحة المنظّم.
  • وعرض نافذة «اكتمل الحضور» للمدعوين المتأخرين.

مثال

// حقل جلسة: عدد مقاعد مبدئياً في Event
// prisma/schema.prisma:
model Event {
  ...
  maxGuests   Int  @default(0)   // 0 = بلا حد
}

// في API checkin:
const capacity = event.maxGuests;
if (capacity > 0) {
  const used = await prisma.checkIn.count({ where: { eventId } });
  if (used >= capacity) {
    return NextResponse.json(
      { ok: false, error: "اكتمل العدد المُستوعب، لا مقاعد إضافية" },
      { status: 409 }
    );
  }
}

المخطط: قرار واجهة التأكيد حسب حالة الضيف

flowchart TD
    A["حالة الضيف"] --> P1["لم يرد بعد
بطاقة دعوة + زر RSVP"] A --> P2["ردّ بقبول
دعوة + شريط بانتظار الحضور"] A --> P3["سجّل حضوره
تأكيد — أهلاً بكم"] A --> P4["بعد موعد الحدث
نافذة — انتهت المناسبة"] A --> P5["بلوغ maxGuests
اكتمل الحضور + اتصال بالمنظّم"]

أين يُوضع العداد الحدّ؟

يعتمد الاستعلام على count مباشر: لا نسمح بكتابة CheckIn بعد بلوغ range. بديل أخف: يرقم جدول Reservations بحجز صف أول، لكن بساطتنا تكفي المشروع. من يرفض بعد امتلاء يبقى في حالة 'انتظار' تُراقب بالداشبورد.

سلوك بعد الامتلاء

الأهم عند إتمام المقاعد: اعرض في الدعوة نافذة نهائية بدل أزرار RSVP — لأن القرار اتُّخذ بعد الامتلاء ينبغي أن يكون خبراً مقروطاً للضيف وليس زراً قابلاً للنقر.

تمرين تطبيقي: أضف شريط تقدم في الدعوة يعرض (الحاضر/الكل) ويغيّر لونه عند 80% إلى برتقالي لتلميح نفاد المقاعد — وتحقق data لا ترهق load.

أخطاء شائعة يجب تفاديها

  • تفسير Count>0 وحده ونسيان maxGuests==0 بلا حد.
  • ترك زر RSVP نشطاً حتى بعد تسجيل حضور — بيانات مضطربة.
  • الاعتماد على عرض 409 الخام بدل واجهة عربية جاهزة للمسح.

معجم مصطلحات الدرس

سقف مقاعد
عدد أقصى للحضور يمكن حجزه قبل الرفض.
تدرّجي التأهيل
تحويل أغوار الواجهة حسب state ضمن state machines.
count(where)
استعلام خفيف يعرف الرقم بدل سحب صفوف.

مراجعة وتمرين تثبيت المهارة

اختبار سريع: اشرح بعبارتك معنى «واجهة تتفهم حالة الحضور والحصر»، ثم بيّن أين ستستخدمه داخل نظام تسجيل حضور دعوات مناسبة عبر رمز QR، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.

تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.

الدرس التالي: تأمين الروابط والهجمات الشائعة. من الأفضل إنهاء التجربة الحالية قبل متابعة الدرس التالي.

دروس نصية

#1

نظرة عامة على الدورة والمخرجات

#2

مقدمة إلى Next.js وأسباب اختياره

#3

أساسيات schema.prisma والنماذج

#4

مقدمة Route Handlers وبنية الاستجابة

#5

فهم Server Components والجلب الآمن

#6

تصميم الرمز Secured والتوقيع HMAC

#7

بناء الإنتاج وتجنّب أخطاء الحالة المربكة

#8

تحليل المتطلبات وتحديد الكيانات

#9

إنشاء مشروع Next.js وتجربته

#10

نموذج المناسبة Event بالعلاقات

#11

واجهة إنشاء المناسبة POST /api/events

#12

تصميم صفحة الدعوة الإلكترونية

#13

توليد صورة QR من قاعدة الدعوة

#14

نشر المشروع على Vercel

#15

تصميم قاعدة البيانات والعلاقات

#16

تجريب PostgreSQL محلياً وإنشاء قاعدة الداتا

#17

نموذج المدعو Guest مع الرمز الموقّع

#18

واجهات الضيوف الإضافة والقائمة

#19

نموذج الرد RSVP التفاعلي

#20

تجربة المسح في بوابة الحفل

#21

قاعدة بيانات إنتاج مُدارة وأمانها

#22

تدفق الدعوة وقراءة QR من التوليد إلى الحضور

#23

تثبيت Prisma والاتصال بالقاعدة

#24

نموذج الرد Rsvp ومنع التكرار

#25

واجهة تسجيل الحضور POST /api/checkin

#26

صفحة قائمة الضيوف والفرز

#27

واجهة تتفهم حالة الحضور والحصر

#28

إدارة المتغيرات السرية بيئة وواجهة

#29

سيناريو المشروع وقواعد العمل

#30

بنية مجلدات المشروع ومسارات الصفحات

#31

الاستعلام والجلب مع العلاقات

#32

التحقق من المدخلات ومعالجة الأخطاء

#33

لوحة الإحصائيات الحية

#34

تأمين الروابط والهجمات الشائعة

#35

قائمة الفحص النهائي قبل الإطلاق

#36

الترحيلات migrations والبذور seed

عرض الدروس كاملة تحقق من صفحة تعلم الدورة
درس نصي 4/36
أنت تشاهد
واجهة تتفهم حالة الحضور والحصر