This commit is contained in:
renaldybrada
2026-03-04 10:00:44 +07:00
parent 4c6389cbb8
commit 7185a9381f
6 changed files with 272 additions and 378 deletions
+12
View File
@@ -283,6 +283,18 @@ const docTemplate = `{
"description": "Offset",
"name": "offset",
"in": "query"
},
{
"type": "string",
"description": "Type sort : tanggal_daftar no_urut_kategori no_urut_spesialis",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Type sort order : ASC DESC",
"name": "sort_order",
"in": "query"
}
],
"responses": {
+12
View File
@@ -277,6 +277,18 @@
"description": "Offset",
"name": "offset",
"in": "query"
},
{
"type": "string",
"description": "Type sort : tanggal_daftar no_urut_kategori no_urut_spesialis",
"name": "sort_by",
"in": "query"
},
{
"type": "string",
"description": "Type sort order : ASC DESC",
"name": "sort_order",
"in": "query"
}
],
"responses": {
+8
View File
@@ -718,6 +718,14 @@ paths:
in: query
name: offset
type: string
- description: 'Type sort : tanggal_daftar no_urut_kategori no_urut_spesialis'
in: query
name: sort_by
type: string
- description: 'Type sort order : ASC DESC'
in: query
name: sort_order
type: string
responses:
"200":
description: OK
+8 -1
View File
@@ -96,13 +96,20 @@ func (h AntrianOperasiHandler) CreateAntrianOperasi(c *gin.Context) {
// @Param status query string false "Status : 1, 2, 3, 4"
// @Param limit query string false "Limit" default(10)
// @Param offset query string false "Offset" default(0)
// @Param sort_by query string false "Type sort : tanggal_daftar no_urut_kategori no_urut_spesialis"
// @Param sort_order query string false "Type sort order : ASC DESC"
// @Success 200 {object} []PasienOperasi
// @Failure 500 {object} shared.BaseErrorResponse
// @Router /antrian-operasi/ [get]
func (h AntrianOperasiHandler) GetListAntrianOperasi(c *gin.Context) {
var query AntrianQuery
if err := c.ShouldBindQuery(&query); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
c.JSON(400, shared.BaseErrorResponse{
Success: false,
Code: 400,
Message: "error bind json",
Errors: shared.ValidationError(err),
})
return
}
+223 -370
View File
@@ -48,7 +48,7 @@ func NewRepository(dbService database.Service) IAntrianOperasiRepository {
"\"FK_pasien_operasi_telepon_pasien_operasi_ID\"", "FK_pasien_operasi_telepon_pasien_operasi_ID",
"\"Kode_diagnosa\"", "\"Diagnosa\"", "\"Jenis_diagnosa\"", "\"FK_pasien_operasi_diagnosa_pasien_operasi_ID\"", "FK_pasien_operasi_diagnosa_pasien_operasi_ID",
"\"Kode_tindakan\"", "\"Tindakan\"", "\"Tindakan_tambahan\"", "\"FK_pasien_operasi_tindakan_pasien_operasi_ID\"", "FK_pasien_operasi_tindakan_pasien_operasi_ID",
"\"data_pasien_operasi_id\"", "\"data_pegawai_id\"", "data_pasien_operasi_id",
"\"data_pasien_operasi_id\"", "\"data_pegawai_id\"", "data_pasien_operasi_id", "tanggal_daftar", "no_urut_kategori",
"no_urut_spesialis", "no_urut_sub_spesialis", "no_ktp", "no_rekam_medis", "nama_pasien", "status_operasi", "id_kategori", "id_spesialis", "id_subspesialis",
}).
SetAllowedTables([]string{TBL_NAME, TBL_DIAGNOSA_OPERASI})
@@ -60,236 +60,6 @@ func NewRepository(dbService database.Service) IAntrianOperasiRepository {
}
}
func (r antrianOperasiRepo) insertAntrianChildTables(c context.Context, tx *sql.Tx, idAntrian string, req CreatePasienOperasiRequest) error {
returningCols := []string{
"id",
}
// INSERT data_telepon_pasien_operasi
if len(req.FormData.NoTelepon) != 0 {
var valuesInsertTelepon [][]interface{}
for _, telp := range req.FormData.NoTelepon {
idTelepon := uuid.New().String()
itemValues := []interface{}{idTelepon, telp, idAntrian}
valuesInsertTelepon = append(valuesInsertTelepon, itemValues)
}
insertTeleponQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Nomor_telepon\"",
"\"FK_pasien_operasi_telepon_pasien_operasi_ID\"",
},
Values: valuesInsertTelepon,
}
sql, args, err := r.queryBuilder.BuildBulkInsertQuery(TBL_PASIEN_TELEPHONE, insertTeleponQuery, returningCols...)
if err != nil {
log.Printf("error building query telepon %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
log.Printf("success insert telepon")
}
// INSERT data_diagnosa_pasien_operasi
var valuesDiagnosa [][]interface{}
for _, diagnosa := range req.DiagnosisItem {
idDiagnosa := uuid.New().String()
itemValues := []interface{}{
idDiagnosa,
diagnosa.KodeDiagnosa,
diagnosa.Diagnosa,
diagnosa.JenisDiagnosa,
idAntrian,
}
valuesDiagnosa = append(valuesDiagnosa, itemValues)
}
insertDiagnosaQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Kode_diagnosa\"",
"\"Diagnosa\"",
"\"Jenis_diagnosa\"",
"\"FK_pasien_operasi_diagnosa_pasien_operasi_ID\"",
},
Values: valuesDiagnosa,
}
sql, args, err := r.queryBuilder.BuildBulkInsertQuery(TBL_DIAGNOSA_OPERASI, insertDiagnosaQuery, returningCols...)
if err != nil {
log.Printf("error building query diagnosa %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
log.Printf("success insert diagnosa")
// INSERT data_tindakan_pasien_operasi
var valuesTindakan [][]interface{}
for _, tindakan := range req.TindakanItems {
idTindakan := uuid.New().String()
itemValues := []interface{}{
idTindakan,
tindakan.KodeTindakan,
tindakan.Tindakan,
tindakan.TindakanTambahan,
idAntrian,
}
valuesTindakan = append(valuesTindakan, itemValues)
}
insertTindakanQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Kode_tindakan\"",
"\"Tindakan\"",
"\"Tindakan_tambahan\"",
"\"FK_pasien_operasi_tindakan_pasien_operasi_ID\"",
},
Values: valuesTindakan,
}
sql, args, err = r.queryBuilder.BuildBulkInsertQuery(TBL_TINDAKAN_OPERASI, insertTindakanQuery, returningCols...)
if err != nil {
log.Printf("error building query tindakan %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
log.Printf("success insert tindakan")
// INSERT data_pasien_operasi_data_pegawai
if len(req.DokterPelaksanaItems) != 0 {
var valuesDokterPelaksana [][]interface{}
for _, dokter := range req.DokterPelaksanaItems {
itemValues := []interface{}{
idAntrian,
dokter.Id,
}
valuesDokterPelaksana = append(valuesDokterPelaksana, itemValues)
}
insertDokterPelaksanaQuery := queryUtils.InsertBulkData{
Columns: []string{
"\"data_pasien_operasi_id\"",
"\"data_pegawai_id\"",
},
Values: valuesDokterPelaksana,
}
sql, args, err = r.queryBuilder.BuildBulkInsertQuery(TBL_DOKTER_OPERASI, insertDokterPelaksanaQuery, returningCols...)
if err != nil {
log.Printf("error building query dokter pelaksana %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
}
return nil
}
func (r antrianOperasiRepo) deleteAntrianChildTables(c context.Context, tx *sql.Tx, idAntrian string) error {
// parsedId := uuid.MustParse(idAntrian)
// delete telephone
filters := []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_telepon_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err := r.queryBuilder.BuildDeleteQuery(TBL_PASIEN_TELEPHONE, filters)
if err != nil {
log.Printf("Unable to create delete phone query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete phone : %v", err)
return err
}
// delete diagnosa
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_diagnosa_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_DIAGNOSA_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete diagnosa query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete diagnosa : %v", err)
return err
}
// delete tindakan
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_tindakan_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_TINDAKAN_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete tindakan query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete tindakan : %v", err)
return err
}
// delete dokter
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "data_pasien_operasi_id", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_DOKTER_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete dokter operasi query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete dokter operasi : %v", err)
return err
}
return nil
}
func (r antrianOperasiRepo) CreateAntrianOperasi(c context.Context, req CreatePasienOperasiRequest) (CreatePasienOperasiRequest, error) {
db, err := r.db.GetSQLXDB(DB_NAME)
if err != nil {
@@ -371,8 +141,7 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c context.Context, q An
return result, err
}
// result, err = r.oldListAntrian(c, dbconn, q)
result, err = r.fixingListAntrian(c, dbconn, q)
result, err = r.getNumberedListAntrian(c, dbconn, q)
if err != nil {
return result, nil
}
@@ -839,157 +608,237 @@ func (r antrianOperasiRepo) DeleteStatusAntrianOperasi(c context.Context, id str
// private functions
// this code will be deleted soon, change to fixingListAntrion() methods.
func (r antrianOperasiRepo) oldListAntrian(c context.Context, dbconn *sqlx.DB, q AntrianQuery) (ListPasienOperasiPaginate, error) {
var result ListPasienOperasiPaginate
query := queryUtils.DynamicQuery{
From: TBL_NAME,
Aliases: "dpo",
Fields: []queryUtils.SelectField{
{Expression: "dpo.id"},
{Expression: "dpo.Tanggal_daftar", Alias: "tanggal_daftar"},
{Expression: "dpo.No_KTP", Alias: "no_ktp"},
{Expression: "dpo.No_rekam_medis", Alias: "no_rekam_medis"},
{Expression: "dpo.Nama_pasien", Alias: "nama_pasien"},
{Expression: "dpo.Status_operasi", Alias: "status_operasi"},
{Expression: "dpo.Jenis_kelamin", Alias: "jenis_kelamin"},
{Expression: "ds.Spesialis", Alias: "spesialis"},
{Expression: "dss.Subspesialis", Alias: "subspesialis"},
{Expression: "dko.Kategori", Alias: "kategori"},
},
Sort: []queryUtils.SortField{
{Column: "dpo.Tanggal_daftar", Order: "ASC"},
},
func (r antrianOperasiRepo) insertAntrianChildTables(c context.Context, tx *sql.Tx, idAntrian string, req CreatePasienOperasiRequest) error {
returningCols := []string{
"id",
}
wfKategori := queryUtils.WindowFunction{
Function: "ROW_NUMBER",
Over: "\"dpo\".\"Kategori_operasi\"",
OrderBy: "\"dpo\".\"Tanggal_daftar\"",
Alias: "no_urut_kategori",
}
// INSERT data_telepon_pasien_operasi
if len(req.FormData.NoTelepon) != 0 {
var valuesInsertTelepon [][]interface{}
wfSpesialis := queryUtils.WindowFunction{
Function: "ROW_NUMBER",
Over: "\"dpo\".\"Spesialis\"",
OrderBy: "\"dpo\".\"Tanggal_daftar\", \"dpo\".\"date_created\", \"dpo\".\"date_updated\"",
Alias: "no_urut_spesialis",
}
wfSubSpesialis := queryUtils.WindowFunction{
Function: "ROW_NUMBER",
Over: "\"dpo\".\"Sub_spesialis\"",
OrderBy: "\"dpo\".\"Tanggal_daftar\", \"dpo\".\"date_created\", \"dpo\".\"date_updated\"",
Alias: "no_urut_sub_spesialis",
}
var selectFilter []queryUtils.DynamicFilter
typeIdColumn := ""
switch q.Type {
case "kategori":
typeIdColumn = "dko.id"
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
query.Sort = append(query.Sort, queryUtils.SortField{Column: "no_urut_kategori", Order: "ASC"})
case "spesialis":
typeIdColumn = "ds.id"
query.WindowFunctions = append(query.WindowFunctions, wfSpesialis, wfSubSpesialis)
query.Sort = append(query.Sort, queryUtils.SortField{Column: "no_urut_spesialis", Order: "ASC"})
case "sub-spesialis":
typeIdColumn = "dss.id"
query.WindowFunctions = append(query.WindowFunctions, wfSubSpesialis)
query.Sort = append(query.Sort, queryUtils.SortField{Column: "no_urut_sub_spesialis", Order: "ASC"})
default:
query.WindowFunctions = append(query.WindowFunctions, wfKategori, wfSpesialis, wfSubSpesialis)
}
if q.TypeID != 0 && q.Type != "all" {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: typeIdColumn, Operator: queryUtils.OpEqual, Value: q.TypeID})
}
query.Joins = []queryUtils.Join{
{
Type: "LEFT",
Table: "daftar_spesialis",
Alias: "ds",
OnConditions: queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{
Column: "ds.id", Operator: queryUtils.OpEqual, Value: "dpo.Spesialis",
},
},
},
},
{
Type: "LEFT",
Table: "daftar_subspesialis",
Alias: "dss",
OnConditions: queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{
Column: "dpo.Sub_spesialis", Operator: queryUtils.OpEqual, Value: "dss.id",
},
},
},
},
{
Type: "LEFT",
Table: "daftar_kategori_operasi",
Alias: "dko",
OnConditions: queryUtils.FilterGroup{
Filters: []queryUtils.DynamicFilter{
{
Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: "dko.id",
},
},
},
},
}
// filtering search results
if q.Search != "" {
searchFilters := []queryUtils.DynamicFilter{
{Column: "dpo.No_KTP", Operator: queryUtils.OpILike, Value: "%" + q.Search + "%"},
{Column: "dpo.No_rekam_medis", Operator: queryUtils.OpILike, Value: "%" + q.Search + "%"},
{Column: "dpo.Nama_pasien", Operator: queryUtils.OpILike, Value: "%" + q.Search + "%"},
for _, telp := range req.FormData.NoTelepon {
idTelepon := uuid.New().String()
itemValues := []interface{}{idTelepon, telp, idAntrian}
valuesInsertTelepon = append(valuesInsertTelepon, itemValues)
}
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: searchFilters, LogicOp: "OR"})
insertTeleponQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Nomor_telepon\"",
"\"FK_pasien_operasi_telepon_pasien_operasi_ID\"",
},
Values: valuesInsertTelepon,
}
sql, args, err := r.queryBuilder.BuildBulkInsertQuery(TBL_PASIEN_TELEPHONE, insertTeleponQuery, returningCols...)
if err != nil {
log.Printf("error building query telepon %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
log.Printf("success insert telepon")
}
if q.Status != "" {
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "dpo.Status_operasi", Operator: queryUtils.OpEqual, Value: q.Status})
// INSERT data_diagnosa_pasien_operasi
var valuesDiagnosa [][]interface{}
for _, diagnosa := range req.DiagnosisItem {
idDiagnosa := uuid.New().String()
itemValues := []interface{}{
idDiagnosa,
diagnosa.KodeDiagnosa,
diagnosa.Diagnosa,
diagnosa.JenisDiagnosa,
idAntrian,
}
valuesDiagnosa = append(valuesDiagnosa, itemValues)
}
// wiring all select filter
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: selectFilter, LogicOp: "AND"})
insertDiagnosaQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Kode_diagnosa\"",
"\"Diagnosa\"",
"\"Jenis_diagnosa\"",
"\"FK_pasien_operasi_diagnosa_pasien_operasi_ID\"",
},
Values: valuesDiagnosa,
}
// query count
countData, err := r.queryBuilder.ExecuteCount(c, dbconn, query)
sql, args, err := r.queryBuilder.BuildBulkInsertQuery(TBL_DIAGNOSA_OPERASI, insertDiagnosaQuery, returningCols...)
if err != nil {
log.Printf("Unable to execute query count : %s ", err)
return result, err
log.Printf("error building query diagnosa %s", err)
return err
}
result.Paging.Limit = q.Limit
result.Paging.Offset = q.Offset
result.Paging.Total = int(countData)
result.Paging.CalculatePagingInfo()
// query data
queryData := query
queryData.Limit = q.Limit
queryData.Offset = q.Offset
err = r.queryBuilder.ExecuteQuery(
c, dbconn, queryData, &result.Data)
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to execute query data : %s", err)
return result, err
log.Println(err)
return err
}
log.Printf("success insert diagnosa")
// INSERT data_tindakan_pasien_operasi
var valuesTindakan [][]interface{}
for _, tindakan := range req.TindakanItems {
idTindakan := uuid.New().String()
itemValues := []interface{}{
idTindakan,
tindakan.KodeTindakan,
tindakan.Tindakan,
tindakan.TindakanTambahan,
idAntrian,
}
valuesTindakan = append(valuesTindakan, itemValues)
}
return result, nil
insertTindakanQuery := queryUtils.InsertBulkData{
Columns: []string{
"id",
"\"Kode_tindakan\"",
"\"Tindakan\"",
"\"Tindakan_tambahan\"",
"\"FK_pasien_operasi_tindakan_pasien_operasi_ID\"",
},
Values: valuesTindakan,
}
sql, args, err = r.queryBuilder.BuildBulkInsertQuery(TBL_TINDAKAN_OPERASI, insertTindakanQuery, returningCols...)
if err != nil {
log.Printf("error building query tindakan %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
log.Printf("success insert tindakan")
// INSERT data_pasien_operasi_data_pegawai
if len(req.DokterPelaksanaItems) != 0 {
var valuesDokterPelaksana [][]interface{}
for _, dokter := range req.DokterPelaksanaItems {
itemValues := []interface{}{
idAntrian,
dokter.Id,
}
valuesDokterPelaksana = append(valuesDokterPelaksana, itemValues)
}
insertDokterPelaksanaQuery := queryUtils.InsertBulkData{
Columns: []string{
"\"data_pasien_operasi_id\"",
"\"data_pegawai_id\"",
},
Values: valuesDokterPelaksana,
}
sql, args, err = r.queryBuilder.BuildBulkInsertQuery(TBL_DOKTER_OPERASI, insertDokterPelaksanaQuery, returningCols...)
if err != nil {
log.Printf("error building query dokter pelaksana %s", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Println(err)
return err
}
}
return nil
}
func (r antrianOperasiRepo) fixingListAntrian(c context.Context, dbconn *sqlx.DB, q AntrianQuery) (ListPasienOperasiPaginate, error) {
func (r antrianOperasiRepo) deleteAntrianChildTables(c context.Context, tx *sql.Tx, idAntrian string) error {
// parsedId := uuid.MustParse(idAntrian)
// delete telephone
filters := []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_telepon_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err := r.queryBuilder.BuildDeleteQuery(TBL_PASIEN_TELEPHONE, filters)
if err != nil {
log.Printf("Unable to create delete phone query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete phone : %v", err)
return err
}
// delete diagnosa
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_diagnosa_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_DIAGNOSA_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete diagnosa query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete diagnosa : %v", err)
return err
}
// delete tindakan
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "FK_pasien_operasi_tindakan_pasien_operasi_ID", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_TINDAKAN_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete tindakan query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete tindakan : %v", err)
return err
}
// delete dokter
filters = []queryUtils.FilterGroup{
{
Filters: []queryUtils.DynamicFilter{
{Column: "data_pasien_operasi_id", Operator: queryUtils.OpEqual, Value: idAntrian},
},
},
}
sql, args, err = r.queryBuilder.BuildDeleteQuery(TBL_DOKTER_OPERASI, filters)
if err != nil {
log.Printf("Unable to create delete dokter operasi query : %v", err)
return err
}
_, err = tx.ExecContext(c, sql, args...)
if err != nil {
log.Printf("Unable to executing delete dokter operasi : %v", err)
return err
}
return nil
}
func (r antrianOperasiRepo) getNumberedListAntrian(c context.Context, dbconn *sqlx.DB, q AntrianQuery) (ListPasienOperasiPaginate, error) {
var result ListPasienOperasiPaginate
numberedRowsName := "numbered"
@@ -1070,9 +919,13 @@ func (r antrianOperasiRepo) fixingListAntrian(c context.Context, dbconn *sqlx.DB
{Expression: "kategori"},
},
From: numberedRowsName,
Sort: []queryUtils.SortField{
{Column: "tanggal_daftar", Order: "ASC"},
},
}
// sort condition
if q.SortBy != "" && q.SortOrder != "" {
query.Sort = append(query.Sort, queryUtils.SortField{Column: q.SortBy, Order: q.SortOrder})
} else {
query.Sort = append(query.Sort, queryUtils.SortField{Column: "tanggal_daftar", Order: "ASC"})
}
// windows functions
+9 -7
View File
@@ -62,11 +62,13 @@ type CreatePasienOperasiRequest struct {
}
type AntrianQuery struct {
Id string `form:"id"`
Search string `form:"search"`
Type string `form:"type,default=all" binding:"omitempty,oneof=all kategori spesialis sub-spesialis"`
TypeID int `form:"type_id,default=0"`
Status string `form:"status" binding:"omitempty,oneof=1 2 3 4"`
Limit int `form:"limit,default=10"`
Offset int `form:"offset,default=0"`
Id string `form:"id"`
Search string `form:"search"`
Type string `form:"type,default=all" binding:"omitempty,oneof=all kategori spesialis sub-spesialis"`
TypeID int `form:"type_id,default=0"`
Status string `form:"status" binding:"omitempty,oneof=1 2 3 4"`
Limit int `form:"limit,default=10"`
Offset int `form:"offset,default=0"`
SortBy string `form:"sort_by" binding:"omitempty,oneof=tanggal_daftar no_urut_kategori no_urut_spesialis"`
SortOrder string `form:"sort_order" binding:"omitempty,oneof=ASC DESC"`
}