fixing sort by name spesialis

This commit is contained in:
renaldybrada
2026-02-18 15:30:08 +07:00
parent e290664ca3
commit e63f78dc2f
+19 -9
View File
@@ -1,6 +1,9 @@
package dashboard
import "time"
import (
"sort"
"time"
)
type AntrianPerKategori struct {
IdKategori int `db:"Kategori_operasi" json:"id_kategori"`
@@ -84,13 +87,13 @@ type TableAntreanPerSubSpesialis struct {
type ListModelAntrianPerSpesialis []AntrianPerSpesialisModel
func (list ListModelAntrianPerSpesialis) ParseToResponse() []AntrianPerSpesialisResponse {
resultMap := make(map[int]*AntrianPerSpesialisResponse)
resultMap := make(map[string]*AntrianPerSpesialisResponse)
for _, item := range list {
// check if spesialis already on resultMap
// if not exist, create antrian spesialis response
if _, ok := resultMap[item.IdSpesialis]; !ok {
resultMap[item.IdSpesialis] = &AntrianPerSpesialisResponse{
if _, ok := resultMap[item.Spesialis]; !ok {
resultMap[item.Spesialis] = &AntrianPerSpesialisResponse{
IdSpesialis: item.IdSpesialis,
Spesialis: item.Spesialis,
JmlAntrian: 0,
@@ -99,8 +102,8 @@ func (list ListModelAntrianPerSpesialis) ParseToResponse() []AntrianPerSpesialis
}
// add subspesialis item
resultMap[item.IdSpesialis].SubSpesialis = append(
resultMap[item.IdSpesialis].SubSpesialis,
resultMap[item.Spesialis].SubSpesialis = append(
resultMap[item.Spesialis].SubSpesialis,
AntrianPerSubSpesialisResponse{
IdSubSpesialis: item.IdSubSpesialis,
SubSpesialis: item.SubSpesialis,
@@ -109,13 +112,20 @@ func (list ListModelAntrianPerSpesialis) ParseToResponse() []AntrianPerSpesialis
)
// accumulate jmlAntrian subspesialis -> total antrian spesialis
resultMap[item.IdSpesialis].JmlAntrian += item.JmlAntrian
resultMap[item.Spesialis].JmlAntrian += item.JmlAntrian
}
// sort by spesialis name ascending
keys := make([]string, 0, len(resultMap))
for k := range resultMap {
keys = append(keys, resultMap[k].Spesialis)
}
sort.Strings(keys)
// convert map -> slice
result := make([]AntrianPerSpesialisResponse, 0, len(resultMap))
for _, v := range resultMap {
result = append(result, *v)
for _, v := range keys {
result = append(result, *resultMap[v])
}
return result