65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package agent
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"trankilou.fr/lassistanoque/backend/internal/domain"
|
|
)
|
|
|
|
type Service struct {
|
|
repo domain.AgentRepository
|
|
repoUser domain.UserRepository
|
|
}
|
|
|
|
func NewService(
|
|
repo domain.AgentRepository,
|
|
repoUser domain.UserRepository,
|
|
) *Service {
|
|
return &Service{
|
|
repo,
|
|
repoUser,
|
|
}
|
|
}
|
|
|
|
func (s *Service) ListAgents(userID string, teamID string) ([]*domain.Agent, error) {
|
|
return s.repo.ListAgents(userID, teamID)
|
|
}
|
|
|
|
func (s *Service) GetAgent(userID string, teamID string, id string) (*domain.Agent, error) {
|
|
return s.repo.GetAgent(userID, teamID, id)
|
|
}
|
|
|
|
func (s *Service) CreateAgent(userID string, Agent *domain.Agent) (*domain.Agent, error) {
|
|
|
|
if _, err := s.repoUser.FindUserTeam(userID, Agent.TeamID); err != nil {
|
|
return nil, fmt.Errorf("error finding user in team: %s", err)
|
|
}
|
|
|
|
return s.repo.CreateAgent(userID, Agent)
|
|
}
|
|
|
|
func (s *Service) UpdateAgent(userID string, Agent *domain.Agent) (*domain.Agent, error) {
|
|
if _, err := s.repoUser.FindUserTeam(userID, Agent.TeamID); err != nil {
|
|
return nil, fmt.Errorf("error finding user in team: %s", err)
|
|
}
|
|
|
|
if _, err := s.repo.GetAgent(userID, Agent.TeamID, Agent.ID); err != nil {
|
|
return nil, fmt.Errorf("error finding Agent: %s", err)
|
|
}
|
|
|
|
return s.repo.UpdateAgent(userID, Agent)
|
|
}
|
|
|
|
func (s *Service) DeleteAgent(userID string, teamID string, id string) error {
|
|
if _, err := s.repoUser.FindUserTeam(userID, teamID); err != nil {
|
|
return fmt.Errorf("error finding user in team: %s", err)
|
|
}
|
|
|
|
if _, err := s.repo.GetAgent(userID, teamID, id); err != nil {
|
|
return fmt.Errorf("error finding Agent: %s", err)
|
|
}
|
|
|
|
return s.repo.DeleteAgent(userID, teamID, id)
|
|
|
|
}
|