108 lines
2.6 KiB
Go
108 lines
2.6 KiB
Go
|
|
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
|
||
|
|
}
|