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