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