Пример #1
0
        // MHL : Let op, als er ergens in deze functie iets mis gaat staat er een halve order in de database, zorg dat alle acties om een order aan te maken binnen een transactie vallen
        // gebruik hiervoor de transactionscope uit het package Actemium.Data (nuGet)
        private bool CreateOrModifyOrderInDatabase(Order order, OrderMessage orderMessage, List <BomItem> bomItems)
        {
            List <Order>     existingOrders = new Orders().GetByCode(order.Code);
            TransactionScope transaction    = new TransactionScope();

            if (existingOrders.Count > 0)
            {
                OrderMessage existingOrderMessage = new OrderMessages().GetById(existingOrders[0].OrderMessageId);

                if (DateTime.Compare(existingOrderMessage.SentDate, orderMessage.SentDate) < 0)
                {
                    if (existingOrders[0].StartDate is null)
                    {
                        using (transaction)
                        {
                            order.Id             = existingOrders[0].Id;
                            order.OrderMessageId = new OrderMessages().Add(orderMessage);
                            List <BomItem> existingBomItems = new BomItems().GetByOrderId(order.Id);

                            SetOrderIdToBomItems(bomItems, order.Id);
                            DeleteExistingBomItems(existingBomItems);
                            AddBomItems(bomItems);

                            new Orders().Modify(order);

                            transaction.Complete();

                            return(true);
                        }
                    }
                    else
                    {
                        Trace.WriteError($"Order with code {order.Code} is already exists and started", Trace.GetMethodName(), CLASSNAME);
                    }
                }
                else
                {
                    // MHL : newer senddate?
                    Trace.WriteError($"Order with code {order.Code} is already exists and has an newer senddate", Trace.GetMethodName(), CLASSNAME);
                }
            }
            else
            {
                // MHL : voor ieder business class is een singleton gemaakt die je kunt gebruiken bijv: OrderMessages.Instance Dat scheelt de hele tijd classes initialiseren
                // dit geldt ook al zo in de GUI maar toen is het me niet opgevallen. Onderstaande is overigens ook niet fout.
                using (transaction)
                {
                    order.OrderMessageId = new OrderMessages().Add(orderMessage);
                    order.Id             = new Orders().Add(order);

                    SetOrderIdToBomItems(bomItems, order.Id);
                    AddBomItems(bomItems);

                    transaction.Complete();
                    return(true);
                }
            }

            return(false);
        }
Пример #2
0
        public OrderObjects Get()
        {
            List <Orders> _orders  = new List <Orders>();
            OrderMessages _message = new OrderMessages();

            var _returnObject = orderService.OrdersGet();

            _orders = _returnObject._orders;
            return(new OrderObjects()
            {
                _orders = _orders,
                _orderMessages = _message
            });
        }
Пример #3
0
        private void RedirectTo(Item chosenItem)
        {
            switch (chosenItem.Name)
            {
            case "Burgers":
                Item[] burgers = new BurgerService().Items;
                ShowMenu(burgers, true);
                TakeChoiceFromPassedMenu(burgers);
                break;

            case "Refreshments":
                Item[] refreshments = new RefreshmentsService().Items;
                ShowMenu(refreshments, true);
                TakeChoiceFromPassedMenu(refreshments);
                break;

            case "Nothing thanks":
                if (order.OrderItems.Count == 0)
                {
                    Messages.PressAnyKeyToContinue("Get out if you're not a customer, please.");
                }
                else
                {
                    Messages.PressAnyKeyToContinue("Good Bye then");
                }
                break;

            default:
                order.AddItem(chosenItem);
                OrderMessages.Summary(order);
                if (OrderMessages.IsThatAll())
                {
                    OrderMessages.Summary(order);
                    OrderMessages.ThankYouForOrder();
                    BeginingOfService();
                }
                else
                {
                    BeginingOfService();
                }
                break;
            }
        }
Пример #4
0
 private void CheckPlease()
 {
     Messages.Display($"Your order is {order.TotalPrice()}", true);
     OrderMessages.Summary(order);
     Messages.PressAnyKeyToContinue();
 }