Exemple #1
0
        public PizzaOrderQuery(IOrderDetailsService orderDetailsService, IPizzaDetailsService pizzaDetailsService)
        {
            Name = nameof(PizzaOrderQuery);
            //this.AuthorizeWith(Constants.AuthPolicy.CustomerPolicy, Constants.AuthPolicy.RestaurantPolicy);

            FieldAsync <ListGraphType <OrderDetailsType> >(
                name: "newOrders",
                resolve: async context => await orderDetailsService.GettAllNewOrdersAsync());
            //.AuthorizeWith(Constants.AuthPolicy.RestaurantPolicy);


            FieldAsync <PizzaDetailsType>(
                name: "pizzaDetails",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "id"
            }),
                resolve: async context => await pizzaDetailsService.GetPizzaDetailsAsync(context.GetArgument <int>("id")));



            FieldAsync <OrderDetailsType>(
                name: "orderDetails",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "id"
            }),
                resolve: async context => await orderDetailsService.GetOrderDetailsAsync(context.GetArgument <int>("id")));
        }
        public PizzaOrderMutation(IPizzaDetailsService pizzaDetailsService, IOrderDetailsService orderDetailsService)
        {
            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 OrderDetails(order.AddressLine1, order.AddressLine2, order.MobileNo, order.Amount);
                orderDetails     = await orderDetailsService.CreateAsync(orderDetails);

                var pizzaDetails = order.PizzaDetails.Select(x => new PizzaDetails(x.Name, x.Toppings, x.Price, x.Size, orderDetails.Id));
                pizzaDetails     = await pizzaDetailsService.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 orderDetailsService.UpdateStatusAsync(orderId, orderStatus));
            });


            FieldAsync <OrderDetailsType>(
                name: "deletePizzaDetails",
                arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "pizzaDetailsId"
            }),
                resolve: async context =>
            {
                int pizzaDetailsId = context.GetArgument <int>("pizzaDetailsId");

                int orderId = await pizzaDetailsService.DeletePizzaDetailsAsync(pizzaDetailsId);

                return(await orderDetailsService.GetOrderDetailsAsync(orderId));
            });
        }
Exemple #3
0
        public OrderDetailsType(IPizzaDetailsService pizzaDetailsService)
        {
            Name = nameof(OrderDetailsType);

            Field(x => x.Id);
            Field(x => x.AddressLine1);
            Field(x => x.AddressLine2);
            Field(x => x.MobileNo);
            Field(x => x.Amount);
            Field(x => x.Date);

            Field <OrderStatusEnumType>(
                name: "orderStatus",
                resolve: context => context.Source.OrderStatus);

            Field <ListGraphType <PizzaDetailsType> >(
                name: "pizzaDetails",
                resolve: context => pizzaDetailsService.GetAllPizzaDetailsForOrder(context.Source.Id));
        }
Exemple #4
0
        public PizzaOrderQuery(IOrderDetailsService orderDetailsService, IPizzaDetailsService pizzaDetailsService)
        {
            Name = nameof(PizzaOrderQuery);
            //this.AuthorizeWith(Constants.AuthPolicy.CustomerPolicy, Constants.AuthPolicy.RestaurantPolicy);

            FieldAsync <ListGraphType <OrderDetailsType> >(
                name: "newOrders",
                resolve: async context => await orderDetailsService.GettAllNewOrdersAsync());
            //.AuthorizeWith(Constants.AuthPolicy.RestaurantPolicy);

            FieldAsync <PizzaDetailsType>(
                name: "pizzaDetails",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "id"
            }),
                resolve: async context => await pizzaDetailsService.GetPizzaDetailsAsync(context.GetArgument <int>("id")));

            FieldAsync <OrderDetailsType>(
                name: "orderDetails",
                arguments: new QueryArguments(new QueryArgument <IntGraphType> {
                Name = "id"
            }),
                resolve: async context => await orderDetailsService.GetOrderDetailsAsync(context.GetArgument <int>("id")))
            .AuthorizeWith(Constants.AuthPolicy.AdminPolicy);

            Connection <OrderDetailsType>()
            .Name("completedOrders")
            .Unidirectional()
            .PageSize(10)
            .Argument <CompletedOrderOrderByInputType>("orderBy", "Pass field & direction on which you want to sort data")
            .ResolveAsync(async context =>
            {
                var pageRequest = new PageRequest
                {
                    First   = context.First,
                    Last    = context.Last,
                    After   = context.After,
                    Before  = context.Before,
                    OrderBy = context.GetArgument <SortingDetails <CompletedOrdersSortingFields> >("orderBy")
                };

                var pageResponse = await orderDetailsService.GetCompletedOrdersAsync(pageRequest);

                (string startCursor, string endCursor) = CursorHelper.GetFirstAndLastCursor(pageResponse.Nodes.Select(x => x.Id));

                var edge = pageResponse.Nodes.Select(x => new Edge <OrderDetails>
                {
                    Cursor = CursorHelper.ToCursor(x.Id),
                    Node   = x
                }).ToList();

                var connection = new Connection <OrderDetails>()
                {
                    Edges      = edge,
                    TotalCount = pageResponse.TotalCount,
                    PageInfo   = new PageInfo
                    {
                        HasNextPage     = pageResponse.HasNextPage,
                        HasPreviousPage = pageResponse.HasPreviousPage,
                        StartCursor     = startCursor,
                        EndCursor       = endCursor
                    }
                };

                return(connection);
            });

            Field <PizzaDetailsType>(
                name: "exceptionDemo",
                resolve: context =>
            {
                var data = new Dictionary <string, string>
                {
                    { "key", "value" }
                };

                var ex = new ExecutionError("Some error message", data);
                ex.AddLocation(20, 500);
                context.Errors.Add(ex);

                return(pizzaDetailsService.GetPizzaDetailsOrError());
            });
        }