mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
add filter project status and location id
This commit is contained in:
@@ -99,9 +99,31 @@ func (s closingService) GetAll(c *fiber.Ctx, params *validation.Query) ([]dto.Cl
|
||||
}
|
||||
|
||||
offset := (params.Page - 1) * params.Limit
|
||||
statusFilter := ""
|
||||
if params.ProjectStatus != nil {
|
||||
switch *params.ProjectStatus {
|
||||
case 1:
|
||||
statusFilter = "Pengajuan"
|
||||
case 2:
|
||||
statusFilter = "Aktif"
|
||||
}
|
||||
}
|
||||
|
||||
closings, total, err := s.Repository.GetAll(c.Context(), offset, params.Limit, func(db *gorm.DB) *gorm.DB {
|
||||
db = s.withClosingRelations(db)
|
||||
if params.LocationID != nil {
|
||||
db = db.Where("location_id = ?", *params.LocationID)
|
||||
}
|
||||
if statusFilter != "" {
|
||||
latestApprovalSubQuery := s.Repository.DB().
|
||||
WithContext(c.Context()).
|
||||
Table("approvals").
|
||||
Select("DISTINCT ON (approvable_id) approvable_id, step_name, id").
|
||||
Where("approvable_type = ?", utils.ApprovalWorkflowProjectFlock.String()).
|
||||
Order("approvable_id, id DESC")
|
||||
db = db.Joins("JOIN (?) AS latest_approval ON latest_approval.approvable_id = project_flocks.id", latestApprovalSubQuery).
|
||||
Where("LOWER(latest_approval.step_name) = LOWER(?)", statusFilter)
|
||||
}
|
||||
if params.Search != "" {
|
||||
return db.Where("flock_name ILIKE ?", "%"+params.Search+"%")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user