Exemple #1
0
        public BaseResponse <bool> CheckingOut([FromBody] CheckOutOrderRawReqestModel checkoutOrder)
        {
            //var Account = "tychang";
            var account = User.Claims.Where(c => c.Type.Equals(ClaimString.AccountName, StringComparison.InvariantCulture)).FirstOrDefault().Value;

            return(this.checkoutService.CheckingOut(checkoutOrder, account));
        }
Exemple #2
0
        public BaseResponse <bool> CheckingOut(CheckOutOrderRawReqestModel checkoutOrder, string account)
        {
            try
            {
                if (checkoutOrder == null)
                {
                    throw new ArgumentNullException(nameof(checkoutOrder));
                }
                List <ShoppingCart> cartInfo = new List <ShoppingCart>();
                checkoutOrder.Merchandises.ForEach(info =>
                {
                    var temp = this.context.ShoppingCart.Where(data => data.Account == account && data.ProdId == info.ProdId && data.SpecId == info.SpecId).FirstOrDefault();
                    if (temp != null)
                    {
                        cartInfo.Add(temp);
                    }
                });

                //adding new order by merchandise amounts
                string             guid         = Guid.NewGuid().ToString();
                List <OrderDetail> orderDetails = new List <OrderDetail>();
                int op = 0;
                cartInfo.Select((info, i) =>
                {
                    var tempMerchandise = this.context.Merchandise.Where(data => data.MerchandiseId.Equals(info.ProdId, StringComparison.InvariantCulture)).FirstOrDefault();
                    op += tempMerchandise.Price * info.PurchaseQty;
                    orderDetails.Add(new OrderDetail()
                    {
                        OrderGuid  = guid,
                        Seq        = i + 1,
                        ProdId     = info.ProdId,
                        SpecId     = info.SpecId,
                        Qty        = info.PurchaseQty,
                        TotalPrice = tempMerchandise.Price * info.PurchaseQty
                    });
                    return(0);
                }).ToList();
                this.context.OrderDetail.AddRange(orderDetails);

                var   tempFee = this.context.TransportMethod.Where(data => data.TransportId == checkoutOrder.TransportId).FirstOrDefault();
                Order order   = new Order()
                {
                    OrderGuid       = guid,
                    Status          = 1,
                    OriginPrice     = op,
                    AdditionalFee   = tempFee.Fee,
                    DiscountFee     = 0,
                    TotalPrice      = op + tempFee.Fee,
                    OrderingTime    = DateTime.Now,
                    OrderAccount    = cartInfo.First().Account,
                    TransportType   = tempFee.TransportId,
                    ReceiverName    = checkoutOrder.Recipient,
                    ReceiverAddress = checkoutOrder.ReceiverAddress,
                    ReceiverPhone   = checkoutOrder.ReceiverPhone,
                };
                this.context.Order.Add(order);
                this.context.RemoveRange(cartInfo);
                this.context.SaveChanges();
                return(new BaseResponse <bool>(true, "Order has been accepted", true));
            }
            catch (Exception ex)
            {
                logger.LogError($"{ex.Message}");
                return(new BaseResponse <bool>(false, "Checkout data pattern failed", default));
            }
        }