public InfoScreenMutation( IAdminRepository admins, ILunchplanRepository lunchplans, IMealRepository meals, IMessageRepository messages ) { Name = "Mutation"; FieldAsync <BooleanGraphType>( "createAdmin", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <AdminInputType> > { Name = "admin" } ), resolve: async ctx => { var input = ctx.GetArgument <Dictionary <string, object> >("admin"); var admin = new DAL.Entity.Admin { Username = (string)input["username"] }; admin.SetPassword((string)input["password"]); return(await admins.CreateAdmin(admin)); } ); FieldAsync <BooleanGraphType>( "updateAdmin", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <AdminInputType> > { Name = "admin" } ), resolve: async ctx => { var input = ctx.GetArgument <Dictionary <string, object> >("admin"); var admin = new DAL.Entity.Admin { Username = (string)input["username"] }; admin.SetPassword((string)input["password"]); return(await admins.UpdateAdmin(admin)); } ); FieldAsync <BooleanGraphType>( "deleteAdmin", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "admin" } ), resolve: async ctx => { if (ctx.HasArgument("admin")) { return(await admins.DeleteAdmin(ctx.GetArgument <string>("admin"))); } return(false); }); FieldAsync <BooleanGraphType>( "saveLunchplan", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <LunchplanInputType> > { Name = "lunchplan" } ), resolve: async ctx => { var arg = ctx.GetArgument <Dictionary <string, object> >("lunchplan"); var week = (int)arg["week"]; var mp = (Dictionary <string, object>)arg["mealplan"]; var mealplan = new Dictionary <Weekday, int>(); foreach (var(key, val) in mp) { mealplan[Enum.Parse <Weekday>(key, true)] = (int)val; } var lunchplan = new Lunchplan { WeekNumber = week, Mealplan = mealplan }; return(await lunchplans.SaveLunchplan(lunchplan)); } ); FieldAsync <BooleanGraphType>( "createMeal", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <MealInputType> > { Name = "meal" } ), resolve: async ctx => { var meal = ctx.GetArgument <Meal>("meal"); return(await meals.CreateMeal(meal)); } ); FieldAsync <BooleanGraphType>( "createMessage", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <MessageInputType> > { Name = "message" } ), resolve: async ctx => { var message = ctx.GetArgument <Message>("message"); message.Date = DateTime.Now; message.CreatedBy = ctx.UserContext.As <InfoScreenUserContext>().AdminId; return(await messages.CreateMessage(message)); } ); }
public InfoScreenQuery( ILunchplanRepository lunchplans, IMealRepository meals, IMessageRepository messages, IAdminRepository admins ) { Name = "Query"; FieldAsync <AdminType>( "admin", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "id" }, new QueryArgument <StringGraphType> { Name = "username" } ), resolve: async ctx => { if (ctx.HasArgument("id")) { return(await admins.GetAdmin(ctx.GetArgument <int>("id"))); } if (ctx.HasArgument("username")) { return(await admins.FindByUsername(ctx.GetArgument <string>("username"))); } return(null); } ); FieldAsync <LunchplanType>( "lunchplan", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "week" } ), resolve: async ctx => { if (ctx.HasArgument("week")) { return(await lunchplans.GetLunchplan(ctx.GetArgument <int>("week"))); } return(null); } ); FieldAsync <MealType>( "meal", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "id" } ), resolve: async ctx => { if (ctx.HasArgument("id")) { return(await meals.GetMeal(ctx.GetArgument <int>("id"))); } return(null); } ); FieldAsync <ListGraphType <MealType> >( "meals", resolve: async ctx => await meals.ListMeals() ); FieldAsync <MessageType>( "message", arguments: new QueryArguments( new QueryArgument <IntGraphType> { Name = "id" } ), resolve: async ctx => { if (ctx.HasArgument("id")) { return(await messages.GetMessage(ctx.GetArgument <int>("id"))); } return(null); } ); FieldAsync <ListGraphType <MessageType> >( "messages", resolve: async ctx => await messages.ListMessages() ); FieldAsync <MessageType>( "newestMessage", resolve: async ctx => await messages.GetNewestMessage() ); }