package service import ( "errors" "jaecoo-be/app/module/sales_agents/mapper" "jaecoo-be/app/module/sales_agents/repository" "jaecoo-be/app/module/sales_agents/request" "jaecoo-be/app/module/sales_agents/response" "jaecoo-be/config/config" "jaecoo-be/utils/paginator" "github.com/rs/zerolog" ) type salesAgentsService struct { Repo repository.SalesAgentsRepository Log zerolog.Logger Cfg *config.Config } type SalesAgentsService interface { GetAll(req request.SalesAgentsQueryRequest) (agents []*response.SalesAgentsResponse, paging paginator.Pagination, err error) GetOne(id uint) (agent *response.SalesAgentsResponse, err error) Create(req request.SalesAgentsCreateRequest) (agent *response.SalesAgentsResponse, err error) Update(id uint, req request.SalesAgentsUpdateRequest) (agent *response.SalesAgentsResponse, err error) Delete(id uint) (err error) } func NewSalesAgentsService(repo repository.SalesAgentsRepository, log zerolog.Logger, cfg *config.Config) SalesAgentsService { return &salesAgentsService{ Repo: repo, Log: log, Cfg: cfg, } } func (_i *salesAgentsService) GetAll(req request.SalesAgentsQueryRequest) (agents []*response.SalesAgentsResponse, paging paginator.Pagination, err error) { agentsEntity, paging, err := _i.Repo.GetAll(req) if err != nil { return } host := _i.Cfg.App.Domain for _, agent := range agentsEntity { agents = append(agents, mapper.SalesAgentsResponseMapper(agent, host)) } return } func (_i *salesAgentsService) GetOne(id uint) (agent *response.SalesAgentsResponse, err error) { agentEntity, err := _i.Repo.FindOne(id) if err != nil { return } if agentEntity == nil { err = errors.New("sales agent not found") return } host := _i.Cfg.App.Domain agent = mapper.SalesAgentsResponseMapper(agentEntity, host) return } func (_i *salesAgentsService) Create(req request.SalesAgentsCreateRequest) (agent *response.SalesAgentsResponse, err error) { agentEntity := req.ToEntity() isActive := true agentEntity.IsActive = &isActive agentEntity, err = _i.Repo.Create(agentEntity) if err != nil { return } host := _i.Cfg.App.Domain agent = mapper.SalesAgentsResponseMapper(agentEntity, host) return } func (_i *salesAgentsService) Update(id uint, req request.SalesAgentsUpdateRequest) (agent *response.SalesAgentsResponse, err error) { agentEntity := req.ToEntity() err = _i.Repo.Update(id, agentEntity) if err != nil { return } agentEntity, err = _i.Repo.FindOne(id) if err != nil { return } host := _i.Cfg.App.Domain agent = mapper.SalesAgentsResponseMapper(agentEntity, host) return } func (_i *salesAgentsService) Delete(id uint) (err error) { err = _i.Repo.Delete(id) return }