mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-25 07:45:44 +00:00
fix filter purchase ?approval_status=approved,rejected and ?product_category_id=1,2,3
This commit is contained in:
@@ -175,7 +175,6 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti
|
|||||||
for i := range approvalStatuses {
|
for i := range approvalStatuses {
|
||||||
approvalStatuses[i] = normalizeApprovalStatusFilter(approvalStatuses[i])
|
approvalStatuses[i] = normalizeApprovalStatusFilter(approvalStatuses[i])
|
||||||
}
|
}
|
||||||
approvalStatus := normalizeApprovalStatusFilter(params.ApprovalStatus)
|
|
||||||
|
|
||||||
purchases, total, err := s.PurchaseRepo.GetAll(c.Context(), offset, params.Limit, func(db *gorm.DB) *gorm.DB {
|
purchases, total, err := s.PurchaseRepo.GetAll(c.Context(), offset, params.Limit, func(db *gorm.DB) *gorm.DB {
|
||||||
db = s.withRelations(db)
|
db = s.withRelations(db)
|
||||||
@@ -326,9 +325,22 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if approvalStatus != "" {
|
if len(approvalStatuses) > 0 {
|
||||||
approvalLike := "%" + approvalStatus + "%"
|
approvalConditions := make([]string, 0, len(approvalStatuses))
|
||||||
db = db.Where(
|
approvalArgs := make([]any, 0, 2+(len(approvalStatuses)*3))
|
||||||
|
approvalArgs = append(approvalArgs, utils.ApprovalWorkflowPurchase.String(), utils.ApprovalWorkflowPurchase.String())
|
||||||
|
for _, status := range approvalStatuses {
|
||||||
|
if status == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
like := "%" + status + "%"
|
||||||
|
approvalConditions = append(approvalConditions, `(LOWER(COALESCE(a.step_name, '')) LIKE ? OR LOWER(COALESCE(CAST(a.action AS TEXT), '')) LIKE ? OR CAST(a.step_number AS TEXT) = ?)`)
|
||||||
|
approvalArgs = append(approvalArgs, like, like, status)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(approvalConditions) > 0 {
|
||||||
|
approvalClause := strings.Join(approvalConditions, " OR ")
|
||||||
|
approvalQuery := fmt.Sprintf(
|
||||||
`EXISTS (
|
`EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM approvals a
|
FROM approvals a
|
||||||
@@ -342,18 +354,12 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti
|
|||||||
ORDER BY a2.action_at DESC, a2.id DESC
|
ORDER BY a2.action_at DESC, a2.id DESC
|
||||||
LIMIT 1
|
LIMIT 1
|
||||||
)
|
)
|
||||||
AND (
|
AND (%s)
|
||||||
LOWER(COALESCE(a.step_name, '')) LIKE ?
|
|
||||||
OR LOWER(COALESCE(CAST(a.action AS TEXT), '')) LIKE ?
|
|
||||||
OR CAST(a.step_number AS TEXT) = ?
|
|
||||||
)
|
|
||||||
)`,
|
)`,
|
||||||
utils.ApprovalWorkflowPurchase.String(),
|
approvalClause,
|
||||||
utils.ApprovalWorkflowPurchase.String(),
|
|
||||||
approvalLike,
|
|
||||||
approvalLike,
|
|
||||||
approvalStatus,
|
|
||||||
)
|
)
|
||||||
|
db = db.Where(approvalQuery, approvalArgs...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if search != "" {
|
if search != "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user