mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-20 13:31:56 +00:00
fix filter purchase query param and search
This commit is contained in:
@@ -175,6 +175,7 @@ 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)
|
||||||
@@ -195,9 +196,14 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti
|
|||||||
db = db.Where("purchases.po_date >= ?", *poDateStart)
|
db = db.Where("purchases.po_date >= ?", *poDateStart)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if poDateStart != nil {
|
||||||
|
db = db.Where("purchases.po_date >= ?", *poDateStart)
|
||||||
|
}
|
||||||
|
|
||||||
if poDateEnd != nil {
|
if poDateEnd != nil {
|
||||||
db = db.Where("purchases.po_date < ?", *poDateEnd)
|
db = db.Where("purchases.po_date < ?", *poDateEnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
if scope.Restrict {
|
if scope.Restrict {
|
||||||
if len(scope.IDs) == 0 {
|
if len(scope.IDs) == 0 {
|
||||||
return db.Where("1 = 0")
|
return db.Where("1 = 0")
|
||||||
@@ -320,6 +326,70 @@ func (s *purchaseService) GetAll(c *fiber.Ctx, params *validation.Query) ([]enti
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if approvalStatus != "" {
|
||||||
|
approvalLike := "%" + approvalStatus + "%"
|
||||||
|
db = db.Where(
|
||||||
|
`EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM approvals a
|
||||||
|
WHERE a.approvable_type = ?
|
||||||
|
AND a.approvable_id = purchases.id
|
||||||
|
AND a.id = (
|
||||||
|
SELECT a2.id
|
||||||
|
FROM approvals a2
|
||||||
|
WHERE a2.approvable_type = ?
|
||||||
|
AND a2.approvable_id = purchases.id
|
||||||
|
ORDER BY a2.action_at DESC, a2.id DESC
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
AND (
|
||||||
|
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(),
|
||||||
|
utils.ApprovalWorkflowPurchase.String(),
|
||||||
|
approvalLike,
|
||||||
|
approvalLike,
|
||||||
|
approvalStatus,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if search != "" {
|
||||||
|
like := "%" + search + "%"
|
||||||
|
db = db.Where(
|
||||||
|
`(
|
||||||
|
LOWER(COALESCE(purchases.pr_number, '')) LIKE ?
|
||||||
|
OR LOWER(COALESCE(purchases.po_number, '')) LIKE ?
|
||||||
|
OR EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM suppliers s
|
||||||
|
WHERE s.id = purchases.supplier_id
|
||||||
|
AND LOWER(COALESCE(s.name, '')) LIKE ?
|
||||||
|
)
|
||||||
|
OR EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM users u
|
||||||
|
WHERE u.id = purchases.created_by
|
||||||
|
AND LOWER(COALESCE(u.name, '')) LIKE ?
|
||||||
|
)
|
||||||
|
OR EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM purchase_items pi
|
||||||
|
JOIN products p ON p.id = pi.product_id
|
||||||
|
WHERE pi.purchase_id = purchases.id
|
||||||
|
AND LOWER(COALESCE(p.name, '')) LIKE ?
|
||||||
|
)
|
||||||
|
)`,
|
||||||
|
like,
|
||||||
|
like,
|
||||||
|
like,
|
||||||
|
like,
|
||||||
|
like,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
return db.Order("created_at DESC").Order("purchases.id DESC")
|
return db.Order("created_at DESC").Order("purchases.id DESC")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user