package app import ( "context" "evening_detective_server/internal/modules/processor_jwt" "evening_detective_server/internal/modules/roles" proto "evening_detective_server/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func (s *server) GetTeamAnswers(ctx context.Context, req *proto.GetTeamAnswersReq) (*proto.GetTeamAnswersRsp, error) { answers, err := s.gameService.GetTeamAnswers( ctx, int(req.Id), req.Password, ) if err != nil { return &proto.GetTeamAnswersRsp{ Error: err.Error(), }, nil } return &proto.GetTeamAnswersRsp{ Answers: mapAnswers(answers), }, nil } func (s *server) SubmitTeamAnswers(ctx context.Context, req *proto.SubmitTeamAnswersReq) (*proto.SubmitTeamAnswersRsp, error) { err := s.gameService.SubmitTeamAnswers( ctx, int(req.Id), req.Password, convertAnswers(req.Answers), ) if err != nil { return &proto.SubmitTeamAnswersRsp{ Error: err.Error(), }, nil } return &proto.SubmitTeamAnswersRsp{}, nil } func (s *server) SetTeamAnswerScore(ctx context.Context, req *proto.SetTeamAnswerScoreReq) (*proto.SetTeamAnswerScoreRsp, error) { claims := ctx.Value("claims").(*processor_jwt.JWTClaims) if !roles.HasRole(claims, roles.Organizer) && !roles.HasRole(claims, roles.Author) { return nil, status.Errorf(codes.PermissionDenied, "permission denied") } var score *int if req.Score != nil { v := int(req.GetScore()) score = &v } err := s.gameService.SetTeamAnswerScore( ctx, int(req.Id), req.QuestionCode, score, ) if err != nil { return &proto.SetTeamAnswerScoreRsp{ Error: err.Error(), }, nil } return &proto.SetTeamAnswerScoreRsp{}, nil }