public PizzaOrderQuery(IOrderDetailService orderDetailService, IPizzaDetailService pizzaDetailService) { Name = nameof(PizzaOrderQuery); FieldAsync <ListGraphType <OrderDetailsType> >(name: "newOrders", resolve: async context => await orderDetailService.GetAllNewOrdersAsync()).AuthorizeWith(Constants.AuthPolicy.RestaurantPolicy); FieldAsync <PizzaDetailsType>("pizzaDetails", arguments: new QueryArguments(new QueryArgument <IntGraphType> { Name = "id" }), resolve: async context => await pizzaDetailService.GetPizzaDetail(context.GetArgument <int>("id"))); FieldAsync <OrderDetailsType>("orderDetails", arguments: new QueryArguments(new QueryArgument <IntGraphType> { Name = "id" }), resolve: async context => await orderDetailService.GetOrderDetailAsync(context.GetArgument <int>("id"))); Connection <OrderDetailsType>().Name("completedOrder") .Unidirectional() .PageSize(10) .Argument <CompletedOrderOrderByInputType>("orderBy", "pass in field and direction in which you want to sort data") .ResolveAsync(async context => { var pagedRequested = new PagedRequest { First = context.First, Last = context.Last, Before = context.Before, After = context.After, OrderBy = context.GetArgument <SortingDetails <CompletedOrderSortingFields> >("orderBy") }; var pagedResponse = await orderDetailService.GetCompletedOrdersAsync(pagedRequested); var(startingCursor, endingCursor) = CursorHelper.GetFirstAndLastCursor(pagedResponse.Nodes.Select(x => x.Id).ToList()); var edge = pagedResponse.Nodes.Select(x => new Edge <OrderDetail> { Cursor = CursorHelper.ToCursor(x.Id), Node = x }).ToList(); var connection = new Connection <OrderDetail> { Edges = edge, TotalCount = pagedResponse.TotalCount, PageInfo = new PageInfo { HasNextPage = pagedResponse.HasNextPage, HasPreviousPage = pagedResponse.HasPreviousPage, EndCursor = endingCursor, StartCursor = startingCursor } }; return(connection); }); }
public PizzaOrderQuery(IOrderDetailService orderDetailService, IPizzaDetailService pizzaDetailService) { this.service = orderDetailService; this.pizzaDetailService = pizzaDetailService; Name = nameof(PizzaOrderQuery); FieldAsync <ListGraphType <OrderDetailType> >(name: "newOrders", resolve: async context => await orderDetailService.GetAllNewOrdersAsync()); FieldAsync <PizzaDetailType>(name: "pizzaDetails", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> >() { Name = "id" }), resolve: async context => await pizzaDetailService.GetPizzaDetailAsync(context.GetArgument <int>("id"))); FieldAsync <OrderDetailType>(name: "orderDetails", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <IntGraphType> >() { Name = "id" }), resolve: async context => await orderDetailService.GetOrderDetailAsync(context.GetArgument <int>("id"))).AuthorizeWith(AuthPolicy.RestaurantPolicy); Connection <OrderDetailType>() .Name("completedOrders") // .Unidirectional() exposes first and after .Bidirectional() .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 orderDetailService.GetCompletedOrdersAsync(pageRequest); (string startCursor, string endCursor) = CursorHelper.GetFirstAndLastCursor(pageResponse.Nodes.Select(x => x.Id)); var edge = pageResponse.Nodes.Select(x => new Edge <OrderDetail> { Cursor = CursorHelper.ToCursor(x.Id), Node = x }).ToList(); var connection = new Connection <OrderDetail>() { Edges = edge, TotalCount = pageResponse.TotalCount, PageInfo = new PageInfo { HasNextPage = pageResponse.HasNextPage, HasPreviousPage = pageResponse.HasPreviousPage, StartCursor = startCursor, EndCursor = endCursor } }; return(connection); }); }
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()); }); }