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

No files matched your search

+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) { func (r dashboardRepo) GetPerbandinganStatusAntrean(c context.Context, req PeriodeDashboardRequest) (ListPerbandinganStatusAntrean, error) {
var result ListPerbandinganStatusAntrean var result ListPerbandinganStatusAntrean
startDate, endDate := GenerateStartEndDate(req)
query := queryUtils.DynamicQuery{ query := queryUtils.DynamicQuery{
From: TBL_NAME, From: TBL_NAME,
@@ -166,19 +165,27 @@ func (r dashboardRepo) GetPerbandinganStatusAntrean(c context.Context, req Perio
{Expression: "dpo.Status_operasi", Alias: "status_operasi"}, {Expression: "dpo.Status_operasi", Alias: "status_operasi"},
{Expression: "COUNT(dpo.id)", Alias: "jumlah"}, {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"}, GroupBy: []string{"dpo.Status_operasi"},
Sort: []queryUtils.SortField{ Sort: []queryUtils.SortField{
{Column: "dpo.Status_operasi", Order: "ASC"}, {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) dbconn, err := r.db.GetSQLXDB(DB_NAME)
if err != nil { if err != nil {
return result, err 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) { func (r dashboardRepo) GetPerbandinganKategoriAntrean(c context.Context, req PeriodeDashboardRequest) ([]PerbandinganKategoriAntrean, error) {
var result []PerbandinganKategoriAntrean 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{ query := queryUtils.DynamicQuery{
From: "daftar_kategori_operasi", From: "daftar_kategori_operasi",
@@ -208,15 +227,10 @@ func (r dashboardRepo) GetPerbandinganKategoriAntrean(c context.Context, req Per
}, },
Joins: []queryUtils.Join{ Joins: []queryUtils.Join{
{ {
Type: "LEFT", Type: "LEFT",
Table: TBL_NAME, Table: TBL_NAME,
Alias: "dpo", Alias: "dpo",
OnConditions: queryUtils.FilterGroup{ OnConditions: joinConditions,
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",
},
}, },
}, },
GroupBy: []string{"dko.id", "dko.Kategori"}, GroupBy: []string{"dko.id", "dko.Kategori"},
+3 -2
View File
@@ -3,8 +3,9 @@ package dashboard
import "strconv" import "strconv"
type PeriodeDashboardRequest struct { type PeriodeDashboardRequest struct {
Year int `form:"year" binding:"required,min=1"` Year int `form:"year" binding:"required,min=1"`
Month int `form:"month" binding:"required,min=1,max=12"` Month int `form:"month" binding:"required,min=1,max=12"`
IsAll bool `form:"is_all"`
} }
func GenerateStartEndDate(req PeriodeDashboardRequest) (startDate string, endDate string) { func GenerateStartEndDate(req PeriodeDashboardRequest) (startDate string, endDate string) {