update status -> updating nomor antrian

This commit is contained in:
renaldybrada
2026-03-03 13:18:34 +07:00
parent 83e1776f86
commit fbb4f17a10
2 changed files with 52 additions and 26 deletions
+51 -26
View File
@@ -403,22 +403,25 @@ func (r antrianOperasiRepo) SearchableListAntrianOperasi(c context.Context, q An
},
}
var resultDiagnosa []DiagnosaOperasiModel
err = r.queryBuilder.ExecuteQuery(c, dbconn, queryDiagnosa, &resultDiagnosa)
if err != nil {
log.Printf("Unable to execute query diagnosa : %s", err)
return result, err
}
// if query id specified, no need to attach support data
if q.Id == "" {
var resultDiagnosa []DiagnosaOperasiModel
err = r.queryBuilder.ExecuteQuery(c, dbconn, queryDiagnosa, &resultDiagnosa)
if err != nil {
log.Printf("Unable to execute query diagnosa : %s", err)
return result, err
}
// attach support data to parent
shared.MapChildToParent(
result.Data, resultDiagnosa,
func(o *PasienOperasi) string { return o.ID },
func(d DiagnosaOperasiModel) string { return d.AntrianId },
func(o *PasienOperasi, d DiagnosaOperasiModel) {
o.Diagnosa = append(o.Diagnosa, d.Diagnosa.String)
},
)
// attach support data to parent
shared.MapChildToParent(
result.Data, resultDiagnosa,
func(o *PasienOperasi) string { return o.ID },
func(d DiagnosaOperasiModel) string { return d.AntrianId },
func(o *PasienOperasi, d DiagnosaOperasiModel) {
o.Diagnosa = append(o.Diagnosa, d.Diagnosa.String)
},
)
}
return result, nil
}
@@ -723,6 +726,14 @@ func (r antrianOperasiRepo) UpdateAntrianOperasi(c context.Context, id string, r
}
func (r antrianOperasiRepo) UpdateStatusAntrianOperasi(c context.Context, id string, req StatusPasienRequest) (StatusPasienRequest, error) {
// get nomor antrian by antrian id
q := AntrianQuery{Id: id}
resultAntrian, err := r.SearchableListAntrianOperasi(c, q)
if err != nil {
return req, err
}
selectedAntrian := resultAntrian.Data[0]
// Update main table
updateMainQuery := queryUtils.UpdateData{
Columns: []string{
@@ -734,8 +745,11 @@ func (r antrianOperasiRepo) UpdateStatusAntrianOperasi(c context.Context, id str
}
if req.StatusOperasi == "2" {
updateMainQuery.Columns = append(updateMainQuery.Columns, "\"Tanggal_selesai_operasi\"")
updateMainQuery.Values = append(updateMainQuery.Values, req.TglSelesai)
addedColumns := []string{"\"Tanggal_selesai_operasi\"", "\"Nomor\"", "\"Nomor_spesialis\"", "\"Nomor_sub_spesialis\""}
addedValues := []interface{}{req.TglSelesai, selectedAntrian.NoUrutKategori, selectedAntrian.NoUrutSpesialis, selectedAntrian.NoUrutSubSpesialis}
updateMainQuery.Columns = append(updateMainQuery.Columns, addedColumns...)
updateMainQuery.Values = append(updateMainQuery.Values, addedValues...)
}
filters := []queryUtils.FilterGroup{
@@ -1153,25 +1167,36 @@ func (r antrianOperasiRepo) fixingListAntrian(c context.Context, dbconn *sqlx.DB
selectFilterCount = append(selectFilterCount, queryUtils.DynamicFilter{Column: "dpo.Status_operasi", Operator: queryUtils.OpEqual, Value: q.Status})
}
// search by id antrian. removing all filters
if q.Id != "" {
selectFilter = []queryUtils.DynamicFilter{} // reset select filter
selectFilterCount = []queryUtils.DynamicFilter{} // reset select filter count
selectFilter = append(selectFilter, queryUtils.DynamicFilter{Column: "id", Operator: queryUtils.OpEqual, Value: q.Id})
}
// wiring all select filter
query.Filters = append(query.Filters, queryUtils.FilterGroup{Filters: selectFilter, LogicOp: "AND"})
queryCount.Filters = append(queryCount.Filters, queryUtils.FilterGroup{Filters: selectFilterCount, LogicOp: "AND"})
countData, err := r.queryBuilder.ExecuteCount(c, dbconn, queryCount)
if err != nil {
log.Printf("Unable to execute query count : %s ", err)
return result, err
// skipping count data if query id specified
if q.Id == "" {
countData, err := r.queryBuilder.ExecuteCount(c, dbconn, queryCount)
if err != nil {
log.Printf("Unable to execute query count : %s ", err)
return result, err
}
result.Paging.Limit = q.Limit
result.Paging.Offset = q.Offset
result.Paging.Total = int(countData)
result.Paging.CalculatePagingInfo()
}
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(
err := r.queryBuilder.ExecuteQuery(
c, dbconn, queryData, &result.Data)
if err != nil {
log.Printf("Unable to execute query data : %s", err)
@@ -62,6 +62,7 @@ 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"`