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)); }
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)); } }