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 }