From a17fd04a3584c9065b6ca8317eb3ea59e833b1f7 Mon Sep 17 00:00:00 2001 From: hanif salafi Date: Wed, 2 Oct 2024 02:07:03 +0700 Subject: [PATCH] feat: update ppid data categories for admin --- .../entity/ppid_data_categories.entity.go | 1 + .../ppid_data_categories.controller.go | 1 + .../mapper/ppid_data_categories.mapper.go | 4 +++ .../ppid_data_categories.repository.go | 3 +++ .../request/ppid_data_categories.request.go | 5 ++++ .../response/ppid_data_categories.response.go | 4 +++ .../service/ppid_data_categories.service.go | 25 +++++++++++++------ docs/swagger/docs.go | 5 ++++ docs/swagger/swagger.json | 5 ++++ docs/swagger/swagger.yaml | 3 +++ 10 files changed, 48 insertions(+), 8 deletions(-) diff --git a/app/database/entity/ppid_data_categories.entity.go b/app/database/entity/ppid_data_categories.entity.go index 1c5a78a..9a3e0df 100644 --- a/app/database/entity/ppid_data_categories.entity.go +++ b/app/database/entity/ppid_data_categories.entity.go @@ -10,6 +10,7 @@ type PpidDataCategories struct { 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"` + GroupBy *string `json:"group_by" gorm:"type:int4"` Position *int `json:"position" gorm:"type:int4"` ThumbnailPath *string `json:"thumbnail_path" gorm:"type:varchar"` ThumbnailUrl *string `json:"thumbnail_url" gorm:"type:varchar"` diff --git a/app/module/ppid_data_categories/controller/ppid_data_categories.controller.go b/app/module/ppid_data_categories/controller/ppid_data_categories.controller.go index 60dc628..5a0731b 100644 --- a/app/module/ppid_data_categories/controller/ppid_data_categories.controller.go +++ b/app/module/ppid_data_categories/controller/ppid_data_categories.controller.go @@ -62,6 +62,7 @@ func (_i *ppidDataCategoriesController) All(c *fiber.Ctx) error { Description: c.Query("description"), ParentId: c.Query("parentId"), IsOnlyTop: c.Query("isOnlyTop"), + Group: c.Query("group"), LevelGroup: c.Query("levelGroup"), IsPpidDataIncluded: c.Query("isPpidDataIncluded"), } diff --git a/app/module/ppid_data_categories/mapper/ppid_data_categories.mapper.go b/app/module/ppid_data_categories/mapper/ppid_data_categories.mapper.go index ce8787f..eabe4de 100644 --- a/app/module/ppid_data_categories/mapper/ppid_data_categories.mapper.go +++ b/app/module/ppid_data_categories/mapper/ppid_data_categories.mapper.go @@ -30,6 +30,8 @@ func PpidDataCategoriesResponseMapper(ppidDataCategoriesReq *entity.PpidDataCate Slug: ppidDataCategoriesReq.Slug, ParentId: ppidDataCategoriesReq.ParentId, Position: ppidDataCategoriesReq.Position, + LevelGroupId: ppidDataCategoriesReq.LevelGroupId, + GroupBy: ppidDataCategoriesReq.GroupBy, ThumbnailUrl: ppidDataCategoriesReq.ThumbnailUrl, IsActive: ppidDataCategoriesReq.IsActive, CreatedAt: ppidDataCategoriesReq.CreatedAt, @@ -75,6 +77,8 @@ func PpidDataCategoriesWithPpidDataResponseMapper( Slug: ppidDataCategoriesReq.Slug, ParentId: ppidDataCategoriesReq.ParentId, Position: ppidDataCategoriesReq.Position, + LevelGroupId: ppidDataCategoriesReq.LevelGroupId, + GroupBy: ppidDataCategoriesReq.GroupBy, ThumbnailUrl: ppidDataCategoriesReq.ThumbnailUrl, IsActive: ppidDataCategoriesReq.IsActive, CreatedAt: ppidDataCategoriesReq.CreatedAt, diff --git a/app/module/ppid_data_categories/repository/ppid_data_categories.repository.go b/app/module/ppid_data_categories/repository/ppid_data_categories.repository.go index c82f4bf..bfc6fcc 100644 --- a/app/module/ppid_data_categories/repository/ppid_data_categories.repository.go +++ b/app/module/ppid_data_categories/repository/ppid_data_categories.repository.go @@ -58,6 +58,9 @@ func (_i *ppidDataCategoriesRepository) GetAll(req request.PpidDataCategoriesQue if req.ParentId != nil { query = query.Where("parent_id = ?", req.ParentId) } + if req.Group != nil { + query = query.Where("group_by = ?", req.Group) + } if req.LevelGroupId != nil { query = query.Where("level_group_id = ?", req.LevelGroupId) } diff --git a/app/module/ppid_data_categories/request/ppid_data_categories.request.go b/app/module/ppid_data_categories/request/ppid_data_categories.request.go index b4a054f..b7385c5 100644 --- a/app/module/ppid_data_categories/request/ppid_data_categories.request.go +++ b/app/module/ppid_data_categories/request/ppid_data_categories.request.go @@ -17,6 +17,7 @@ type PpidDataCategoriesQueryRequest struct { IsOnlyTop *bool `json:"isOnlyTop"` IsPpidDataIncluded *bool `json:"isPpidDataIncluded"` ParentId *uint `json:"parentId"` + Group *string `json:"group"` LevelGroup *string `json:"levelGroup"` LevelGroupId *uint `json:"levelGroupId"` Pagination *paginator.Pagination `json:"pagination"` @@ -79,6 +80,7 @@ type PpidDataCategoriesQueryRequestContext struct { Description string `json:"description"` IsOnlyTop string `json:"isOnlyTop"` IsPpidDataIncluded string `json:"isPpidDataIncluded"` + Group string `json:"group"` LevelGroup string `json:"levelGroup"` LevelGroupId string `json:"levelGroupId"` ParentId string `json:"parentId"` @@ -106,6 +108,9 @@ func (req PpidDataCategoriesQueryRequestContext) ToParamRequest() PpidDataCatego request.IsOnlyTop = &isOnlyTop } } + if group := req.Group; group != "" { + request.Group = &group + } if levelGroup := req.LevelGroup; levelGroup != "" { request.LevelGroup = &levelGroup } diff --git a/app/module/ppid_data_categories/response/ppid_data_categories.response.go b/app/module/ppid_data_categories/response/ppid_data_categories.response.go index 2b58af6..f6758c0 100644 --- a/app/module/ppid_data_categories/response/ppid_data_categories.response.go +++ b/app/module/ppid_data_categories/response/ppid_data_categories.response.go @@ -12,6 +12,8 @@ type PpidDataCategoriesResponse struct { Slug string `json:"slug"` ParentId *uint `json:"parentId"` Position *int `json:"position"` + LevelGroupId *uint `json:"levelGroupId"` + GroupBy *string `json:"groupBy"` ThumbnailUrl *string `json:"thumbnailUrl"` IsActive *bool `json:"isActive"` CreatedAt time.Time `json:"createdAt"` @@ -27,6 +29,8 @@ type PpidDataCategoriesWithPpidDataResponse struct { Slug string `json:"slug"` ParentId *uint `json:"parentId"` Position *int `json:"position"` + LevelGroupId *uint `json:"levelGroupId"` + GroupBy *string `json:"groupBy"` ThumbnailUrl *string `json:"thumbnailUrl"` IsActive *bool `json:"isActive"` CreatedAt time.Time `json:"createdAt"` diff --git a/app/module/ppid_data_categories/service/ppid_data_categories.service.go b/app/module/ppid_data_categories/service/ppid_data_categories.service.go index de87f5a..423603a 100644 --- a/app/module/ppid_data_categories/service/ppid_data_categories.service.go +++ b/app/module/ppid_data_categories/service/ppid_data_categories.service.go @@ -105,13 +105,12 @@ func (_i *ppidDataCategoriesService) AllInPpidData(req request.PpidDataCategorie if findLevel != nil { req.LevelGroupId = &findLevel.ID } + } else { + createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) + if createdBy != nil { + req.LevelGroupId = &createdBy.UserLevelId + } } - - createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) - if createdBy != nil { - req.LevelGroupId = &createdBy.UserLevelId - } - results, paging, err := _i.Repo.GetAll(req) if err != nil { return @@ -174,8 +173,18 @@ func (_i *ppidDataCategoriesService) Save(req request.PpidDataCategoriesCreateRe newReq.Position = lastPosition createdBy := utilSvc.GetUserInfo(_i.Log, _i.UsersRepo, authToken) - newReq.CreatedById = &createdBy.ID - newReq.LevelGroupId = &createdBy.UserLevelId + if createdBy != nil { + newReq.CreatedById = &createdBy.ID + newReq.LevelGroupId = &createdBy.UserLevelId + + userLevels, err := _i.UserLevelsRepo.FindOne(uint(createdBy.UserLevelId)) + if err != nil { + return err + } + if userLevels != nil { + newReq.GroupBy = userLevels.Group + } + } return _i.Repo.Create(newReq) } diff --git a/docs/swagger/docs.go b/docs/swagger/docs.go index 6b551b9..50bb043 100644 --- a/docs/swagger/docs.go +++ b/docs/swagger/docs.go @@ -3644,6 +3644,11 @@ const docTemplate = `{ "name": "description", "in": "query" }, + { + "type": "string", + "name": "group", + "in": "query" + }, { "type": "boolean", "name": "isOnlyTop", diff --git a/docs/swagger/swagger.json b/docs/swagger/swagger.json index 81dff52..d4a3d51 100644 --- a/docs/swagger/swagger.json +++ b/docs/swagger/swagger.json @@ -3633,6 +3633,11 @@ "name": "description", "in": "query" }, + { + "type": "string", + "name": "group", + "in": "query" + }, { "type": "boolean", "name": "isOnlyTop", diff --git a/docs/swagger/swagger.yaml b/docs/swagger/swagger.yaml index 33c1d9e..b26afc8 100644 --- a/docs/swagger/swagger.yaml +++ b/docs/swagger/swagger.yaml @@ -3167,6 +3167,9 @@ paths: - in: query name: description type: string + - in: query + name: group + type: string - in: query name: isOnlyTop type: boolean