filter is_all dashboard perbandingan status dan kategori
This commit is contained in:
@@ -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,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) {
|
||||
|
||||
Reference in New Issue
Block a user