Files
2025-12-01 11:32:33 +07:00

135 lines
4.6 KiB
Go

package satu_data
import (
"errors"
"log"
"template_blueprint/pkg/models/antrean"
)
func (s *DatabaseService) GetKios(ID int) ([]*antrean.Antrean, error) {
var result []*antrean.Antrean
query := `SELECT k."id", k."name" ,k.active ,k.icon , k.url , k.fk_ref_healthcare_type_id , r."name" as refnamehealth, k.fk_ref_service_type_id ,
rpt."name" as refnamepayment , k.fk_sd_location_id ,k.ds_sd_location
FROM master.ms_kiosk k
JOIN master.ms_kiosk_healthcare_service h ON k.fk_ref_healthcare_type_id = h.id
JOIN reference.ref_healthcare_type r ON h.fk_ms_healthcare_service_id = r.id
left join master.ms_kiosk_payment_type p on k.fk_ref_service_type_id = p.id
left join reference.ref_payment_type rpt on p.fk_ref_payment_type_id = rpt.id
where k.id = ?`
errQuery := s.DB.Debug().Raw(query, ID).Scan(&result).Error
if errQuery != nil {
log.Println("errQuery:", errQuery)
return nil, errQuery
}
return result, nil
}
func (s *DatabaseService) InsertKiosk(data *antrean.KioskData) error {
log.Println("InsertKiosk data:", data)
queryKiosk := `INSERT INTO master.ms_kiosk ("name", active, icon, url, fk_ref_healthcare_type_id,
fk_ref_service_type_id, fk_sd_location_id, ds_sd_location)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
RETURNING id`
var newKioskID int64
err := s.DB.Raw(queryKiosk, data.Name, data.Active, data.Icon, data.URL,
data.FKRefHealthcareTypeID, data.FKRefServiceTypeID,
data.FKSDLocationID, data.DSSDLocation).
Scan(&newKioskID).Error
if err != nil {
log.Println("Error insert ms_kiosk:", err)
return errors.New("Gagal menyimpan data kiosk")
}
log.Println("New kiosk ID:", newKioskID)
if data.HealthcareServiceData != nil {
queryHealthcare := `INSERT INTO master.ms_kiosk_healthcare_service
(fk_ms_kiosk_id, fk_ms_healthcare_service_id)
VALUES (?, ?)`
errHC := s.DB.Exec(queryHealthcare, newKioskID, data.HealthcareServiceData.FKMSHealthcareServiceID).Error
if errHC != nil {
log.Println("Error insert healthcare service:", errHC)
return errors.New("Gagal menyimpan data healthcare service")
}
}
if data.PaymentTypeData != nil {
queryPayment := `INSERT INTO master.ms_kiosk_payment_type
(fk_ms_kiosk_id, fk_ref_payment_type_id)
VALUES (?, ?)`
errPT := s.DB.Exec(queryPayment, newKioskID, data.PaymentTypeData.FKRefPaymentTypeID).Error
if errPT != nil {
log.Println("Error insert payment type:", errPT)
return errors.New("Gagal menyimpan data payment type")
}
}
return nil
}
func (s *DatabaseService) UpdateKiosk(id string, data *antrean.KioskData) error {
log.Println("UpdateKiosk ID:", id, "data:", data)
queryKiosk := `UPDATE master.ms_kiosk
SET name = ?, active = ?, icon = ?, url = ?,
fk_ref_healthcare_type_id = ?, fk_ref_service_type_id = ?,
fk_sd_location_id = ?, ds_sd_location = ?
WHERE id = ?`
err := s.DB.Exec(queryKiosk, data.Name, data.Active, data.Icon, data.URL,
data.FKRefHealthcareTypeID, data.FKRefServiceTypeID,
data.FKSDLocationID, data.DSSDLocation, id).Error
if err != nil {
log.Println("Error update ms_kiosk:", err)
return errors.New("Gagal update data kiosk")
}
if data.HealthcareServiceData != nil {
queryHealthcare := `UPDATE master.ms_kiosk_healthcare_service
SET fk_ms_healthcare_service_id = ?
WHERE fk_ms_kiosk_id = ?`
errHC := s.DB.Exec(queryHealthcare, data.HealthcareServiceData.FKMSHealthcareServiceID, id).Error
if errHC != nil {
log.Println("Error update healthcare service:", errHC)
return errors.New("Gagal update data healthcare service")
}
}
if data.PaymentTypeData != nil {
queryPayment := `UPDATE master.ms_kiosk_payment_type
SET fk_ref_payment_type_id = ?
WHERE fk_ms_kiosk_id = ?`
errPT := s.DB.Exec(queryPayment, data.PaymentTypeData.FKRefPaymentTypeID, id).Error
if errPT != nil {
log.Println("Error update payment type:", errPT)
return errors.New("Gagal update data payment type")
}
}
return nil
}
func (s *DatabaseService) DeleteKiosk(id int64) error {
err := s.DB.Exec(`DELETE FROM master.ms_kiosk_healthcare_service WHERE fk_ms_kiosk_id = ?`, id).Error
if err != nil {
return err
}
err = s.DB.Exec(`DELETE FROM master.ms_kiosk_payment_type WHERE fk_ms_kiosk_id = ?`, id).Error
if err != nil {
return err
}
err = s.DB.Exec(`DELETE FROM master.ms_kiosk WHERE id = ?`, id).Error
if err != nil {
return err
}
return nil
}