162 lines
4.3 KiB
Go
162 lines
4.3 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/rs/zerolog"
|
|
"netidhub-saas-be/app/database/entity"
|
|
"netidhub-saas-be/app/module/menu_modules/mapper"
|
|
"netidhub-saas-be/app/module/menu_modules/repository"
|
|
"netidhub-saas-be/app/module/menu_modules/request"
|
|
"netidhub-saas-be/app/module/menu_modules/response"
|
|
"netidhub-saas-be/utils/paginator"
|
|
)
|
|
|
|
// MenuModulesService
|
|
type menuModulesService struct {
|
|
Repo repository.MenuModulesRepository
|
|
Log zerolog.Logger
|
|
}
|
|
|
|
// MenuModulesService define interface of IMenuModulesService
|
|
type MenuModulesService interface {
|
|
All(req request.MenuModulesQueryRequest) (menuModules []*response.MenuModulesResponse, paging paginator.Pagination, err error)
|
|
GetByMenuId(menuId uint) (menuModules []*response.MenuModulesResponse, err error)
|
|
GetByModuleId(moduleId uint) (menuModules []*response.MenuModulesResponse, err error)
|
|
Show(id uint) (menuModule *response.MenuModulesResponse, err error)
|
|
Save(req request.MenuModulesCreateRequest) (err error)
|
|
SaveBatch(req request.MenuModulesBatchCreateRequest) (err error)
|
|
Update(id uint, req request.MenuModulesUpdateRequest) (err error)
|
|
Delete(id uint) error
|
|
}
|
|
|
|
// NewMenuModulesService init MenuModulesService
|
|
func NewMenuModulesService(repo repository.MenuModulesRepository, log zerolog.Logger) MenuModulesService {
|
|
return &menuModulesService{
|
|
Repo: repo,
|
|
Log: log,
|
|
}
|
|
}
|
|
|
|
// All implement interface of MenuModulesService
|
|
func (_i *menuModulesService) All(req request.MenuModulesQueryRequest) (menuModules []*response.MenuModulesResponse, paging paginator.Pagination, err error) {
|
|
results, paging, err := _i.Repo.GetAll(req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
for _, result := range results {
|
|
menuModules = append(menuModules, mapper.MenuModulesResponseMapper(result))
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (_i *menuModulesService) GetByMenuId(menuId uint) (menuModules []*response.MenuModulesResponse, err error) {
|
|
results, err := _i.Repo.GetByMenuId(menuId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, result := range results {
|
|
menuModules = append(menuModules, mapper.MenuModulesResponseMapper(result))
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (_i *menuModulesService) GetByModuleId(moduleId uint) (menuModules []*response.MenuModulesResponse, err error) {
|
|
results, err := _i.Repo.GetByModuleId(moduleId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
for _, result := range results {
|
|
menuModules = append(menuModules, mapper.MenuModulesResponseMapper(result))
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func (_i *menuModulesService) Show(id uint) (menuModule *response.MenuModulesResponse, err error) {
|
|
result, err := _i.Repo.FindOne(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return mapper.MenuModulesResponseMapper(result), nil
|
|
}
|
|
|
|
func (_i *menuModulesService) Save(req request.MenuModulesCreateRequest) (err error) {
|
|
_i.Log.Info().Interface("data", req).Msg("Creating menu module")
|
|
|
|
isActive := true
|
|
if req.IsActive != nil {
|
|
isActive = *req.IsActive
|
|
}
|
|
|
|
menuModule := &entity.MenuModules{
|
|
MenuId: req.MenuId,
|
|
ModuleId: req.ModuleId,
|
|
Position: req.Position,
|
|
ClientId: req.ClientId,
|
|
IsActive: &isActive,
|
|
}
|
|
|
|
return _i.Repo.Create(menuModule)
|
|
}
|
|
|
|
func (_i *menuModulesService) SaveBatch(req request.MenuModulesBatchCreateRequest) (err error) {
|
|
_i.Log.Info().Interface("data", req).Msg("Creating menu modules batch")
|
|
|
|
isActive := true
|
|
var menuModules []*entity.MenuModules
|
|
|
|
for idx, moduleId := range req.ModuleIds {
|
|
position := idx + 1
|
|
menuModule := &entity.MenuModules{
|
|
MenuId: req.MenuId,
|
|
ModuleId: moduleId,
|
|
Position: &position,
|
|
ClientId: req.ClientId,
|
|
IsActive: &isActive,
|
|
}
|
|
menuModules = append(menuModules, menuModule)
|
|
}
|
|
|
|
return _i.Repo.CreateBatch(menuModules)
|
|
}
|
|
|
|
func (_i *menuModulesService) Update(id uint, req request.MenuModulesUpdateRequest) (err error) {
|
|
_i.Log.Info().Interface("data", req).Msg("Updating menu module")
|
|
|
|
menuModule := &entity.MenuModules{}
|
|
if req.MenuId != nil {
|
|
menuModule.MenuId = *req.MenuId
|
|
}
|
|
if req.ModuleId != nil {
|
|
menuModule.ModuleId = *req.ModuleId
|
|
}
|
|
if req.Position != nil {
|
|
menuModule.Position = req.Position
|
|
}
|
|
if req.ClientId != nil {
|
|
menuModule.ClientId = req.ClientId
|
|
}
|
|
if req.IsActive != nil {
|
|
menuModule.IsActive = req.IsActive
|
|
}
|
|
|
|
return _i.Repo.Update(id, menuModule)
|
|
}
|
|
|
|
func (_i *menuModulesService) Delete(id uint) error {
|
|
result, err := _i.Repo.FindOne(id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
isActive := false
|
|
result.IsActive = &isActive
|
|
return _i.Repo.Update(id, result)
|
|
}
|
|
|