示例#1
0
        public async Task <OrderVm> CreateAsync(IList <CartItem> items, string userId)
        {
            var order = new Models.Order()
            {
                UserId    = userId,
                OrderDate = DateTime.Today,
                Status    = false
            };

            _context.Add(order);
            await _context.SaveChangesAsync();

            foreach (var item in items)
            {
                await _orderDetailService.CreateAsync(order.OrderId, item.Product.ProductId, item.Quantity);
            }
            var orderVm = new OrderVm()
            {
                OrderId   = order.OrderId,
                UserId    = userId,
                OrderDate = DateTime.Today,
                Status    = false
            };

            return(orderVm);
        }
        public PizzaOrderMutation(IPizzaDetailService pizzaDetailService, IOrderDetailService orderDetailService)
        {
            Name = nameof(PizzaOrderMutation);
            FieldAsync <OrderDetailsType>(

                name: "createOrder",
                arguments: new QueryArguments(new QueryArgument <NonNullGraphType <OrderDetailsInputType> >
            {
                Name = "orderDetails"
            })
                , resolve:
                async context =>
            {
                var order                 = context.GetArgument <OrderDetailsModel>("orderDetails");
                var orderDetails          = new OrderDetail(order.AddressLine1, order.AddressLine2, order.MobileNumber, order.Amount);
                orderDetails              = await orderDetailService.CreateAsync(orderDetails);
                var pizzaDetails          = order.PizzaDetails.Select(x => new PizzaDetail(x.Name, x.Toppings, x.Price, x.Size, orderDetails.Id));
                pizzaDetails              = await pizzaDetailService.CreateBulkAsync(pizzaDetails, orderDetails.Id);
                orderDetails.PizzaDetails = pizzaDetails.ToList();
                return(orderDetails);
            });
            FieldAsync <OrderDetailsType>(
                name: "updateStatus",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            },
                    new QueryArgument <NonNullGraphType <OrderStatusEnumType> > {
                Name = "status"
            }
                    ),
                resolve: async context =>
            {
                int orderId             = context.GetArgument <int>("id");
                OrderStatus orderStatus = context.GetArgument <OrderStatus>("status");
                return(await orderDetailService.UpdateStatusAsync(orderId, orderStatus));
            }
                );


            FieldAsync <OrderDetailsType>(
                name: "deletePizzaDetails",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "pizzaDetailsId"
            }
                    ),
                resolve: async context =>
            {
                var pizzaDetailsId = context.GetArgument <int>("pizzaDetailsId");
                var orderId        = await pizzaDetailService.DeletePizzaDetailsAsync(pizzaDetailsId);
                return(await orderDetailService.GetOrderDetailAsync(orderId));
            }
                );
        }
 public async Task <ActionResult> Add(OrderDetail orderDetail)
 {
     try
     {
         await _orderDetailService.CreateAsync(orderDetail);
     }
     catch (ServiceException e)
     {
         throw new WebUiException($"Ошибка в контроллере {nameof(OrderDetailController)} в методе {nameof(Add)}", e);
     }
     return(RedirectToAction("Edit", "Order", new { id = orderDetail.OrderId }));
 }
示例#4
0
        public PizzaOrderMutation(IPizzaDetailService pizzaDetailService, IOrderDetailService orderDetailService)
        {
            this.pizzaDetailService = pizzaDetailService;
            this.orderDetailService = orderDetailService;

            Name = nameof(PizzaOrderMutation);

            FieldAsync <OrderDetailType>(name: "createOrder",
                                         arguments: new QueryArguments(
                                             new QueryArgument <NonNullGraphType <OrderDetailInputType> >()
            {
                Name = "orderDetail"
            }
                                             ),
                                         resolve: async context =>
            {
                // Get parameter from the GraphQL request
                var order       = context.GetArgument <OrderDetailModel>("orderDetail");
                var orderDetail = new OrderDetail(order.AddressLine1, order.AddressLine2, order.MobileNo, order.Amount);
                orderDetail     = await orderDetailService.CreateAsync(orderDetail);

                var pizzaDetails = order.PizzaDetails.Select(p => new PizzaDetail(p.Name, p.Toppings, p.Price, p.Size, orderDetail.Id));
                pizzaDetails     = await pizzaDetailService.CreateBulkAsync(pizzaDetails, orderDetail.Id);
                orderDetail.PizzaDetails.ToList();
                return(orderDetail);
            });

            FieldAsync <OrderDetailType>(name: "updateStatus",
                                         arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            },
                                                                       new QueryArgument <NonNullGraphType <OrderStatusEnumType> > {
                Name = "status"
            }),
                                         resolve: async context =>
            {
                var orderId     = context.GetArgument <int>("id");
                var orderStatus = context.GetArgument <OrderStatus>("status");
                return(await orderDetailService.UpdateStatusAsync(orderId, orderStatus));
            });


            FieldAsync <OrderDetailType>(name: "deletePizzaDetail",
                                         arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            }),
                                         resolve: async context =>
            {
                var pizzaDetailId = context.GetArgument <int>("id");
                var orderDetailId = await pizzaDetailService.DeletePizzaDetailsAsync(pizzaDetailId);
                return(await orderDetailService.GetOrderDetailAsync(orderDetailId));
            });
        }
示例#5
0
        public async Task <IActionResult> PaymentComplete(string listIdCourse)
        {
            PaymentVM vm          = ComputePayment(listIdCourse);
            long      totalamount = 0;

            if (User.Identity.IsAuthenticated)
            {
                if (vm.lstCourse != null && vm.lstCourse.Count > 0)
                {
                    try
                    {
                        ClaimsPrincipal      currentUser     = this.User;
                        var                  currentUserName = int.Parse(currentUser.FindFirst(ClaimTypes.NameIdentifier).Value);
                        quanlykhoahocContext context         = _courseService.GetContext();
                        using (IDbContextTransaction transaction = context.Database.BeginTransaction())
                        {
                            try
                            {
                                string orderId = Guid.NewGuid().ToString();
                                foreach (var item in vm.lstCourse)
                                {
                                    var course = _courseService.GetById(item.Id);
                                    if (course != null)
                                    {
                                        totalamount += course.Price;
                                        OrderDetails orderDetails = new OrderDetails();
                                        orderDetails.OrderId  = orderId;
                                        orderDetails.CourseId = course.Id;
                                        orderDetails.Amount   = course.Price;
                                        await _orderDetailService.CreateAsync(orderDetails);
                                    }
                                    else
                                    {
                                        transaction.Rollback();
                                        return(Json(new { status = false, loca = "" }));
                                    }
                                }
                                string convertTotal = totalamount.ToString();
                                long   amount       = Convert.ToInt64(convertTotal);
                                string endpoint     = DefinePaymentMomo.MomoTest;
                                string requestId    = Guid.NewGuid().ToString();
                                string orderInfo    = "PaymentCourse";
                                string extraData    = "";
                                Orders orderVM      = new Orders();
                                orderVM.Id        = orderId;
                                orderVM.OrderDate = DateTime.Now;
                                orderVM.PayMethod = PaymentMethod.MomoPay;
                                //trang thai chua thanh cong
                                orderVM.Status      = OrderStatus.Unpaid;
                                orderVM.TotalAmount = totalamount;
                                //tao chu ky dien tu
                                string signature = string.Empty;
                                orderVM.Signature = signature = SignatureMomo(requestId, amount.ToString(), orderId, orderInfo, extraData);
                                orderVM.RequestId = requestId;
                                orderVM.UserId    = currentUserName;
                                await _orderService.CreateAsync(orderVM);

                                string result = await CallMomo(signature, requestId, amount.ToString(), orderId, orderInfo, extraData); //yeu cau cung cap url thanh toan

                                ReposonsePayMomo reposonsePayMomo = JsonConvert.DeserializeObject <ReposonsePayMomo>(result);
                                if (reposonsePayMomo.errorCode == "0")
                                {
                                    string signatureReponse = SignatureCheckResponseMomo(requestId, orderId, reposonsePayMomo.message, reposonsePayMomo.localMessage, reposonsePayMomo.payUrl, reposonsePayMomo.errorCode, reposonsePayMomo.requestType);
                                    if (signatureReponse == reposonsePayMomo.signature)
                                    {
                                        transaction.Commit();
                                        return(Json(new { status = true, loca = reposonsePayMomo.payUrl }));
                                    }
                                    else
                                    {
                                        transaction.Rollback();
                                        return(Json(new { status = false, loca = "" }));
                                    }
                                }
                            }
                            catch
                            {
                                transaction.Rollback();
                                return(Json(new { status = false, loca = "" }));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        return(Json(new { status = false, loca = "" }));
                    }
                }
            }
            return(Json(new { status = false, loca = "" }));
        }