public StepChallengeMutation(StepContext db, StepsService stepsService, ParticipantService participantService) { Name = "Mutation"; Field <StepsType>( "creatStepsEntry", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <StepInputType> > { Name = "steps" }), resolve: context => { var steps = context.GetArgument <StepsInputs>("steps"); var stepsDay = new DateTime(steps.DateOfSteps.Year, steps.DateOfSteps.Month, steps.DateOfSteps.Day, 0, 0, 0); var existingStepCount = db.Steps .Where(s => s.ParticipantId == steps.ParticipantId) .FirstOrDefault(s => s.DateOfSteps == stepsDay); if (existingStepCount != null) { return(stepsService.Update(existingStepCount, steps)); } return(stepsService.Create(steps)); }); Field <ChallengeSettingsType>( "updateChallengeSettings", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <ChallengeSettingsInputType> > { Name = "settings" }), resolve: context => { var newSettings = context.GetArgument <ChallengeSettingsInput>("settings"); var existingSettings = db.ChallengeSettings .FirstOrDefault(); if (existingSettings != null) { existingSettings.ShowLeaderBoard = newSettings.ShowLeaderBoard; existingSettings.ShowLeaderBoardStepCounts = newSettings.ShowLeaderBoardStepCounts; } db.SaveChanges(); return(existingSettings); }); Field <TeamType>( "updateTeam", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <TeamInputType> > { Name = "team" }), resolve: context => { var newTeamInfo = context.GetArgument <TeamInput>("team"); var team = db.Team .FirstOrDefault(t => t.TeamId == newTeamInfo.TeamId); if (team != null) { team.TeamName = newTeamInfo.TeamName; team.NumberOfParticipants = newTeamInfo.NumberOfParticipants; } db.SaveChanges(); return(team); }); FieldAsync <ParticipantType>( "deleteParticipant", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <ParticipantInputType> > { Name = "participant" }), resolve: async context => { var participant = context.GetArgument <EditUserModel>("participant"); var user = await db.Participants .Where(u => u.ParticipantId == participant.ParticipantId) .Include(u => u.IdentityUser) .SingleOrDefaultAsync(); if (user != null) { await participantService.DeleteParticipant(user); } return(user); }); }