108 lines
2.5 KiB
Go
108 lines
2.5 KiB
Go
|
|
package service
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"jaecoo-be/app/module/banners/mapper"
|
||
|
|
"jaecoo-be/app/module/banners/repository"
|
||
|
|
"jaecoo-be/app/module/banners/request"
|
||
|
|
"jaecoo-be/app/module/banners/response"
|
||
|
|
"jaecoo-be/config/config"
|
||
|
|
"jaecoo-be/utils/paginator"
|
||
|
|
|
||
|
|
"github.com/rs/zerolog"
|
||
|
|
)
|
||
|
|
|
||
|
|
type bannersService struct {
|
||
|
|
Repo repository.BannersRepository
|
||
|
|
Log zerolog.Logger
|
||
|
|
Cfg *config.Config
|
||
|
|
}
|
||
|
|
|
||
|
|
type BannersService interface {
|
||
|
|
GetAll(req request.BannersQueryRequest) (banners []*response.BannersResponse, paging paginator.Pagination, err error)
|
||
|
|
GetOne(id uint) (banner *response.BannersResponse, err error)
|
||
|
|
Create(req request.BannersCreateRequest) (banner *response.BannersResponse, err error)
|
||
|
|
Update(id uint, req request.BannersUpdateRequest) (banner *response.BannersResponse, err error)
|
||
|
|
Delete(id uint) (err error)
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewBannersService(repo repository.BannersRepository, log zerolog.Logger, cfg *config.Config) BannersService {
|
||
|
|
return &bannersService{
|
||
|
|
Repo: repo,
|
||
|
|
Log: log,
|
||
|
|
Cfg: cfg,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (_i *bannersService) GetAll(req request.BannersQueryRequest) (banners []*response.BannersResponse, paging paginator.Pagination, err error) {
|
||
|
|
bannersEntity, paging, err := _i.Repo.GetAll(req)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
host := _i.Cfg.App.Domain
|
||
|
|
|
||
|
|
for _, banner := range bannersEntity {
|
||
|
|
banners = append(banners, mapper.BannersResponseMapper(banner, host))
|
||
|
|
}
|
||
|
|
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (_i *bannersService) GetOne(id uint) (banner *response.BannersResponse, err error) {
|
||
|
|
bannerEntity, err := _i.Repo.FindOne(id)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if bannerEntity == nil {
|
||
|
|
err = errors.New("banner not found")
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
host := _i.Cfg.App.Domain
|
||
|
|
|
||
|
|
banner = mapper.BannersResponseMapper(bannerEntity, host)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (_i *bannersService) Create(req request.BannersCreateRequest) (banner *response.BannersResponse, err error) {
|
||
|
|
bannerEntity := req.ToEntity()
|
||
|
|
isActive := true
|
||
|
|
bannerEntity.IsActive = &isActive
|
||
|
|
|
||
|
|
bannerEntity, err = _i.Repo.Create(bannerEntity)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
host := _i.Cfg.App.Domain
|
||
|
|
|
||
|
|
banner = mapper.BannersResponseMapper(bannerEntity, host)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (_i *bannersService) Update(id uint, req request.BannersUpdateRequest) (banner *response.BannersResponse, err error) {
|
||
|
|
bannerEntity := req.ToEntity()
|
||
|
|
|
||
|
|
err = _i.Repo.Update(id, bannerEntity)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
bannerEntity, err = _i.Repo.FindOne(id)
|
||
|
|
if err != nil {
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
host := _i.Cfg.App.Domain
|
||
|
|
|
||
|
|
banner = mapper.BannersResponseMapper(bannerEntity, host)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
func (_i *bannersService) Delete(id uint) (err error) {
|
||
|
|
err = _i.Repo.Delete(id)
|
||
|
|
return
|
||
|
|
}
|