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);
            }
        }