Beispiel #1
0
        public async Task CanOrderToGo(MenuItem[] menuItems)
        {
            // Arrange
            await _helper.AddMenuItems(menuItems);

            var menuItemNumbers = menuItems
                                  .Select(i => i.Number)
                                  .ToArray();

            var commandToTest = new OrderToGo
            {
                Id          = Guid.NewGuid(),
                ItemNumbers = menuItemNumbers
            };

            // Act
            var result = await _fixture.SendAsync(commandToTest);

            // Assert
            await _helper.AssertOrderExists(
                commandToTest.Id,
                order => order.Status == ToGoOrderStatus.Pending &&
                order.OrderedItems.Count == menuItemNumbers.Length &&
                order.OrderedItems.All(i => menuItemNumbers.Contains(i.Number)));
        }
Beispiel #2
0
 public override Style SelectStyle(object item, DependencyObject container)
 {
     if (item is OrderFlight)
     {
         OrderFlight club = item as OrderFlight;
         if (club.OrderStatus == OrderStatus.InWork)
         {
             return(WhiteStyle);
         }
         else if (club.OrderStatus == OrderStatus.Sent)
         {
             return(LightBlueStyle);
         }
         else if (club.OrderStatus == OrderStatus.Cancelled)
         {
             return(RedStyle);
         }
         else if (club.OrderStatus == OrderStatus.CancelledWithRemains)
         {
             return(RoseStyle);
         }
         else if (club.OrderStatus == OrderStatus.Closed)
         {
             return(CloseStyle);
         }
         else
         {
             return(WhiteStyle);
         }
     }
     if (item is OrderToGo)
     {
         OrderToGo club = item as OrderToGo;
         if (club.OrderStatus == OrderStatus.InWork)
         {
             return(WhiteStyle);
         }
         else if (club.OrderStatus == OrderStatus.Sent)
         {
             return(LightBlueStyle);
         }
         else if (club.OrderStatus == OrderStatus.Cancelled)
         {
             return(RedStyle);
         }
         else if (club.OrderStatus == OrderStatus.CancelledWithRemains)
         {
             return(RoseStyle);
         }
         else if (club.OrderStatus == OrderStatus.Closed)
         {
             return(CloseStyle);
         }
         else
         {
             return(WhiteStyle);
         }
     }
     return(null);
 }
Beispiel #3
0
        public Task OrderToGoShouldReturnProperHypermediaLinks(MenuItem[] menuItems, Fixture fixture) =>
        _apiHelper.InTheContextOfACashier(
            cashier => async httpClient =>
        {
            // Arrange
            await _orderHelper.AddMenuItems(menuItems);

            var command = new OrderToGo
            {
                Id          = Guid.NewGuid(),
                ItemNumbers = menuItems.Select(i => i.Number).ToArray()
            };

            // Act
            var response = await httpClient
                           .PostAsJsonAsync(OrderRoute(), command);

            // Assert
            var expectedLinks = new List <string>
            {
                LinkNames.Self,
                LinkNames.Order.Get,
                LinkNames.Order.GetAll,
                LinkNames.Order.Confirm
            };

            await response.ShouldBeAResource <OrderToGoResource>(expectedLinks);
        },
            fixture);
Beispiel #4
0
        private static void CloseCheck(OrderToGo o)
        {
            /*
             * if (o.OrderStatus != OrderStatus.Sent)
             * {
             *
             *  return;
             * }
             */
            o.Closed      = true;
            o.OrderStatus = OrderStatus.Closed;
            var p = o.PaymentType;

            o.NeedPrintFR = p.FRSend > 0;
            //o.NeedPrintPrecheck = p.FiskalId == 0;
            o.IsSHSent = true;

            /*
             * string err = "";
             * var CreateSHres = SH.SHWrapper.CreateSalesInvoiceSync(o, out err);
             * if (!CreateSHres)
             * {
             *  UI.UIModify.ShowAlert($"{err + Environment.NewLine} Накладная будет создана при появлении связи со StoreHouse");
             * }
             */
            DBProvider.UpdateOrderToGo(o);
        }
 public bool UpdateClosingCheck(OrderToGo ord, bool FRPreented, bool PreCheckPreented)
 {
     try
     {
         Utils.ToLog("UpdateClosingCheck " + ord.Id);
         var client = GetClient();
         if (client == null)
         {
             return(false);;
         }
         ord.NeedPrintFR       = false;
         ord.NeedPrintPrecheck = false;
         ord.FRPrinted         = FRPreented;
         ord.PreCheckPrinted   = PreCheckPreented;
         var res = client.UpdateOrderToGo(ord);
         if (!res.Success)
         {
             Utils.ToLog("Error UpdateClosingCheck from service" + res.ErrorMessage);
             return(false);
         }
         Utils.ToLog("UpdateClosingCheck ok" + ord.Id);
         return(true);
     }
     catch (Exception e)
     {
         Utils.ToLog("Error UpdateClosingCheck " + e.Message);
         return(false);
     }
 }
Beispiel #6
0
        public bool AddOrder(OrderToGo order, List <DishPackageToGoOrder> OrderDishez)
        {
            order.DishPackages = OrderDishez.ToList();
            var res = DataCatalogsSingleton.Instance.OrdersToGoData.EndEdit(order);


            return(res.Succeess);
        }
Beispiel #7
0
 public void SetOrder(OrderToGo order)
 {
     orderToGo = order;
     if (orderToGo != null)
     {
         orderToGo.PropertyChanged += Order_PropertyChanged;
     }
     ChangeOrder();
 }
Beispiel #8
0
        public async Task CannotOrderUnexistingMenuItemsToGo(OrderToGo commandToTest)
        {
            // Arrange
            // Purposefully not adding any menu items

            // Act
            var result = await _fixture.SendAsync(commandToTest);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.NotFound);
        }
Beispiel #9
0
        /// <summary>
        /// Creates a new order. Takes care of adding the menu items prior to sending an OrderToGo command.
        /// </summary>
        public async Task OrderToGo(Guid orderId, MenuItem[] items)
        {
            await AddMenuItems(items);

            var command = new OrderToGo
            {
                Id          = orderId,
                ItemNumbers = items.Select(i => i.Number).ToArray()
            };

            await _fixture.SendAsync(command);
        }
        private void mCreateSHToGoInvoice(OrderToGo order)
        {
            string ErrMess = "";

            if (SH.SHWrapper.CreateSalesInvoiceSync(order, out ErrMess))
            {
                DBProvider.Client.SetToGoSHValue(true, order.Id);
            }
            else
            {
                ReturnMessage += $"Ошибка выгрузки заказа ToGo №{order.Id} {Environment.NewLine} {ErrMess}";
            }
        }
Beispiel #11
0
 public bool DeleteOrder(OrderToGo order)
 {
     try
     {
         order.OrderStatus = OrderStatus.Cancelled;
         var res = DataCatalogsSingleton.Instance.OrdersToGoData.EndEdit(order);
         return(res.Succeess);
     }
     catch (Exception e)
     {
         _logger.Error($"ToGoOrdersModelSingleton.DeleteOrder: {e.Message}");
         return(false);
     }
 }
Beispiel #12
0
        public static UserControl GetCtrlAddToGoOrder(OrderToGo curentOrder)
        {
            var ctrlOrder = new CtrlAddToGoOrder();
            //var flightOrder  = new  Order
            var addOrderModel = new Models.AddToGoOrderModel(curentOrder);
            var addOrderVM    = new Models.AddToGoOrderViewModel(addOrderModel)
            {
                Header = $"Изменение заказа {curentOrder.Id}"
            };

            ctrlOrder.DataContext = addOrderVM;
            //  addOrderVM.CloseAction = new Action(() => { MainClass.HideUC(ctrlOrder); });
            ctrlOrder.Tag = $"Изменение заказа {curentOrder.Id}";
            return(ctrlOrder);
        }
Beispiel #13
0
        public static bool AddOrderToGo(OrderToGo order, List <DishPackageToGoOrder> dishes)
        {
            try
            {
                logger.Debug($"AddOrderToGo {order.Id}");
                var Client = GetClient();
                if (Client == null)
                {
                    return(false);
                }

                order.OrderCustomerId    = order.OrderCustomer?.Id;
                order.MarketingChannelId = order.MarketingChannel?.Id;
                order.DriverId           = order.Driver?.Id;
                order.CreatedById        = order.CreatedBy?.Id;
                order.AddressId          = order.Address?.Id;
                foreach (var d in dishes)
                {
                    d.DishId    = d.Dish.Id;
                    d.OrderToGo = null;
                }

                OperationResult res = Client.CreateOrderToGo(order);
                if (!res.Success)
                {
                    DBError(res.ErrorMessage);
                    return(false);
                }
                order.Id = res.CreatedObjectId;

                foreach (var d in dishes)
                {
                    d.OrderToGoId = res.CreatedObjectId;
                    OperationResult res2 = Client.CreateDishPackageToGoOrder(d);
                    d.Id = res2.CreatedObjectId;
                }
                logger.Debug($"AddOrderToGo {order.Id} res = {res.Success}; err: {res.ErrorMessage} ");
                return(res.Success);
            }
            catch (Exception e)
            {
                DBError($"Error AddOrderToGo Mess: {e.Message}");
                return(false);
            }
        }
Beispiel #14
0
        public static bool UpdateOrderToGo(OrderToGo order)
        {
            try
            {
                logger.Debug($"UpdateOrderToGo Mess: {order.Id}");
                var Client = GetClient();
                if (Client == null)
                {
                    return(false);
                }

                order.AddressId          = order.Address?.Id;
                order.OrderCustomerId    = order.OrderCustomer?.Id;
                order.MarketingChannelId = order.MarketingChannel?.Id;
                order.DriverId           = order.Driver?.Id;
                order.CreatedById        = order.CreatedBy?.Id;

                foreach (var d in order.DishPackages)
                {
                    d.OrderToGo   = null;
                    d.OrderToGoId = order.Id;
                    d.DishId      = d.Dish.Id;
                }

                var res = Client.UpdateOrderToGo(order);

                if (!res.Success)
                {
                    DBError(res.ErrorMessage);
                    return(false);
                }
                //order = res.Result;

                return(res.Success);
            }
            catch (Exception e)
            {
                DBError($"Error UpdateOrderFlight Mess: {e.Message}");
                return(false);
            }
        }
Beispiel #15
0
        public AddToGoOrderModel()
        {
            Order    = new OrderToGo();
            NewOrder = true;
            Order    = new OrderToGo()
            {
                CreatedBy   = Authorization.CurentUser,
                OrderStatus = OrderStatus.InWork,
            };
            OrderDishez = new FullyObservableCollection <DishPackageToGoOrder>();
            EventsInit();
            //Хлеб и приборы в новый заказ
            OrderDishez.Add(new DishPackageToGoOrder()
            {
                Amount          = 1,
                Code            = 2244,
                Dish            = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2244),
                DishName        = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2244)?.Name,
                DishId          = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2244)?.Id ?? 0,
                PositionInOrder = 1,
                TotalPrice      = 0,
                Printed         = false
            });
            OrderDishez.Add(new DishPackageToGoOrder()
            {
                Amount          = 1,
                Code            = 2245,
                Dish            = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2245),
                DishName        = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2245)?.Name,
                DishId          = DataCatalogsSingleton.Instance.Dishes.FirstOrDefault(a => a.Barcode == 2245)?.Id ?? 0,
                PositionInOrder = 2,
                TotalPrice      = 0,
                Printed         = false
            });

            Order.DeliveryDate = DateTime.Now;
            Order.ExportTime   = DateTime.Now;
            Order.CreationDate = DateTime.Now;
            Order.ReadyTime    = DateTime.Now;
        }
Beispiel #16
0
        public static void CloseSingleCheck(OrderToGo ord)
        {
            if (ord == null)
            {
                return;
            }
            //if (ord.AirCompany.PaymentType == null) { UI.UIModify.ShowAlert($"Для закрытия чеков авиакомпания {ord.AirCompany.Name} должна содержать вид оплаты"); return; }
            if ((ord.OrderStatus != OrderStatus.Sent) && (ord.OrderStatus != OrderStatus.InWork))
            {
                UI.UIModify.ShowAlert($"Чек {ord.Id} имеет статус {ord.OrderStatus}  и не может быть закрыт");
            }
            UI.CtrlSetPayment sp = new UI.CtrlSetPayment();
            sp.ShowDialog();
            long pId = sp.Pid;

            if (pId > 0)
            {
                var    p        = DataExtension.DataCatalogsSingleton.Instance.Payments.Where(a => a.ToGo).SingleOrDefault(a => a.Id == pId);
                string promtStr = $"Закрыть чек {ord.Id}. {Environment.NewLine} Вид оплаты: {p.Name} {Environment.NewLine} На сумму: {ord.OrderTotalSumm}? ";
                ord.PaymentId   = pId;
                ord.PaymentType = p;

                var CreateSHres = SH.SHWrapper.CreateSalesInvoiceSync(ord, out string err);
                if (!CreateSHres)
                {
                    UI.UIModify.ShowAlert($"{err + Environment.NewLine} Накладная будет создана при появлении связи со StoreHouse");
                    Models.ToGoOrdersModelSingleton.Instance.UpdateOrder(ord);
                }

                UI.UIModify.ShowConfirm(promtStr, (_) =>
                {
                    if (_)
                    {
                        CloseCheck(ord);
                    }
                });
            }
        }
Beispiel #17
0
        public async Task CanOrderMultiplesOfSameItems(MenuItem[] menuItems)
        {
            // Arrange
            const int timesToOrderEachItem = 3;

            await _helper.AddMenuItems(menuItems);

            var commandToTest = new OrderToGo
            {
                Id          = Guid.NewGuid(),
                ItemNumbers = menuItems
                              .SelectMany(i => Enumerable.Repeat(i.Number, timesToOrderEachItem))
                              .ToList()
            };

            // Act
            var result = await _fixture.SendAsync(commandToTest);

            // Assert
            await _helper.AssertOrderExists(commandToTest.Id, order =>
                                            order.OrderedItems.Count == menuItems.Length *timesToOrderEachItem &&
                                            menuItems.All(i => order.OrderedItems.Any(oi => oi.Number == i.Number)));
        }
Beispiel #18
0
        public async Task CannotSubmitToGoOrderWithConflictingId(MenuItem[] menuItems)
        {
            // Arrange
            await _helper.AddMenuItems(menuItems);

            var menuItemNumbers = menuItems
                                  .Select(i => i.Number)
                                  .ToArray();

            var commandToTest = new OrderToGo
            {
                Id          = Guid.NewGuid(),
                ItemNumbers = menuItemNumbers
            };

            // Note that we're sending the command before the Act phase
            await _fixture.SendAsync(commandToTest);

            // Act
            var result = await _fixture.SendAsync(commandToTest);

            // Assert
            result.ShouldHaveErrorOfType(ErrorType.Conflict);
        }
 public OrderToGoViewModel(OrderToGo _order)
 {
     order = _order;
 }
Beispiel #20
0
        public bool UpdateOrder(OrderToGo order)
        {
            var res = DataCatalogsSingleton.Instance.OrdersToGoData.EndEdit(order);

            return(res.Succeess);
        }
Beispiel #21
0
 public async Task <IActionResult> OrderToGo([FromBody] OrderToGo command) =>
 (await Mediator.Send(command)
  .MapAsync(_ => ToEmptyResourceAsync <OrderToGoResource>(x => x.OrderId = command.Id)))
 .Match(Ok, Error);
Beispiel #22
0
        public static FiskalDrivers.FiskalCheck GetFiskalCheckFromOrder(OrderToGo ord)
        {
            FiskalDrivers.FiskalCheck Tmp = new FiskalDrivers.FiskalCheck();
            Tmp.CheckNum   = ord.Id.ToString();
            Tmp.TimeofOpen = ord.DeliveryDate;

            /*
             * Tmp.Cassir = ord.AirCompany.Name;
             * Tmp.Waiter = ord.FlightNumber;
             * */
            Tmp.FlyCheck = false;
            double tmpSumm = 0;

            foreach (var oi in ord.DishPackages.Where(a => a.TotalPrice > 0 && !a.Dish.IsAlcohol))
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = oi.DishName,
                    Price    = (double)oi.TotalPrice * (1 - (double)ord.DiscountPercent / 100),
                    Quantity = (double)oi.Amount
                };
                tmpSumm += fd.Price * fd.Quantity;
                Tmp.Dishes.Add(fd);
            }

            if (ord.DiscountPercent > 0)
            {
                Tmp.Discount     = (double)(ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) * (ord.DiscountPercent / 100));
                Tmp.DiscountName = "Скидка ";
            }
            var diff = tmpSumm - ((double)ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) - Tmp.Discount);

            if (Math.Abs(diff) > 0.001)
            {
                if (Tmp.Dishes.Any(a => a.Price * a.Quantity > diff))
                {
                    var d = Tmp.Dishes.Where(a => a.Price * a.Quantity > diff).FirstOrDefault();
                    d.Price = d.Price - diff / d.Quantity;
                }
            }


            if (ord.DeliveryPrice > 0)
            {
                FiskalDrivers.FiskalDish fd = new FiskalDrivers.FiskalDish()
                {
                    Name     = "Доставка",
                    Price    = (double)ord.DeliveryPrice,
                    Quantity = 1
                };
                Tmp.Dishes.Add(fd);
            }

            // double DSumm = (double)ord.DishPackages.Sum(a => a.TotalPrice * a.Amount) + (double)ord.DeliveryPrice;
            double DSumm = (double)Tmp.Dishes.Sum(a => a.Price * a.Quantity);

            /*
             * double ExCh = 0;
             * Tmp.Discount =  0;
             * if ((Tmp.Discount > 0) && (ExCh > 0))
             * {
             *  if (Tmp.Discount > ExCh)
             *  {
             *      Tmp.Discount -= ExCh;
             *  }
             *  else
             *  {
             *
             *      Tmp.Charge = ExCh - Tmp.Discount;
             *      Tmp.Discount = 0;
             *  }
             * }
             * else if (ExCh > 0)
             * {
             *  Tmp.Charge = ExCh;
             * }
             */

            //double DSummTotal = DSumm - Tmp.Discount + Tmp.Charge;
            var op = ord.PaymentType;

            //OrderToAlohaSrv.OrderPayment op = ord.OrderPayments;
            FiskalDrivers.FiskalPayment fp = new FiskalDrivers.FiskalPayment()
            {
                Name        = op.Name,
                Summ        = DSumm,
                PaymentType = (int)op.FiskalId
                              //  NonFiskalPayment = op.TNDR.
            };
            Tmp.Payments.Add(fp);

            Tmp.Summ = DSumm;
            return(Tmp);
        }
Beispiel #23
0
        private void InitFunctions()
        {
            if (typeof(T) == (typeof(OrderCustomer)))
            {
                createFunc    = itm => { return(DBProvider.Client.CreateOrderCustomer(itm as OrderCustomer)); };
                updateFunc    = itm => { return(DBProvider.Client.UpdateOrderCustomer(itm as OrderCustomer)); };
                getFunc       = itm => { return(DBProvider.Client.GetOrderCustomer2(itm) as OperationResultValue <T>); };
                deleteFunc    = itm => { return(DBProvider.Client.DeleteOrderCustomer(itm) as OperationResult); };
                preUpdateFunc = itm => { var tItm = itm as OrderCustomer;  tItm.LastUpdatedSession = RealTimeUpdaterSingleton.Instance.Transaction; return(tItm as T); };
            }
            else if (typeof(T) == (typeof(OrderCustomerPhone)))
            {
                createFunc    = itm => { return(DBProvider.Client.CreateOrderCustomerPhone(itm as OrderCustomerPhone)); };
                updateFunc    = itm => { return(DBProvider.Client.UpdateOrderCustomerPhone(itm as OrderCustomerPhone)); };
                getFunc       = itm => { return(DBProvider.Client.GetOrderCustomerPhone(itm) as OperationResultValue <T>); };
                deleteFunc    = itm => { return(DBProvider.Client.DeleteOrderCustomerPhone(itm) as OperationResult); };
                preUpdateFunc = itm => { var tItm = itm as OrderCustomerPhone; tItm.LastUpdatedSession = RealTimeUpdaterSingleton.Instance.Transaction; return(tItm as T); };
            }
            else if (typeof(T) == (typeof(OrderCustomerAddress)))
            {
                createFunc    = itm => { return(DBProvider.Client.CreateOrderCustomerAddress(itm as OrderCustomerAddress)); };
                updateFunc    = itm => { return(DBProvider.Client.UpdateOrderCustomerAddress(itm as OrderCustomerAddress)); };
                getFunc       = itm => { return(DBProvider.Client.GetOrderCustomerAddress(itm) as OperationResultValue <T>); };
                deleteFunc    = itm => { return(DBProvider.Client.DeleteOrderCustomerAddress(itm) as OperationResult); };
                preUpdateFunc = itm => { var tItm = itm as OrderCustomerAddress; tItm.LastUpdatedSession = RealTimeUpdaterSingleton.Instance.Transaction; return(tItm as T); };
            }
            else if (typeof(T) == (typeof(OrderToGo)))
            {
                createFunc    = itm => { return(DBProvider.Client.CreateOrderToGoWithPackage(itm as OrderToGo)); };
                updateFunc    = itm => { return(DBProvider.Client.UpdateOrderToGo(itm as OrderToGo)); };
                getFunc       = itm => { return(DBProvider.Client.GetOrderToGo(itm) as OperationResultValue <T>); };
                deleteFunc    = itm => { return(DBProvider.Client.DeleteOrderToGo(itm) as OperationResult); };
                preUpdateFunc = itm =>
                {
                    if (itm == null)
                    {
                        return(itm);
                    }
                    OrderToGo order = itm as OrderToGo;
                    order.OrderCustomerId    = order.OrderCustomer?.Id;
                    order.MarketingChannelId = order.MarketingChannel?.Id;
                    order.DriverId           = order.Driver?.Id;
                    order.CreatedById        = order.CreatedBy?.Id;
                    order.AddressId          = order.Address?.Id;
                    order.LastUpdatedSession = RealTimeUpdaterSingleton.Instance.Transaction;
                    foreach (var d in order.DishPackages)
                    {
                        d.OrderToGoId = order.Id;
                        d.DishId      = d.Dish.Id;
                        d.Dish        = null;

                        d.OrderToGo = null;
                    }
                    return(order as T);
                };

                postGetFunc = itm =>
                {
                    OrderToGo ord = itm as OrderToGo;
                    if (ord == null)
                    {
                        return(itm);
                    }
                    ord.OrderCustomer = DataExtension.DataCatalogsSingleton.Instance.OrderCustomerData.Data.SingleOrDefault(a => a.Id == ord.OrderCustomerId);
                    if (ord.CreatedById != null)
                    {
                        ord.CreatedBy = DataExtension.DataCatalogsSingleton.Instance.ManagerOperator.SingleOrDefault(a => a.Id == ord.CreatedById);
                    }
                    if (ord.PaymentId != null)
                    {
                        ord.PaymentType = DataExtension.DataCatalogsSingleton.Instance.Payments.SingleOrDefault(a => a.Id == ord.PaymentId);
                    }

                    if (ord.MarketingChannelId != null)
                    {
                        ord.MarketingChannel = DataExtension.DataCatalogsSingleton.Instance.MarketingChannels.SingleOrDefault(a => a.Id == ord.MarketingChannelId);
                    }

                    if (ord.DriverId != null)
                    {
                        ord.Driver = DataExtension.DataCatalogsSingleton.Instance.Drivers.SingleOrDefault(a => a.Id == ord.DriverId);
                    }
                    if (ord.AddressId != 0)
                    {
                        ord.Address = DataExtension.DataCatalogsSingleton.Instance.OrderCustomerAddressData.Data.SingleOrDefault(a => a.Id == ord.AddressId);
                    }
                    if (ord.DishPackages != null)
                    {
                        foreach (var d in ord.DishPackages)
                        {
                            d.Printed = true;
                            d.Dish    = DataExtension.DataCatalogsSingleton.Instance.Dishes.SingleOrDefault(a => a.Id == d.DishId);
                            if (d.Deleted && d.DeletedStatus == 1)
                            {
                                d.UpDateSpisPayment();
                            }
                        }
                    }
                    return(ord as T);
                };
            }
            else

            {
                throw new ArgumentException("Not supported type");
            }
        }
Beispiel #24
0
        public void PrintKitchenDocumentToGo(OrderToGo order)
        {
            if (order == null)
            {
                return;
            }
            try
            {
                logger.Debug($"PrintKitchenDocumentToGo {order.Id}");
                // Создаём объект приложения
                Word.Application app = new Word.Application();
                app.Visible = true;
                // Путь до шаблона документа
                // Открываем

                document = app.Documents.Add(System.AppDomain.CurrentDomain.BaseDirectory + SampleDocumentPath);
                document.Paragraphs.Add();
                int ParNum = 1;
                AddLeftCaptionText(document.Paragraphs[1], $"Заказ {order.Id}", true);
                document.Paragraphs.Add();

                AddLeftCaptionText(document.Paragraphs.Last, $"Клиент {order.OrderCustomer?.FullName}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Телефон {order.PhoneNumber}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Адрес {order.Address.AddressExt}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Дата {order.DeliveryDate.ToString("dd.MM.yyyy HH:mm")}");
                document.Paragraphs.Add();
                AddLeftCaptionText(document.Paragraphs.Last, $"Машина забирает: {order.ExportTime.ToString("HH:mm")}");
                document.Paragraphs.Add();
                AddMiddleCaptionText(document.Paragraphs.Last, $"Готовность в ресторане в {order.ReadyTime.ToString("HH:mm")}", true);
                string comment = order.CommentKitchen;
                if (comment != null && comment != "")
                {
                    document.Paragraphs.Add();
                    AddMiddleCaptionText(document.Paragraphs.Last, comment);
                }



                foreach (var KGroup in order.DishPackagesNoSpis.Select(a => a.Dish.DishKitсhenGroupId).Distinct().OrderBy(a => a.Value))
                {
                    foreach (var Pak in order.DishPackagesNoSpis.Where(a => ((a.Dish.DishKitсhenGroupId != null && a.Dish.DishKitсhenGroupId == KGroup))).OrderBy(a => a.PositionInOrder))
                    {
                        document.Paragraphs.Add();
                        AddDishparagraph(document.Paragraphs.Last, (DishPackageToGoOrder)Pak);
                    }
                    document.Paragraphs.Add();
                    AddDishparagraph(document.Paragraphs.Last, null);
                }

                foreach (var Pak in order.DishPackagesNoSpis.Where(a => (a.Dish.DishKitсhenGroupId == null)))
                {
                    document.Paragraphs.Add();
                    AddDishparagraph(document.Paragraphs.Last, (DishPackageToGoOrder)Pak);
                }
            }
            catch (Exception e)
            {
                logger.Error($"Error PrintKitchenDocumentToGo {order.Id} Mess: {e.Message}");
            }
        }
Beispiel #25
0
 public AddToGoOrderModel(OrderToGo order)
 {
     Order       = order;
     OrderDishez = new FullyObservableCollection <DishPackageToGoOrder>(Order.DishPackages);
     EventsInit();
 }
Beispiel #26
0
 public OrderInfoViewModel(OrderToGo order)
 {
     orderToGo = order;
 }
Beispiel #27
0
        static void ExportOrders()
        {
            _logger.Debug("ExportOrders ");
            DateTime dtstart = new DateTime(2019, 01, 31);
            var      existsD = AlohaFly.DBProvider.Client.GetDishList().Result.Where(a => a.IsToGo);

            var existsOrders = AlohaFly.DBProvider.Client.GetOrderToGoList(new OrderToGoFilter()
            {
                DeliveryDateStart = dtstart.AddDays(-5),
                DeliveryDateEnd   = DateTime.Now.AddDays(5)
            }, new PageInfo()
            {
                Skip = 0,
                Take = 1000
            }
                                                                           ).Result.Select(a => a.OldId).ToList();

            var custs     = AlohaFly.DBProvider.Client.GetOrderCustomerList().Result;
            var oldOrders = db.Orders.Where(a => a.DateDelivery >= dtstart && !existsOrders.Contains(a.ID));

            List <OrderCustomerAddress> addresses = new List <OrderCustomerAddress>();

            foreach (var addrList in custs.Select(a => a.Addresses))
            {
                addresses.AddRange(addrList);
            }
            foreach (var ord in oldOrders)
            {
                try
                {
                    _logger.Debug("ToGoOrder " + ord.ID);
                    OrderToGo ordNew = new OrderToGo();
                    ordNew.OldId       = ord.ID;
                    ordNew.AddressId   = addresses.Single(a => a.OldId == ord.AddressID).Id;
                    ordNew.PhoneNumber = db.Tel.Single(a => a.ID == ord.TelID).Number;
                    //  ordNew.Comment = ord.CommentCourier;
                    ordNew.CommentKitchen = ord.CommentKitchen;
                    ordNew.CreatedById    = GetOpenId(ord.Operator);
                    _logger.Debug("ordNew.CreatedById ");
                    ordNew.CreationDate       = ord.CreateDate + ord.CreateTime;
                    ordNew.DeliveryDate       = ord.DateDelivery.GetValueOrDefault();// + ord.TimeDelivery.GetValueOrDefault();
                    ordNew.DiscountPercent    = 0;
                    ordNew.IsSHSent           = false;
                    ordNew.MarketingChannelId = ord.SaleChannelID;
                    ordNew.ReadyTime          = ord.DateReady.GetValueOrDefault();//+ord.TimeReady
                    _logger.Debug("ordNew.ReadyTime");
                    ordNew.OrderCustomerId = custs.Single(a => a.OldId == ord.ClientID).Id;
                    _logger.Debug("ordNew.OrderCustomerId ");
                    ordNew.DriverId = GetDriverId(ord.Courier);
                    _logger.Debug("ordNew.DriverId ");
                    ordNew.OrderStatus = GetStatus(ord.Status.GetValueOrDefault());
                    _logger.Debug("ordNew.OrderStatus ");
                    ordNew.Summ = ord.Summ.GetValueOrDefault();
                    _logger.Debug("ordNew.Summ ");
                    ordNew.DeliveryPrice = ord.DeliveryPrice.GetValueOrDefault();
                    var packs = new List <DishPackageToGoOrder>();
                    foreach (var d in db.OrderContent.Where(a => a.OrderID == ord.ID))
                    {
                        _logger.Debug("d.Name; 0");
                        var nd = new DishPackageToGoOrder();
                        nd.DishName   = d.Name;
                        nd.Amount     = d.Amount.GetValueOrDefault();
                        nd.Comment    = d.WarmUP;
                        nd.TotalPrice = d.Price.GetValueOrDefault();
                        nd.Code       = d.Code;
                        if (existsD.Any(a => a.Barcode == d.Code))
                        {
                            nd.DishId = existsD.FirstOrDefault(a => a.Barcode == d.Code).Id;
                        }
                        else
                        {
                            nd.DishId = existsD.FirstOrDefault(a => a.Barcode == 17).Id;
                        }
                        _logger.Debug("d.Name; 1");
                        packs.Add(nd);
                    }

                    var res = AlohaFly.DBProvider.Client.CreateOrderToGo(ordNew);
                    if (!res.Success)
                    {
                        _logger.Debug($"ExportOrders error ");
                    }

                    //  var id = res.CreatedObjectId;

                    foreach (var d in packs)
                    {
                        d.OrderToGoId = res.CreatedObjectId;
                        OperationResult res2 = AlohaFly.DBProvider.Client.CreateDishPackageToGoOrder(d);
                        d.Id = res2.CreatedObjectId;
                    }

                    //ordNew.
                }
                catch (Exception e)
                {
                    _logger.Debug("Error ToGoOrder " + e.Message);
                }
            }
        }