135 lines
4.6 KiB
Go
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
|
|
}
|