Exemplo n.º 1
0
        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));
            }
                );
        }
Exemplo n.º 2
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));
            });
        }