انتقل إلى المحتوى الرئيسي

الأطباق والتغذية

##شاشة اللوحات

يعرض الكتالوج الغذائي الأطباق المعتمدة بتنسيق بطاقة واحدة مع التنقل المتسلسل، على غرار الرف الدائري الخطي. يرى المستخدم طبقًا واحدًا في كل مرة، ويمكنه التحرك ذهابًا وإيابًا بينهما.

تحميل البيانات​

عند تهيئة الشاشة، يتم إجراء استعلامين إلى Supabase بالتوازي:

الأطباق المقبولة: from("platos").select { filter { eq("visibilidad", true); eq("aceptado", true) } }. يتم عرض الأطباق التي تمت الموافقة عليها من قبل المسؤول وتم تمكين رؤيتها في الرف الدائري فقط.

الاقتراحات المعلقة (المشرف فقط): from("platos").select { filter { eq("aceptado", false) } }. الأطباق التي في انتظار الإشراف تكون مرئية للمسؤولين فقط.

عرض اللوحة​

تظهر كل بطاقة:

  • صورة الطبق (إذا كان imagen_url يحتوي على سلسلة Base64، فسيتم فك ترميزه إلى Bitmap باستخدام ImageUtils.decodeBase64ToBitmap).
  • اسم الطبق .
  • سعرات حرارية.
  • وقت التحضير.
  • الوصف أو الوصفة.

اقتراح الطبق من قبل المستخدم​

يمكن لأي مستخدم أن يقترح طبقًا جديدًا باستخدام زر الاقتراح، الذي يفتح مربع حوار مشروط يحتوي على الحقول التالية:

  • العنوان (اسم الطبق)
  • الوصفة أو الوصف
  • وقت التحضير
  • السعرات الحرارية
  • الصورة (تم اختيارها من المعرض باستخدام ActivityResultContracts.GetContent()، وتم تحويلها إلى Base64)

يتم إدخال الطبق في Supabase مع aceptado = false و visibilidad = true. سيكون في انتظار المراجعة من قبل المسؤول.

الإشراف من قبل المسؤول​

يرى المسؤول في قسم منفصل قائمة الأطباق التي تنتظر الموافقة (aceptado = false). لكل طبق يمكنك:

  • موافق: قم بتشغيل update { set("aceptado", true) } في Supabase. يصبح الطبق مرئيًا في الرف الدائري.
  • الرفض: قم بتشغيل delete في Supabase. تتم إزالة اللوحة بشكل دائم.

من مكتبة الأطباق المقبولة، يمكن للمسؤول أيضًا حذف أي أطباق منشورة بالفعل.