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 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 OrderDetailsType(IPizzaDetailService pizzaDetailService) { Name = nameof(OrderDetailsType); Field(x => x.Id); Field(x => x.AddressLine1); Field(x => x.AddressLine2); Field(x => x.MobileNumber); Field(x => x.Amount); Field(x => x.Date); Field <OrderStatusEnumType>(name: "orderStatus", resolve: context => context.Source.OrderStatus); Field <ListGraphType <PizzaDetailsType> >(name: "pizzaDetails", resolve: context => pizzaDetailService.GetAllPizzaDetailsForOrder(context.Source.Id)); }
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)); }); }
public PizzaOrderQuery(IOrderDetailService orderDetailService, IPizzaDetailService pizzaDetailService) { Name = nameof(PizzaOrderQuery); FieldAsync <ListGraphType <OrderDetailsType> >( name: "neworder", resolve: async context => await orderDetailService.GetOrderDetailsAsync()); this.pizzaDetailService = pizzaDetailService; FieldAsync <PizzaDetialsType>( name: "Pizzadetails", arguments: new QueryArguments(new QueryArgument <IntGraphType> { Name = "id" }), resolve: async context => await pizzaDetailService.GetPizzaDetailsAsync(context.GetArgument <int>("id"))); FieldAsync <OrderDetailsType>( name: "orderDetails", arguments: new QueryArguments(new QueryArgument <IntGraphType> { Name = "id" }), resolve: async context => await orderDetailService.GetOrderDetailsAsync(context.GetArgument <int>("id"))); }
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); }); }