public DifferencesQuery( IUserService userService, IQuestionService questionService, ILikeRecordService likeRecordService, IOptions <JwtConfig> options) { Name = "DifferencesQuery"; #region User FieldAsync <ListGraphType <UserType> >( "topUsers", resolve: context => userService.GetTopReputationUsers(1)); FieldAsync <AuthResponseType>( "auth", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "type" }, new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "code" }), resolve: context => { try { var type = context.GetArgument <string>("type"); var code = context.GetArgument <string>("code"); var user = userService.GetUser(type, code); return(new UserWithTokenModel { User = user, AccessToken = JwtGenerator.Generate(options.Value, user) }); } catch (DefinedException ex) { context.Errors.Add(ex); return(null); } }); #endregion #region Question FieldAsync <ListGraphType <QuestionType> >( "questions", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <CriteriaInputType> > { Name = "criteria" } ), resolve: context => { var criteria = context.GetArgument <CriteriaModel>("criteria"); return(questionService.GetQuestionsByCriteria(criteria)); }); FieldAsync <IntGraphType>( "questionCount", arguments: new QueryArguments(new QueryArgument <NonNullGraphType <CriteriaInputType> > { Name = "criteria" }), resolve: context => { var criteria = context.GetArgument <CriteriaModel>("criteria"); return(questionService.GetQuestionCountByCriteria(criteria)); }); FieldAsync <QuestionType>( "question", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IntGraphType> > { Name = "id" } ), resolve: context => { var questionId = context.GetArgument <int>("id"); return(questionService.GetQuestion(questionId)); }); FieldAsync <ListGraphType <AnswerType> >( "questionAnswers", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IntGraphType> > { Name = "questionId" } ), resolve: context => { var questionId = context.GetArgument <int>("questionId"); return(questionService.GetAnswersByQuestionId(questionId)); }); FieldAsync <ListGraphType <AnswerLikeType> >( "answerLikedByQuestion", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IntGraphType> > { Name = "questionId" } ), resolve: context => { var questionId = context.GetArgument <int>("questionId"); return(likeRecordService.GetRecordsByQuestion(questionId)); }); FieldAsync <AnswerLikeType>( "answerLikedByAnswer", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <IntGraphType> > { Name = "answerId" } ), resolve: context => { var answerId = context.GetArgument <int>("answerId"); return(likeRecordService.GetRecordByAnswer(answerId)); }); #endregion FieldAsync <ListGraphType <CategoryGroupType> >( "categoryDefinition", resolve: context => CategoryDefinition.CategoryGroups); }
public DifferencesMutation( IUserService userService, IQuestionService questionService, ILikeRecordService likeRecordService) { Name = "DifferencesMutation"; #region User FieldAsync <UserType>( "updateUserInfo", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <UserInputType> > { Name = "user" }), resolve: context => { var newUser = context.GetArgument <UserModel>("user"); return(userService.UpdateUser(newUser)); }); #endregion #region Question FieldAsync <QuestionType>( "submitQuestion", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <SubjectInputType> > { Name = "question" } ), resolve: context => { try { var question = context.GetArgument <SubjectModel>("question"); return(question.Id == 0 ? questionService.AskQuestion(question) : questionService.UpdateQuestion(question)); } catch (DefinedException ex) { context.Errors.Add(ex); return(null); } } ); FieldAsync <AnswerType>( "submitAnswer", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <ReplyInputType> > { Name = "answer" } ), resolve: context => { try { var answer = context.GetArgument <ReplyModel>("answer"); return(answer.Id == 0 ? questionService.AddAnswer(answer) : questionService.UpdateAnswer(answer)); } catch (DefinedException ex) { context.Errors.Add(ex); return(null); } } ); FieldAsync <UserType>( "likeAnswer", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <LikeInputType> > { Name = "likeRecord" } ), resolve: context => { try { var likeRecord = context.GetArgument <LikeRecordModel>("likeRecord"); return(likeRecordService.AddRecord(likeRecord)); } catch (DefinedException ex) { context.Errors.Add(ex); return(null); } }); #endregion }