package service import ( "errors" "narasi-ahli-be/app/database/entity" "narasi-ahli-be/app/module/user_agent/repository" "github.com/rs/zerolog" ) type UserAgentService interface { UpdateUserAgents(userID uint, agentIDs []uint) error GetAgentsByUser(userID uint) ([]entity.Agent, error) } type userAgentService struct { Repo repository.UserAgentRepository Log zerolog.Logger } func NewUserAgentService(repo repository.UserAgentRepository, log zerolog.Logger) UserAgentService { return &userAgentService{Repo: repo, Log: log} } func (s *userAgentService) UpdateUserAgents(userID uint, agentIDs []uint) error { // kosong → valid (lepas semua agent) if len(agentIDs) == 0 { return s.Repo.ReplaceUserAgents(userID, agentIDs) } validIDs, err := s.Repo.ValidateAgents(agentIDs) if err != nil { return err } // cek apakah ada agent yang tidak exist if len(validIDs) != len(agentIDs) { return errors.New("one or more agent_id not found") } return s.Repo.ReplaceUserAgents(userID, agentIDs) } func (s *userAgentService) GetAgentsByUser(userID uint) ([]entity.Agent, error) { return s.Repo.GetAgentsByUser(userID) }