طباعة وصل المطبخ (PrintKitchenReceiptEndpoint)
نظرة عامة
كلاس PrintKitchenReceiptEndpoint يمثل API وظيفتها طباعة الوصل للمطبخ.
ينفذ العملية من خلال:
- تحديد حالة الفاتورة على إنها تحتاج طباعة.
- توليد بيانات الوصل للمطبخ.
- إرسال الوصل للطابعة الخاصة بالمطبخ.
- حفظ التاريخ الخاص بعملية الطباعة.
الكونستركتر
public PrintKitchenReceiptEndpoint(PrintToKitchenHelper printToKitchenHelper, BillHelper billHelper, AppDbContext context)
يستقبل 3 خدمات:
| المتغيّر | وظيفته |
|---|---|
PrintToKitchenHelper | يجهز بيانات الوصل ويطبعه للمطبخ. |
BillHelper | يعدل حالة الفاتورة ويحفظ التاريخ. |
AppDbContext | يتواصل ويا قاعدة البيانات. |
دالة Configure()
public override void Configure()
هنا يحدد:
-
الرابط مال الـ API:
POST /checkout/bill/print/kitchen -
الصلاحية المطلوبة حتى يستخدمها المستخدم:
AppPerms.Monitor.SaveAndPrintToKitchen
دالة HandleAsync()
public override async Task HandleAsync(PrintRequest req, CancellationToken ct)
هنا من تصير عملية الطباعة، تسوي الخطوات التالية:
- جلب المستخدم من JWT باستخدام
AuthHelper. - تغيير حالة الفاتورة إلى
NeedsPrintingToCustomer، يعني بعدين تحتاج تنطبع للزبون. - توليد بيانات الوصل للمطبخ من خلال
GenerateKitchenReceiptInfo. - طباعة الوصل للمطبخ بواسطة
PrintToKitchenAsync. - تسجيل تاريخ الفاتورة ويكتب بيه "تم الطباعة الى المطبخ".
- يرجع رد للمستخدم: "Printed Successfully".
ملاحظات
- الكود يفرق بين طباعة الزبون وطباعة المطبخ.
- ماكو فحص للطابعة هنا مثل ما سوينه في وصل الزبون.
- يستعمل
CancellationTokenتحسبًا للإلغاء من العميل.