61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
package service
|
||
|
||
import (
|
||
"context"
|
||
"go.uber.org/zap"
|
||
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
||
)
|
||
|
||
func (s *Service) ChangeQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) (*model.Rule, error) {
|
||
rule, err := s.repository.AmoRepo.ChangeQuizSettings(ctx, request, accountID, quizID)
|
||
if err != nil {
|
||
s.logger.Error("error change quiz settings", zap.Error(err))
|
||
return nil, err
|
||
}
|
||
|
||
return rule, nil
|
||
}
|
||
|
||
func (s *Service) SetQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) (*model.Rule, error) {
|
||
utms, err := s.repository.AmoRepo.GetUserUTMByListIDs(ctx, request.Utms)
|
||
if err != nil {
|
||
s.logger.Error("error getting user UTM byList IDs", zap.Error(err))
|
||
return nil, err
|
||
}
|
||
|
||
// получаем сохраненные utm, у них id field как правило пустое, по имени нужно найти
|
||
// существуют ли они в амо на аккаунте, если да, то получить просто id в амо, если нет, то создать
|
||
// записать новые id и записать их в базу то есть обновить, сделать это пакетно
|
||
// в апдейт методе тоже самое сделать
|
||
|
||
// получаем токен
|
||
token, err := s.repository.AmoRepo.GetTokenByID(ctx, accountID)
|
||
if err != nil {
|
||
s.logger.Error("error getting amo user token from db", zap.Error(err))
|
||
return nil, err
|
||
}
|
||
|
||
//todo метод для клиента на получение
|
||
|
||
// todo в утилиты добавить метод для отлавливания существующих и не существующийх
|
||
|
||
// todo добавление
|
||
|
||
rule, err := s.repository.AmoRepo.SetQuizSettings(ctx, request, accountID, quizID)
|
||
if err != nil {
|
||
s.logger.Error("error setting quiz settings", zap.Error(err))
|
||
return nil, err
|
||
}
|
||
|
||
return rule, nil
|
||
}
|
||
|
||
func (s *Service) GettingQuizRules(ctx context.Context, quizID int) (*model.Rule, error) {
|
||
rule, err := s.repository.AmoRepo.GettingQuizRules(ctx, quizID)
|
||
if err != nil {
|
||
s.logger.Error("error getting quiz settings", zap.Error(err))
|
||
return nil, err
|
||
}
|
||
return rule, nil
|
||
}
|