public UserType(IWeekService weekService, IWeekUserLinkService weekUserLinkService, IPaymentService paymentService) { FieldAsync <DecimalGraphType>("totalCost", "The sum of all week costs for weeks the user is signed up to", resolve: async context => await weekService.GetTotalCostsForUserAsync(context.Source.UserId)); FieldAsync <DecimalGraphType>("totalPaid", "The sum of amounts paid for all weeks", resolve: async context => await paymentService.GetTotalPaidForUser(context.Source.UserId)); FieldAsync <DecimalGraphType>("totalOwed", "The total amount owed by the user", resolve: async context => await paymentService.GetTotalOwedForUser(context.Source.UserId)); FieldAsync <ListGraphType <PaymentType> >("payments", "The users payments", resolve: async context => await paymentService.GetByUserIdAsync(context.Source.UserId)); FieldAsync <ListGraphType <WeekUserLinkType> >("weeks", "The users joined weeks", arguments: new QueryArguments( new QueryArgument <BooleanGraphType> { Name = "unpaidOnly", Description = "Include only unpaid weeks" } ), resolve: async context => { var unpaidOnly = context.GetArgument <bool?>("unpaidOnly"); if (unpaidOnly.HasValue && unpaidOnly.Value) { return(await weekUserLinkService.GetByUserIdAsync(context.Source.UserId, true)); } return(await weekUserLinkService.GetByUserIdAsync(context.Source.UserId)); }); }
public WeekType(IWeekService weekService, IWeekUserLinkService weekUserLinkService, IUserService userService) { FieldAsync <DecimalGraphType>("costPerUser", "The amount owed per user", resolve: async context => await weekService.GetAmountToPayPerPersonAsync(context.Source.WeekId)); FieldAsync <ListGraphType <WeekUserLinkType> >("users", resolve: async context => await weekUserLinkService.GetByWeekIdAsync(context.Source.WeekId)); FieldAsync <UserType>("shopper", resolve: async context => context.Source.ShopperUserId.HasValue ? await userService.GetByIdAsync(context.Source.ShopperUserId.Value) : null); }
public WeekService(IWeekRepository weekRepository, ILogger <WeekService> logger, IWeekUserLinkService weekUserLinkService) : base(weekRepository, logger) { _weekUserLinkService = weekUserLinkService; }
public SandwichClubQuery(IScSession session, IUserService userService, IWeekService weekService, IWeekUserLinkService weekUserLinkService) { Name = "Query"; Field <StringGraphType>( "version", resolve: context => typeof(SandwichClubQuery).Assembly.GetName().Version.ToString()); FieldAsync <UserType>( "me", resolve: async context => { return(await userService.GetByIdAsync((session.CurrentUser?.UserId).Value)); } ); FieldAsync <UserType>( "primaryShopper", resolve: async context => { return(await userService.GetPrimaryShopperAsync()); } ); FieldAsync <ListGraphType <UserType> >( "users", resolve: async context => await userService.GetAsync() ); FieldAsync <UserType>( "user", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "userId", Description = "UserId of the user" }, new QueryArgument <StringGraphType> { Name = "facebookId", Description = "FacebookId of the user" } ), resolve: async context => { var userId = context.GetArgument <int?>("userId"); if (userId != null) { return(await userService.GetByIdAsync(userId.Value)); } var socialId = context.GetArgument <string>("facebookId"); if (socialId != null) { return(await userService.GetBySocialId(socialId)); } return(null); } ); FieldAsync <WeekType>( "thisweek", resolve: async context => await weekService.GetCurrentWeekAsync() ); FieldAsync <ListGraphType <WeekType> >( "weeks", resolve: async context => await weekService.GetAsync() ); FieldAsync <WeekType>( "week", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "weekId", Description = "WeekId of the user" } ), resolve: async context => { var weekId = context.GetArgument <int?>("weekId"); if (weekId != null) { return(await weekService.GetByIdAsync(weekId.Value)); } return(null); } ); FieldAsync <WeekUserLinkType>( "weekLink", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "weekId", Description = "WeekId of the user" } ), resolve: async context => { var weekId = context.GetArgument <int>("weekId"); return(await weekUserLinkService.GetByIdAsync(new WeekUserLinkId { WeekId = weekId, UserId = (session.CurrentUser?.UserId).Value })); } ); }