feat: update ppid data files for sorting by position

This commit is contained in:
hanif salafi 2024-07-15 11:21:08 +07:00
parent c4c520866b
commit 34df6f1a93
2 changed files with 47 additions and 0 deletions

View File

@ -7,6 +7,7 @@ import (
"go-humas-be/app/database/entity"
"go-humas-be/app/module/ppid_data_files/request"
"go-humas-be/utils/paginator"
"strings"
)
type ppidDataFilesRepository struct {
@ -39,11 +40,49 @@ func (_i *ppidDataFilesRepository) GetAll(req request.PpidDataFilesQueryRequest)
var count int64
query := _i.DB.DB.Model(&entity.PpidDataFiles{})
query = query.Where("is_active = ?", true)
if req.Title != nil && *req.Title != "" {
title := strings.ToLower(*req.Title)
query = query.Where("LOWER(title) LIKE ?", "%"+strings.ToLower(title)+"%")
}
if req.Description != nil && *req.Description != "" {
description := strings.ToLower(*req.Description)
query = query.Where("LOWER(description) LIKE ?", "%"+strings.ToLower(description)+"%")
}
if req.Unit != nil && *req.Unit != "" {
unit := strings.ToLower(*req.Unit)
query = query.Where("LOWER(unit) LIKE ?", "%"+strings.ToLower(unit)+"%")
}
if req.FileType != nil && *req.FileType != "" {
query = query.Where("file_type = ?", req.FileType)
}
if req.PpidDataId != nil {
query = query.Where("ppid_data_id = ?", req.PpidDataId)
}
if req.IsPublish != nil {
query = query.Where("is_publish = ?", req.IsPublish)
}
if req.StatusId != nil {
query = query.Where("status_id = ?", req.StatusId)
}
query.Count(&count)
if req.Pagination.SortBy != "" {
direction := "ASC"
if req.Pagination.Sort == "desc" {
direction = "DESC"
}
query.Order(fmt.Sprintf("%s %s", req.Pagination.SortBy, direction))
}
req.Pagination.Count = count
req.Pagination = paginator.Paging(req.Pagination)
if req.Pagination.Limit == -1 {
query.Limit(req.Pagination.Limit)
}
err = query.Offset(req.Pagination.Offset).Limit(req.Pagination.Limit).Find(&ppidDataFiless).Error
if err != nil {
return

View File

@ -17,6 +17,7 @@ type PpidDataFilesQueryRequest struct {
Description *string `json:"description"`
Unit *string `json:"unit"`
FileType *string `json:"fileType"`
Position *int `json:"position"`
StatusId *int `json:"statusId"`
IsPublish *bool `json:"isPublish"`
Pagination *paginator.Pagination `json:"pagination"`
@ -102,6 +103,7 @@ type PpidDataFilesQueryRequestContext struct {
Description string `json:"description"`
Unit string `json:"unit"`
FileType string `json:"fileType"`
Position string `json:"position"`
StatusId string `json:"statusId"`
IsPublish string `json:"isPublish"`
}
@ -127,6 +129,12 @@ func (req PpidDataFilesQueryRequestContext) ToParamRequest() PpidDataFilesQueryR
if fileType := req.FileType; fileType != "" {
request.FileType = &fileType
}
if positionStr := req.Position; positionStr != "" {
position, err := strconv.Atoi(positionStr)
if err == nil {
request.Position = &position
}
}
if statusIdStr := req.StatusId; statusIdStr != "" {
statusId, err := strconv.Atoi(statusIdStr)
if err == nil {