90 lines
2.6 KiB
Go
90 lines
2.6 KiB
Go
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.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.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.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
|
|
}
|