From 48351661c590d97f85cd6f5729d7b47853b49cb5 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Mon, 4 May 2026 16:28:03 +0700 Subject: [PATCH] fix: add order_by and sort_by query to master data employee --- .../controllers/employees.controller.go | 8 +++++--- .../employees/services/employees.service.go | 16 ++++++++++++---- .../validations/employees.validation.go | 2 ++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/internal/modules/master/employees/controllers/employees.controller.go b/internal/modules/master/employees/controllers/employees.controller.go index 3d0901c8..9b633803 100644 --- a/internal/modules/master/employees/controllers/employees.controller.go +++ b/internal/modules/master/employees/controllers/employees.controller.go @@ -24,9 +24,11 @@ func NewEmployeesController(employeesService service.EmployeesService) *Employee func (u *EmployeesController) GetAll(c *fiber.Ctx) error { query := &validation.Query{ - Page: c.QueryInt("page", 1), - Limit: c.QueryInt("limit", 10), - Search: c.Query("search", ""), + Page: c.QueryInt("page", 1), + Limit: c.QueryInt("limit", 10), + Search: c.Query("search", ""), + OrderBy: c.Query("order_by", "desc"), + SortBy: c.Query("sort_by", "updated_at"), } if query.Page < 1 || query.Limit < 1 { diff --git a/internal/modules/master/employees/services/employees.service.go b/internal/modules/master/employees/services/employees.service.go index a7a6cef3..a1f02c96 100644 --- a/internal/modules/master/employees/services/employees.service.go +++ b/internal/modules/master/employees/services/employees.service.go @@ -2,6 +2,7 @@ package service import ( "errors" + "fmt" "strings" entity "gitlab.com/mbugroup/lti-api.git/internal/entities" @@ -126,11 +127,18 @@ func (s employeesService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti if params.IsActive != nil { db = db.Where("employees.is_active = ?", *params.IsActive) } - return db. + + db = db. Select("employees.id, employees.name, employees.is_active, employees.created_at, employees.updated_at"). - Group("employees.id, employees.name, employees.is_active, employees.created_at, employees.updated_at"). - Order("employees.created_at DESC"). - Order("employees.updated_at DESC") + Group("employees.id, employees.name, employees.is_active, employees.created_at, employees.updated_at") + + if params.OrderBy == "desc" || params.OrderBy == "" { + db = db.Order(fmt.Sprintf("employees.%s DESC", params.SortBy)) + } else { + db = db.Order(fmt.Sprintf("employees.%s ASC", params.SortBy)) + } + + return db }) if err != nil { diff --git a/internal/modules/master/employees/validations/employees.validation.go b/internal/modules/master/employees/validations/employees.validation.go index 83608071..09aa471e 100644 --- a/internal/modules/master/employees/validations/employees.validation.go +++ b/internal/modules/master/employees/validations/employees.validation.go @@ -18,4 +18,6 @@ type Query struct { Search string `query:"search" validate:"omitempty,max=50"` KandangId *uint `query:"kandang_id" validate:"omitempty"` IsActive *bool `query:"is_active" validate:"omitempty"` + SortBy string `query:"sort_by" validate:"omitempty,max=50,oneof=name created_at updated_at" default:"updated_at"` + OrderBy string `query:"order_by" validate:"omitempty,oneof=asc desc" default:"desc"` }