diff --git a/internal/modules/marketing/controllers/deliveryorder.controller.go b/internal/modules/marketing/controllers/deliveryorder.controller.go index 208d8b48..1b1b1d41 100644 --- a/internal/modules/marketing/controllers/deliveryorder.controller.go +++ b/internal/modules/marketing/controllers/deliveryorder.controller.go @@ -75,6 +75,9 @@ func (u *DeliveryOrdersController) GetAll(c *fiber.Ctx) error { WarehouseID: uint(c.QueryInt("warehouse_id", 0)), SortBy: sortBy, SortOrder: sortOrder, + StartDate: strings.TrimSpace(c.Query("start_date", "")), + EndDate: strings.TrimSpace(c.Query("end_date", "")), + FilterBy: strings.TrimSpace(c.Query("filter_by", "")), } if isAllExcelExportRequest(c) { diff --git a/internal/modules/marketing/services/deliveryorder.service.go b/internal/modules/marketing/services/deliveryorder.service.go index d442f457..7665a1d8 100644 --- a/internal/modules/marketing/services/deliveryorder.service.go +++ b/internal/modules/marketing/services/deliveryorder.service.go @@ -321,6 +321,21 @@ func (s deliveryOrdersService) GetAll(c *fiber.Ctx, params *validation.DeliveryO return db.Where("id = ?", params.MarketingId) } + dateStart, dateEnd, dateErr := utils.ParseDateRangeForQuery(params.StartDate, params.EndDate) + if dateErr != nil { + return db.Where("1 = 0") + } + dateCol := "marketings.so_date" + if strings.TrimSpace(params.FilterBy) == "created_at" { + dateCol = "marketings.created_at" + } + if dateStart != nil { + db = db.Where(dateCol+" >= ?", *dateStart) + } + if dateEnd != nil { + db = db.Where(dateCol+" < ?", *dateEnd) + } + orderDir := "DESC" if params.SortOrder != "" { orderDir = strings.ToUpper(params.SortOrder) diff --git a/internal/modules/marketing/validations/deliveryorder.validation.go b/internal/modules/marketing/validations/deliveryorder.validation.go index c602de54..3504eb7b 100644 --- a/internal/modules/marketing/validations/deliveryorder.validation.go +++ b/internal/modules/marketing/validations/deliveryorder.validation.go @@ -34,6 +34,9 @@ type DeliveryOrderQuery struct { WarehouseID uint `query:"warehouse_id" validate:"omitempty,gt=0"` SortBy string `query:"sort_by" validate:"omitempty,oneof=so_number so_date status customer grand_total created_at"` SortOrder string `query:"sort_order" validate:"omitempty,oneof=asc desc"` + StartDate string `query:"start_date" validate:"omitempty,datetime=2006-01-02"` + EndDate string `query:"end_date" validate:"omitempty,datetime=2006-01-02"` + FilterBy string `query:"filter_by" validate:"omitempty,oneof=so_date created_at"` } type DeliveryOrderApprove struct {