Beispiel #1
0
        private void AddTransferOrder(Order order)
        {
            order.FilterOrders(CurrentSettings.GroupType, CurrentSettings.OrderInfoDisplay);
            List <Order> sourceOrders = TotalOrders.Where(s => s.TableTabName == order.SourceTableName).ToList();

            order.DisplayAttributes.SourceTabTableText = order.SourceTableName;
            var destinationOrders = TotalOrders.FirstOrDefault(s => s.TableTabName == order.TableTabName);

            if (destinationOrders != null)
            {
                ProcessTransferWhenDestinationExist(sourceOrders, order, destinationOrders);
                destinationOrders.DisplayAttributes.SourceTabTableText = order.DisplayAttributes.SourceTabTableText;
            }
            else
            {
                order.OrderState = OrderState.Complete;
                DbOrder.AddOrder(order, CurrenTerminal.TerminalId, false);
                ProcessTransferWhenDestinationNotExist(sourceOrders, order);
                TotalOrders.Add(order);
                AnalyticalData.TotalOrdersCount++;
                AnalyticalData.CurrentOrdersCount++;
            }

            if (CurrentSettings.ConfirmOnTransfer)
            {
                ShowMessageBox("Order Transferred", order.SourceTableName + " is transferred to " + order.TableTabName);
            }
            TotalOrders.RemoveAll(s => s.Items.Count == 0);
            PublishRedrawEvent();
        }
Beispiel #2
0
        private void AddCancelOrder(Order order)
        {
            List <Item>  processedItem         = new List <Item>();
            List <Item>  processedExistingItem = new List <Item>();
            List <Order> sourceOrders          = TotalOrders.Where(s => s.TableTabName == order.TableTabName).ToList();

            foreach (var sourceOrder in sourceOrders)
            {
                foreach (var newItem in order.Items)
                {
                    var existingItem = sourceOrder.Items.FirstOrDefault(s => s.OrderItemPosKey == newItem.OrderItemPosKey && !processedItem.Contains(s) &&
                                                                        !processedExistingItem.Contains(s));
                    if (existingItem != null)
                    {
                        processedExistingItem.Add(existingItem);
                        processedItem.Add(newItem);
                        if (!existingItem.DisplayAttributes.IsOriginalItem)
                        {
                            UpdateTransferProperty(existingItem);
                        }
                        existingItem.OrderStatus = OrderStatus.Canceled;
                        DbOrderItem.ItemBumped(existingItem.OrderItemKey, DateTime.Now);
                        DbOrderItem.UpdateOrderItemStatus(existingItem.OrderItemKey, OrderStatus.Canceled);
                    }
                }
            }
            order.Items.RemoveAll(s => processedItem.Contains(s));
            if (order.Items.Count > 0)
            {
                AddCreditOrder(order);
            }
        }
Beispiel #3
0
 private void AddCreditOrder(Order order)
 {
     TotalOrders.Add(order);
     if (CurrentSettings.ConfirmOnRefund)
     {
         ShowMessageBox("Refund Order", "A Refund Order has come in.");
     }
     PublishAddOrder(order);
 }
Beispiel #4
0
        private void AddRunnerOrder(Order inOrder)
        {
            var order = TotalOrders.FirstOrDefault(s => s.OrderKey == inOrder.OrderKey);

            if (order != null)
            {
                foreach (var item in inOrder.Items)
                {
                    if (order.Items.FirstOrDefault(s => s.OrderItemKey == item.OrderItemKey) == null)
                    {
                        var servigCourseGroup =
                            order.ServingCourseGroups.FirstOrDefault(
                                s => s.OrderGroupKey == item.SCourseGroup.OrderGroupKey);
                        if (servigCourseGroup != null)
                        {
                            item.SCourseGroup = servigCourseGroup;
                        }
                        else
                        {
                            item.SCourseGroup.Order = order;
                            order.ServingCourseGroups.Add(item.SCourseGroup);
                        }

                        var courseGroup =
                            order.CourseGroups.FirstOrDefault(
                                s => s.OrderGroupKey == item.CourseGroup.OrderGroupKey);
                        if (courseGroup != null)
                        {
                            item.CourseGroup = courseGroup;
                        }
                        else
                        {
                            item.CourseGroup.Order = order;
                            order.CourseGroups.Add(item.CourseGroup);
                        }

                        order.Items.Add(item);
                        AnalyticalData.CurrentItems++;
                    }
                }
            }
            else
            {
                AnalyticalData.TotalOrdersCount++;
                AnalyticalData.CurrentOrdersCount++;
                inOrder.ServingCourseGroups.ToList().ForEach(s => AnalyticalData.CurrentItems += s.Items.Count);
                TotalOrders.Add(inOrder);
            }
            PublishRedrawEvent();
        }
Beispiel #5
0
 public void LoadAllOrders()
 {
     try
     {
         var orders = DatabaseOrderBuilder.Instance.GetAllOrders(CurrenTerminal.TerminalId);
         foreach (var order in orders)
         {
             TotalOrders.Add(order);
         }
     }
     catch (Exception ex)
     {
         ChefmateLogger.Instance.LogError("ChefmateController.LoadAllOrders", ex.Message);
         throw ex;
     }
 }
Beispiel #6
0
 public void AddRecallOrder(Order inOrder)
 {
     lock (_syncRoot)
     {
         var order = DbOrder.GetOrder(inOrder.OrderKey, 0, true);
         AnalyticalData.CurrentOrdersCount++;
         AnalyticalData.CurrentItems += order.Items.Count;
         TimeSpan recalledOrderMakeTime = order.BumpTime - order.ArrivalTime;
         AnalyticalData.TotalMakeTime = new TimeSpan(AnalyticalData.TotalMakeTime.Ticks - recalledOrderMakeTime.Ticks);
         foreach (var item in order.Items)
         {
             DbOrderItem.UpdateOrderItemTerminalKey(item.OrderItemKey, CurrenTerminal.TerminalId);
         }
         TotalOrders.Add(order);
         PublishAddOrder(order);
     }
 }
Beispiel #7
0
        private void CallAwayOrder(Order inOrder)
        {
            var orders = TotalOrders.Where(s => s.TableTabName == inOrder.TableTabName);

            foreach (var order in orders)
            {
                foreach (var group in inOrder.ServingCourseGroups)
                {
                    var existingGroup = order.ServingCourseGroups.FirstOrDefault(s => s.GroupPosKey == group.GroupPosKey);
                    if (existingGroup != null)
                    {
                        existingGroup.CalledAway = true;
                        DbOrderGroup.CallAwayGroup(existingGroup.OrderGroupKey, true);
                    }
                }
            }
        }
        public static IQueryable <StatisticsViewModel> CustomersStatistics(ApplicationDbContext _context)
        {
            List <Order> Orders = new List <Order>();

            IQueryable <StatisticsViewModel> data =
                from Order in _context.Orders
                group Order by Order.Customer into TotalOrders

                select new StatisticsViewModel
            {
                Customer             = TotalOrders.Key,
                TotalOrders          = TotalOrders.Count(),
                TotalOrderCost       = TotalOrders.Sum(t => t.TotalCost),
                StatusTypeFullfilled = TotalOrders.Count(e => (int)e.Status == 0),
                StatusTypeInProgress = TotalOrders.Count(e => (int)e.Status == 2)
            };

            return(data);
        }
Beispiel #9
0
 private void LoadAllOrders()
 {
     try
     {
         this.Dispatcher.BeginInvoke(new Action(() =>
         {
             ChefmateController.Instance.LoadAllOrders();
             RedrawOrders();
             AnalyticalData.TotalOrdersCount   += TotalOrders.Count;
             AnalyticalData.CurrentOrdersCount += TotalOrders.Count;
             TotalOrders.ForEach(s => { AnalyticalData.CurrentItems += s.Items.Count; });
             UpdateOrderInfoDisplay();
             this.IsEnabled = true;
         }));
     }
     catch (Exception ex)
     {
         this.IsEnabled = true;
         ChefmateLogger.Instance.LogError("LoadAllOrders", ex.Message);
     }
 }
Beispiel #10
0
 private void AddCompleteOrder(Order order)
 {
     if (order.OrderKey == 0)
     {
         DbOrder.AddOrder(order, CurrenTerminal.TerminalId);
     }
     if (OutputTime.Immediately == CurrentSettings.OutputTime)
     {
         OutputController.Instance.OutputOrder(order);
     }
     else
     {
         if (order.OrderState == OrderState.Complete || order.OrderState == OrderState.Runner)
         {
             AnalyticalData.TotalOrdersCount++;
             AnalyticalData.CurrentOrdersCount++;
             AnalyticalData.CurrentItems += order.Items.Count;
         }
         TotalOrders.Add(order);
     }
 }
Beispiel #11
0
 public void RemoveOrder(Order order)
 {
     TotalOrders.Remove(order);
 }