generated from VLADIMIR/template
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
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
|
|
}
|