add sorting at marketing

This commit is contained in:
giovanni
2026-05-07 14:03:17 +07:00
parent 81b9e88bb6
commit 0357531e73
3 changed files with 29 additions and 1 deletions
@@ -292,7 +292,25 @@ func (s deliveryOrdersService) GetAll(c *fiber.Ctx, params *validation.DeliveryO
if params.MarketingId != 0 {
return db.Where("id = ?", params.MarketingId)
}
return db.Order("created_at DESC").Order("updated_at DESC")
orderDir := "DESC"
if params.SortOrder != "" {
orderDir = strings.ToUpper(params.SortOrder)
}
switch strings.TrimSpace(params.SortBy) {
case "so_number":
return db.Order("marketings.so_number " + orderDir)
case "so_date":
return db.Order("marketings.so_date " + orderDir)
case "status":
statusSQL := "(SELECT step_name FROM approvals WHERE approvable_type = '" + utils.ApprovalWorkflowMarketing.String() + "' AND approvable_id = marketings.id ORDER BY action_at DESC, id DESC LIMIT 1) " + orderDir
return db.Order(statusSQL)
case "customer":
return db.Joins("LEFT JOIN customers ON customers.id = marketings.customer_id").Order("COALESCE(customers.name, '') " + orderDir)
default:
return db.Order("created_at DESC").Order("updated_at DESC")
}
})
if err != nil {
return nil, 0, err