package app import ( "context" "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.answerService.GetTeamAnswers( ctx, int(req.ID), req.Password, ) if err != nil { return nil, answerErrorStatus(err, "не удалось получить ответы команды") } return &proto.GetTeamAnswersRsp{ Answers: mapAnswers(answers), }, nil } func (s *server) SubmitTeamAnswers(ctx context.Context, req *proto.SubmitTeamAnswersReq) (*proto.SubmitTeamAnswersRsp, error) { err := s.answerService.SubmitTeamAnswers( ctx, int(req.ID), req.Password, convertAnswers(req.Answers), ) if err != nil { return nil, answerErrorStatus(err, "не удалось сохранить ответы команды") } return &proto.SubmitTeamAnswersRsp{}, nil } func (s *server) SetTeamAnswerScore(ctx context.Context, req *proto.SetTeamAnswerScoreReq) (*proto.SetTeamAnswerScoreRsp, error) { claims, claimsErr := claimsFromContext(ctx) if claimsErr != nil { return nil, claimsErr } 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.answerService.SetTeamAnswerScore( ctx, int(req.ID), req.QuestionCode, score, ) if err != nil { return nil, answerErrorStatus(err, "не удалось сохранить оценку ответа") } return &proto.SetTeamAnswerScoreRsp{}, nil }