From e63f78dc2f3b2f193dd823ef537cfcd863e79849 Mon Sep 17 00:00:00 2001 From: renaldybrada Date: Wed, 18 Feb 2026 15:30:08 +0700 Subject: [PATCH] fixing sort by name spesialis --- internal/domain/dashboard/model.go | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/internal/domain/dashboard/model.go b/internal/domain/dashboard/model.go index 0a83700..b042114 100644 --- a/internal/domain/dashboard/model.go +++ b/internal/domain/dashboard/model.go @@ -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