Пример #1
0
        public async Task CheckOut()
        {
            dynamic settings = new ExpandoObject();

            settings.WindowStartupLocationLocation = WindowStartupLocation.CenterOwner;
            settings.ResizeMode = ResizeMode.NoResize;


            try
            {
                OrderModel orderModel = new OrderModel
                {
                    UserId   = _loggedInUserModel.Id,
                    SubTotal = TotalSubTotal,
                    Tax      = TotalTax,
                    Total    = TotalTotal
                };

                int orderId = await _orderEndPoint.PostOrderInfo(orderModel);

                List <OrderDetailModel> orderDetailModels = new List <OrderDetailModel>();

                foreach (var item in Cart)
                {
                    OrderDetailModel orderDetailModel = new OrderDetailModel
                    {
                        OrderId       = orderId,
                        ProductId     = item.Id,
                        Quantity      = item.ItemQuantity,
                        PurchasePrice = item.SubTotal,
                        Tax           = item.Tax
                    };

                    orderDetailModels.Add(orderDetailModel);
                }
                if (await _orderEndPoint.PostOrderDetailsInfo(orderDetailModels))
                {
                    foreach (var item in Cart)
                    {
                        await _productEndPoint.UpdateProductQuantity(item.Id, (item.QuantityInStock - item.ItemQuantity));
                    }

                    settings.Title = "System Message";
                    _status.UpdateMessage("Thank you for shopping with us!", $"{_loggedInUserModel.FirstName}, your order Submitted Successfully");
                    await _window.ShowDialogAsync(_status, null, settings);
                }
                else
                {
                    await _orderEndPoint.DeleteOrder(orderId);

                    settings.Title = "System Error";
                    _status.UpdateMessage("Error!!!", "Something went wrong! Please try again later");
                    await _window.ShowDialogAsync(_status, null, settings);
                }
                // For testing
                // Comment the following line inside OrderDetail table and publish
                // CONSTRAINT [FK_OrderDetail_Order] FOREIGN KEY (OrderId) REFERENCES [Order](Id)
                // await _orderEndPoint.DeleteOrder(orderId); // Worked well
                await _events.PublishOnUIThreadAsync(new LogOnEvent());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Пример #2
0
        public async Task CheckOut()
        {
            dynamic settings = new ExpandoObject();

            settings.WindowStartupLocationLocation = WindowStartupLocation.CenterOwner;
            settings.ResizeMode = ResizeMode.NoResize;


            try
            {
                OrderModel orderModel = new OrderModel();
                orderModel.UserId   = _loggedInUserModel.Id;
                orderModel.SubTotal = TotalSubTotal;
                orderModel.Tax      = TotalTax;
                orderModel.Total    = TotalTotal;

                int orderId = await _orderEndPoint.PostOrderInfo(orderModel);

                List <OrderDetailModel> orderDetailModels = new List <OrderDetailModel>();

                foreach (var item in Cart)
                {
                    OrderDetailModel orderDetailModel = new OrderDetailModel();
                    orderDetailModel.OrderId       = orderId;
                    orderDetailModel.ProductId     = item.Id;
                    orderDetailModel.Quantity      = item.ItemQuantity;
                    orderDetailModel.PurchasePrice = item.SubTotal;
                    orderDetailModel.Tax           = item.Tax;

                    orderDetailModels.Add(orderDetailModel);
                }
                if (await _orderEndPoint.PostOrderDetailsInfo(orderDetailModels))
                {
                    foreach (var item in Cart)
                    {
                        // change the following and use dynamic parameters
                        // UpdatedQtyProductModel updatedQtyProduct = new UpdatedQtyProductModel();
                        // updatedQtyProduct.Id = item.Id;
                        // updatedQtyProduct.QuantityInStock = item.QuantityInStock - item.ItemQuantity;

                        //await _productEndPoint.UpdateProductQuantity(updatedQtyProduct);
                        await _productEndPoint.UpdateProductQuantity(item.Id, (item.QuantityInStock - item.ItemQuantity));
                    }

                    settings.Title = "System Message";
                    _status.UpdateMessage("Thank you for shopping with us!", $"{_loggedInUserModel.FirstName}, your order Submitted Successfully");
                    _window.ShowDialog(_status, null, settings);

                    //MessageBox.Show($@"Your order is in the way{Environment.NewLine}{_loggedInUserModel.FirstName}, Thank you for shopping with us!");
                    await ResetCart();
                }
                else
                {
                    await _orderEndPoint.DeleteOrder(orderId);

                    settings.Title = "System Error";
                    _status.UpdateMessage("Error!!!", "Something went wrong! Please try again later");
                    _window.ShowDialog(_status, null, settings);
                    //MessageBox.Show("Something went wrong! Please try again later");
                }
                // For testing
                // Comment the following line inside OrderDetail table and publish
                // CONSTRAINT [FK_OrderDetail_Order] FOREIGN KEY (OrderId) REFERENCES [Order](Id)
                // await _orderEndPoint.DeleteOrder(orderId); // Worked well
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }