filter is_all dashboard perbandingan status dan kategori

This commit is contained in:
2026-04-30 08:06:04 +07:00
parent 095712da06
commit 5e155e7069
2 changed files with 35 additions and 20 deletions
+32 -18
View File
@@ -157,7 +157,6 @@ func (r dashboardRepo) GetAntrianPerSpesialis(c context.Context) (ListModelAntri
func (r dashboardRepo) GetPerbandinganStatusAntrean(c context.Context, req PeriodeDashboardRequest) (ListPerbandinganStatusAntrean, error) {
var result ListPerbandinganStatusAntrean
startDate, endDate := GenerateStartEndDate(req)
query := queryUtils.DynamicQuery{
From: TBL_NAME,
@@ -166,19 +165,27 @@ func (r dashboardRepo) GetPerbandinganStatusAntrean(c context.Context, req Perio
{Expression: "dpo.Status_operasi", Alias: "status_operasi"},
{Expression: "COUNT(dpo.id)", Alias: "jumlah"},
},
Filters: []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "dpo.Tanggal_daftar", Operator: queryUtils.OpBetween, Value: []string{startDate, endDate}},
},
},
},
GroupBy: []string{"dpo.Status_operasi"},
Sort: []queryUtils.SortField{
{Column: "dpo.Status_operasi", Order: "ASC"},
},
}
// filter date if is_all filter == false
if !req.IsAll {
startDate, endDate := GenerateStartEndDate(req)
dateFilter := queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{
Column: "dpo.Tanggal_daftar",
Operator: queryUtils.OpBetween,
Value: []string{startDate, endDate},
},
},
}
query.Filters = append(query.Filters, dateFilter)
}
dbconn, err := r.db.GetSQLXDB(DB_NAME)
if err != nil {
return result, err
@@ -196,7 +203,19 @@ func (r dashboardRepo) GetPerbandinganStatusAntrean(c context.Context, req Perio
func (r dashboardRepo) GetPerbandinganKategoriAntrean(c context.Context, req PeriodeDashboardRequest) ([]PerbandinganKategoriAntrean, error) {
var result []PerbandinganKategoriAntrean
startDate, endDate := GenerateStartEndDate(req)
joinConditions := queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: "dko.id"},
}, LogicOp: "AND",
}
if !req.IsAll {
startDate, endDate := GenerateStartEndDate(req)
filterDate := queryUtils.DynamicFilter{
Column: "dpo.Tanggal_daftar", Operator: queryUtils.OpBetween, Value: []string{startDate, endDate},
}
joinConditions.Filters = append(joinConditions.Filters, filterDate)
}
query := queryUtils.DynamicQuery{
From: "daftar_kategori_operasi",
@@ -208,15 +227,10 @@ func (r dashboardRepo) GetPerbandinganKategoriAntrean(c context.Context, req Per
},
Joins: []queryUtils.Join{
{
Type: "LEFT",
Table: TBL_NAME,
Alias: "dpo",
OnConditions: queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: "dko.id"},
{Column: "dpo.Tanggal_daftar", Operator: queryUtils.OpBetween, Value: []string{startDate, endDate}},
}, LogicOp: "AND",
},
Type: "LEFT",
Table: TBL_NAME,
Alias: "dpo",
OnConditions: joinConditions,
},
},
GroupBy: []string{"dko.id", "dko.Kategori"},
+3 -2
View File
@@ -3,8 +3,9 @@ package dashboard
import "strconv"
type PeriodeDashboardRequest struct {
Year int `form:"year" binding:"required,min=1"`
Month int `form:"month" binding:"required,min=1,max=12"`
Year int `form:"year" binding:"required,min=1"`
Month int `form:"month" binding:"required,min=1,max=12"`
IsAll bool `form:"is_all"`
}
func GenerateStartEndDate(req PeriodeDashboardRequest) (startDate string, endDate string) {