package dokter import ( "bridging-rssa/config" "bridging-rssa/models/dokter" "errors" "log" "strconv" "strings" "gorm.io/gorm" ) func GetDokter() ([]dokter.DaftarDokterRes, error) { var listDokter []dokter.DaftarDokter var res []dokter.DaftarDokterRes result := config.SatuDataDB.Debug().Raw(`select "id", "HFIS_code" from "data_pegawai" where "HFIS_code" is not null`).Scan(&listDokter) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { log.Fatalf("Error get data : %v", result.Error) return nil, result.Error } log.Fatalf("Data kosong: %v", result.Error) return nil, nil } log.Println("Data Pegawai: ", listDokter) for _, v := range listDokter { v.HfisCode = strings.TrimSpace(v.HfisCode) hfisCode, err := strconv.Atoi(v.HfisCode) if err != nil { log.Fatalf("Failed Convert ID to Int %v", err) return nil, err } res = append(res, dokter.DaftarDokterRes{ ID: v.ID, HfisCode: hfisCode, }) } log.Println("Data Pegawai: ", res) return res, nil } func GetNamaLengkapDokter(idDokter []string) ([]dokter.NamaLengkap, error) { var namaDokter []dokter.NamaLengkap result := config.SatuDataDB.Debug().Raw(`select dp.id, array( select dgd. "Gelar_depan" from data_pegawai_daftar_gelar_depan dpdgd left join daftar_gelar_depan dgd on dpdgd.daftar_gelar_depan_id = dgd.id where dpdgd.data_pegawai_id = dp.id ) AS gelardepan , dk."Nama_lengkap" , array( select dgb. "Gelar_belakang" from data_pegawai_daftar_gelar_belakang dpdgb left join daftar_gelar_belakang dgb on dpdgb.daftar_gelar_belakang_id = dgb.id where dpdgb.data_pegawai_id = dp.id ) AS gelarbelakang, dp."HFIS_code", dp."Code_dpjp" as "DPJP_code" from "data_pegawai" dp left join data_ktp dk on dp."KTP" = dk.id WHERE dp.id in ?`, idDokter).Find(&namaDokter) if result.Error != nil { if !errors.Is(result.Error, gorm.ErrRecordNotFound) { log.Printf("Error get data : %v", result.Error) return nil, result.Error } log.Printf("Data kosong: %v", result.Error) return namaDokter, nil } return namaDokter, nil } func GetHFISCode(dpjp string) (*dokter.DaftarDokter, error) { var dataDokter *dokter.DaftarDokter err := config.SatuDataDB.Debug().Raw(`select dp."id", dp."HFIS_code" from data_pegawai dp where dp."Code_dpjp" = ?`, dpjp).First(&dataDokter).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { errMsg := errors.New("Data tidak ditemukan") log.Println("error :", errMsg) return nil, errMsg } log.Println("error :", err) return nil, err } log.Println("Daftar Dokter :", dataDokter) return dataDokter, nil }