feat: update ppid data categories and ppid data

This commit is contained in:
hanif salafi 2024-10-02 00:12:11 +07:00
parent 0f03ecd9ad
commit b45906c7ee
9 changed files with 94 additions and 3 deletions

View File

@ -8,6 +8,8 @@ type PpidDataCategories struct {
Description string `json:"description" gorm:"type:varchar"` Description string `json:"description" gorm:"type:varchar"`
Slug string `json:"slug" gorm:"type:varchar"` Slug string `json:"slug" gorm:"type:varchar"`
ParentId *uint `json:"parent_id" gorm:"type:int4"` ParentId *uint `json:"parent_id" gorm:"type:int4"`
CreatedById *uint `json:"created_by_id" gorm:"type:int4"`
LevelGroupId *uint `json:"level_group_id" gorm:"type:int4"`
Position *int `json:"position" gorm:"type:int4"` Position *int `json:"position" gorm:"type:int4"`
ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"` ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"`
ThumbnailUrl *string `json:"thumbnail_url" gorm:"type:varchar"` ThumbnailUrl *string `json:"thumbnail_url" gorm:"type:varchar"`

View File

@ -61,6 +61,7 @@ func (_i *ppidDataCategoriesController) All(c *fiber.Ctx) error {
Description: c.Query("description"), Description: c.Query("description"),
ParentId: c.Query("parentId"), ParentId: c.Query("parentId"),
IsOnlyTop: c.Query("isOnlyTop"), IsOnlyTop: c.Query("isOnlyTop"),
LevelGroup: c.Query("levelGroup"),
IsPpidDataIncluded: c.Query("isPpidDataIncluded"), IsPpidDataIncluded: c.Query("isPpidDataIncluded"),
} }
req := reqContext.ToParamRequest() req := reqContext.ToParamRequest()
@ -160,6 +161,7 @@ func (_i *ppidDataCategoriesController) ShowBySlug(c *fiber.Ctx) error {
// @Description API for create PpidDataCategories // @Description API for create PpidDataCategories
// @Tags PPID Categories // @Tags PPID Categories
// @Security Bearer // @Security Bearer
// @Param Authorization header string true "Insert your access token" default (Bearer <Add access token here>)
// @Param payload body request.PpidDataCategoriesCreateRequest true "Required payload" // @Param payload body request.PpidDataCategoriesCreateRequest true "Required payload"
// @Success 200 {object} response.Response // @Success 200 {object} response.Response
// @Failure 400 {object} response.BadRequestError // @Failure 400 {object} response.BadRequestError
@ -172,7 +174,8 @@ func (_i *ppidDataCategoriesController) Save(c *fiber.Ctx) error {
return err return err
} }
err := _i.ppidDataCategoriesService.Save(*req) authToken := c.Get("Authorization")
err := _i.ppidDataCategoriesService.Save(*req, authToken)
if err != nil { if err != nil {
return err return err
} }

View File

@ -58,6 +58,9 @@ func (_i *ppidDataCategoriesRepository) GetAll(req request.PpidDataCategoriesQue
if req.ParentId != nil { if req.ParentId != nil {
query = query.Where("parent_id = ?", req.ParentId) query = query.Where("parent_id = ?", req.ParentId)
} }
if req.LevelGroupId != nil {
query = query.Where("level_group_id = ?", req.LevelGroupId)
}
if req.IsOnlyTop != nil { if req.IsOnlyTop != nil {
if *req.IsOnlyTop == true { if *req.IsOnlyTop == true {
query = query.Where("parent_id IS NULL") query = query.Where("parent_id IS NULL")

View File

@ -17,6 +17,8 @@ type PpidDataCategoriesQueryRequest struct {
IsOnlyTop *bool `json:"isOnlyTop"` IsOnlyTop *bool `json:"isOnlyTop"`
IsPpidDataIncluded *bool `json:"isPpidDataIncluded"` IsPpidDataIncluded *bool `json:"isPpidDataIncluded"`
ParentId *uint `json:"parentId"` ParentId *uint `json:"parentId"`
LevelGroup *string `json:"levelGroup"`
LevelGroupId *uint `json:"levelGroupId"`
Pagination *paginator.Pagination `json:"pagination"` Pagination *paginator.Pagination `json:"pagination"`
} }
@ -77,6 +79,8 @@ type PpidDataCategoriesQueryRequestContext struct {
Description string `json:"description"` Description string `json:"description"`
IsOnlyTop string `json:"isOnlyTop"` IsOnlyTop string `json:"isOnlyTop"`
IsPpidDataIncluded string `json:"isPpidDataIncluded"` IsPpidDataIncluded string `json:"isPpidDataIncluded"`
LevelGroup string `json:"levelGroup"`
LevelGroupId string `json:"levelGroupId"`
ParentId string `json:"parentId"` ParentId string `json:"parentId"`
} }
@ -102,6 +106,16 @@ func (req PpidDataCategoriesQueryRequestContext) ToParamRequest() PpidDataCatego
request.IsOnlyTop = &isOnlyTop request.IsOnlyTop = &isOnlyTop
} }
} }
if levelGroup := req.LevelGroup; levelGroup != "" {
request.LevelGroup = &levelGroup
}
if levelGroupIdStr := req.LevelGroupId; levelGroupIdStr != "" {
levelGroupId, err := strconv.ParseUint(levelGroupIdStr, 10, 0)
levelGroupIdUint := uint(levelGroupId)
if err == nil {
request.LevelGroupId = &levelGroupIdUint
}
}
if isPpidDataIncludedStr := req.IsPpidDataIncluded; isPpidDataIncludedStr != "" { if isPpidDataIncludedStr := req.IsPpidDataIncluded; isPpidDataIncludedStr != "" {
isPpidDataIncluded, err := strconv.ParseBool(isPpidDataIncludedStr) isPpidDataIncluded, err := strconv.ParseBool(isPpidDataIncludedStr)
if err == nil { if err == nil {

View File

@ -12,9 +12,11 @@ import (
"go-humas-be/app/module/ppid_data_categories/response" "go-humas-be/app/module/ppid_data_categories/response"
ppidDataFilesRepository "go-humas-be/app/module/ppid_data_files/repository" ppidDataFilesRepository "go-humas-be/app/module/ppid_data_files/repository"
ppidDatasRepository "go-humas-be/app/module/ppid_datas/repository" ppidDatasRepository "go-humas-be/app/module/ppid_datas/repository"
userLevelsRepository "go-humas-be/app/module/user_levels/repository"
usersRepository "go-humas-be/app/module/users/repository" usersRepository "go-humas-be/app/module/users/repository"
config "go-humas-be/config/config" config "go-humas-be/config/config"
"go-humas-be/utils/paginator" "go-humas-be/utils/paginator"
utilSvc "go-humas-be/utils/service"
"io" "io"
"log" "log"
"math/rand" "math/rand"
@ -31,6 +33,7 @@ type ppidDataCategoriesService struct {
PpidDatasRepo ppidDatasRepository.PpidDatasRepository PpidDatasRepo ppidDatasRepository.PpidDatasRepository
PpidDataFilesRepo ppidDataFilesRepository.PpidDataFilesRepository PpidDataFilesRepo ppidDataFilesRepository.PpidDataFilesRepository
UsersRepo usersRepository.UsersRepository UsersRepo usersRepository.UsersRepository
UserLevelsRepo userLevelsRepository.UserLevelsRepository
MinioStorage *config.MinioStorage MinioStorage *config.MinioStorage
Log zerolog.Logger Log zerolog.Logger
Cfg *config.Config Cfg *config.Config
@ -42,7 +45,7 @@ type PpidDataCategoriesService interface {
AllInPpidData(req request.PpidDataCategoriesQueryRequest) (ppidDataCategories []*response.PpidDataCategoriesWithPpidDataResponse, paging paginator.Pagination, err error) AllInPpidData(req request.PpidDataCategoriesQueryRequest) (ppidDataCategories []*response.PpidDataCategoriesWithPpidDataResponse, paging paginator.Pagination, err error)
Show(id uint) (ppidDataCategories *response.PpidDataCategoriesResponse, err error) Show(id uint) (ppidDataCategories *response.PpidDataCategoriesResponse, err error)
ShowBySlug(slug string) (ppidDataCategories *response.PpidDataCategoriesResponse, err error) ShowBySlug(slug string) (ppidDataCategories *response.PpidDataCategoriesResponse, err error)
Save(req request.PpidDataCategoriesCreateRequest) (err error) Save(req request.PpidDataCategoriesCreateRequest, authToken string) (err error)
SaveThumbnail(c *fiber.Ctx) (err error) SaveThumbnail(c *fiber.Ctx) (err error)
Update(id uint, req request.PpidDataCategoriesUpdateRequest) (err error) Update(id uint, req request.PpidDataCategoriesUpdateRequest) (err error)
UpdatePosition(req []request.PpidDataCategoriesUpdatePositionRequest) (err error) UpdatePosition(req []request.PpidDataCategoriesUpdatePositionRequest) (err error)
@ -56,6 +59,7 @@ func NewPpidDataCategoriesService(
ppidDatasRepo ppidDatasRepository.PpidDatasRepository, ppidDatasRepo ppidDatasRepository.PpidDatasRepository,
ppidDataFilesRepo ppidDataFilesRepository.PpidDataFilesRepository, ppidDataFilesRepo ppidDataFilesRepository.PpidDataFilesRepository,
usersRepo usersRepository.UsersRepository, usersRepo usersRepository.UsersRepository,
userLevelsRepo userLevelsRepository.UserLevelsRepository,
minioStorage *config.MinioStorage, minioStorage *config.MinioStorage,
log zerolog.Logger, log zerolog.Logger,
cfg *config.Config, cfg *config.Config,
@ -66,6 +70,7 @@ func NewPpidDataCategoriesService(
PpidDatasRepo: ppidDatasRepo, PpidDatasRepo: ppidDatasRepo,
PpidDataFilesRepo: ppidDataFilesRepo, PpidDataFilesRepo: ppidDataFilesRepo,
UsersRepo: usersRepo, UsersRepo: usersRepo,
UserLevelsRepo: userLevelsRepo,
MinioStorage: minioStorage, MinioStorage: minioStorage,
Log: log, Log: log,
Cfg: cfg, Cfg: cfg,
@ -91,6 +96,12 @@ func (_i *ppidDataCategoriesService) All(req request.PpidDataCategoriesQueryRequ
} }
func (_i *ppidDataCategoriesService) AllInPpidData(req request.PpidDataCategoriesQueryRequest) (ppidDataCategories []*response.PpidDataCategoriesWithPpidDataResponse, paging paginator.Pagination, err error) { func (_i *ppidDataCategoriesService) AllInPpidData(req request.PpidDataCategoriesQueryRequest) (ppidDataCategories []*response.PpidDataCategoriesWithPpidDataResponse, paging paginator.Pagination, err error) {
findLevel, err := _i.UserLevelsRepo.FindOneByAlias(*req.LevelGroup)
if err != nil {
return
}
req.LevelGroupId = &findLevel.ID
results, paging, err := _i.Repo.GetAll(req) results, paging, err := _i.Repo.GetAll(req)
if err != nil { if err != nil {
return return
@ -142,7 +153,7 @@ func (_i *ppidDataCategoriesService) ShowBySlug(slug string) (ppidDataCategories
return mapper.PpidDataCategoriesResponseMapper(result, subResult), nil return mapper.PpidDataCategoriesResponseMapper(result, subResult), nil
} }
func (_i *ppidDataCategoriesService) Save(req request.PpidDataCategoriesCreateRequest) (err error) { func (_i *ppidDataCategoriesService) Save(req request.PpidDataCategoriesCreateRequest, authToken string) (err error) {
_i.Log.Info().Interface("data", req).Msg("") _i.Log.Info().Interface("data", req).Msg("")
lastPpidData, _ := _i.Repo.FindOneLastPosition() lastPpidData, _ := _i.Repo.FindOneLastPosition()
@ -152,6 +163,10 @@ func (_i *ppidDataCategoriesService) Save(req request.PpidDataCategoriesCreateRe
newReq := req.ToEntity() newReq := req.ToEntity()
newReq.Position = lastPosition newReq.Position = lastPosition
createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken)
newReq.CreatedById = &createdBy.ID
newReq.LevelGroupId = &createdBy.UserLevelId
return _i.Repo.Create(newReq) return _i.Repo.Create(newReq)
} }

View File

@ -17,6 +17,7 @@ type userLevelsRepository struct {
type UserLevelsRepository interface { type UserLevelsRepository interface {
GetAll(req request.UserLevelsQueryRequest) (userLevelss []*entity.UserLevels, paging paginator.Pagination, err error) GetAll(req request.UserLevelsQueryRequest) (userLevelss []*entity.UserLevels, paging paginator.Pagination, err error)
FindOne(id uint) (userLevels *entity.UserLevels, err error) FindOne(id uint) (userLevels *entity.UserLevels, err error)
FindOneByAlias(alias string) (userLevels *entity.UserLevels, err error)
Create(userLevels *entity.UserLevels) (err error) Create(userLevels *entity.UserLevels) (err error)
Update(id uint, userLevels *entity.UserLevels) (err error) Update(id uint, userLevels *entity.UserLevels) (err error)
Delete(id uint) (err error) Delete(id uint) (err error)
@ -83,6 +84,14 @@ func (_i *userLevelsRepository) FindOne(id uint) (userLevels *entity.UserLevels,
return userLevels, nil return userLevels, nil
} }
func (_i *userLevelsRepository) FindOneByAlias(alias string) (userLevels *entity.UserLevels, err error) {
if err := _i.DB.DB.Where("alias_name = ?", strings.ToUpper(alias)).First(&userLevels).Error; err != nil {
return nil, err
}
return userLevels, nil
}
func (_i *userLevelsRepository) Create(userLevels *entity.UserLevels) (err error) { func (_i *userLevelsRepository) Create(userLevels *entity.UserLevels) (err error) {
return _i.DB.DB.Create(userLevels).Error return _i.DB.DB.Create(userLevels).Error
} }

View File

@ -3648,6 +3648,16 @@ const docTemplate = `{
"name": "isPpidDataIncluded", "name": "isPpidDataIncluded",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "levelGroup",
"in": "query"
},
{
"type": "integer",
"name": "levelGroupId",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"name": "parentId", "name": "parentId",
@ -3738,6 +3748,13 @@ const docTemplate = `{
], ],
"summary": "Create PpidDataCategories", "summary": "Create PpidDataCategories",
"parameters": [ "parameters": [
{
"type": "string",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",

View File

@ -3637,6 +3637,16 @@
"name": "isPpidDataIncluded", "name": "isPpidDataIncluded",
"in": "query" "in": "query"
}, },
{
"type": "string",
"name": "levelGroup",
"in": "query"
},
{
"type": "integer",
"name": "levelGroupId",
"in": "query"
},
{ {
"type": "integer", "type": "integer",
"name": "parentId", "name": "parentId",
@ -3727,6 +3737,13 @@
], ],
"summary": "Create PpidDataCategories", "summary": "Create PpidDataCategories",
"parameters": [ "parameters": [
{
"type": "string",
"description": "Insert your access token",
"name": "Authorization",
"in": "header",
"required": true
},
{ {
"description": "Required payload", "description": "Required payload",
"name": "payload", "name": "payload",

View File

@ -3169,6 +3169,12 @@ paths:
- in: query - in: query
name: isPpidDataIncluded name: isPpidDataIncluded
type: boolean type: boolean
- in: query
name: levelGroup
type: string
- in: query
name: levelGroupId
type: integer
- in: query - in: query
name: parentId name: parentId
type: integer type: integer
@ -3224,6 +3230,11 @@ paths:
post: post:
description: API for create PpidDataCategories description: API for create PpidDataCategories
parameters: parameters:
- description: Insert your access token
in: header
name: Authorization
required: true
type: string
- description: Required payload - description: Required payload
in: body in: body
name: payload name: payload