package service

import (
	"context"
	"database/sql"
	"gitea.pena/SQuiz/amocrm/internal/models"
	"gitea.pena/SQuiz/amocrm/internal/tools"
	"gitea.pena/SQuiz/common/model"
	"gitea.pena/SQuiz/common/pj_errors"
	"go.uber.org/zap"
)

func (s *Service) GetFieldsWithPagination(ctx context.Context, req *model.PaginationReq, accountID string) (*model.UserListFieldsResp, error) {
	response, err := s.repository.AmoRepo.GetFieldsWithPagination(ctx, req, accountID)
	if err != nil {
		if err == sql.ErrNoRows {
			return nil, pj_errors.ErrNotFound
		}
		s.logger.Error("error getting fields with pagination", zap.Error(err))
		return nil, err
	}
	return tools.ValidateUtmFields(response), nil
}

func (s *Service) UpdateListCustom(ctx context.Context, accountID string) error {
	message := models.KafkaMessage{
		AccountID: accountID,
		Type:      models.FieldsUpdate,
	}

	err := s.producer.ToKafkaUpdate(ctx, message)
	if err != nil {
		s.logger.Error("failed to send message to kafka on service update fields", zap.Error(err))
		return err
	}

	return nil
}
