public static void RegisterService(KitchenRequest service) { if (!aService.Contains(service)) { aService.Add(service); } HCSMSLog.OnWarningLog(service, new NotifyEventArgs("Register Kitchen Request Service Amount " + aService.Count)); }
public static void UnregisterService(KitchenRequest service) { aService.Remove(service); HCSMSLog.OnWarningLog(service, new NotifyEventArgs("Unregister Kitchen Request Service Amount " + aService.Count)); }
public void OrderItem(string tableNumber, List <Item> itemList) { FrontDeskRequest frontdesk = null; try { HCSMSLog.OnWarningLog(this, new NotifyEventArgs("Recieve Order Request")); //check if this table is really in use DinningTable table = TableDao.GetDinningTable(tableNumber); if (table == null) { throw new HCSMSException("餐桌是空的 !"); } // constructing order list List <RequestHandleInfo> requestList = new List <RequestHandleInfo>(); foreach (Item ite in itemList) { RequestHandleInfo info = new RequestHandleInfo(); info.EntityId = tableNumber; info.IsHandled = false; info.RequestType = RequestType.OrderItem; info.SourceId = ite.Id; requestList.Add(info); } //check for response of cook at the kitchen KitchenRequest handler = KitchenRequestControl.GetService(); if (handler == null) { requestList.Clear(); } else { requestList = handler.OnOrderItem(requestList); } HCSMSLog.OnWarningLog(this, new NotifyEventArgs("Recieve Result order item")); List <RequestHandleInfo> denyList = new List <RequestHandleInfo>(); foreach (RequestHandleInfo ite in requestList) { if (!ite.IsHandled) { denyList.Add(ite); } } if (denyList.Count == 0 && requestList.Count > 0) { //save data to database ItemDao.InsertItemOrder(table.Id, itemList); } else { frontdesk = FrontDeskRequestControl.GetService(callBackId); if (frontdesk != null) { //means kitchen service is not up if (requestList.Count == 0) { frontdesk.InformationMessage(new NotifyEventArgs("不存在厨房处理服务!")); } // notify front desk, the request is not satisfied else { frontdesk.RequestDeny(denyList); } } } } catch (HCSMSException ex) { raiseError(ex); if (frontdesk != null) { frontdesk.ErrorMessage(new ErrorEventArgs("Order Item Not Success", ex)); } } catch (Exception ex) { raiseError(ex); } }