antrean tes

This commit is contained in:
2025-12-01 11:32:33 +07:00
parent 266d937c51
commit bd02bb83a7
7 changed files with 302 additions and 11 deletions

7
.env
View File

@@ -24,3 +24,10 @@ MONGODB_DEV_USER=admin
MONGODB_DEV_PASS=stim*rs54
MONGODB_DEV_MASTER=master
MONGODB_DEV_LOCAL=local
POSTGRES_ANTREAN_USERNAME=stim_read
POSTGRES_ANTREAN_PASSWORD=itikom123
POSTGRES_ANTREAN_HOST=10.10.123.198
POSTGRES_ANTREAN_DATABASE=db_antrean
POSTGRES_ANTREAN_PORT=5100
POSTGRES_ANTREAN_SSLMODE=disable

View File

@@ -33,3 +33,10 @@ services:
- MONGODB_DEV_PASS=stim*rs54
- MONGODB_DEV_MASTER=master
- MONGODB_DEV_LOCAL=local
# DATABASE ANTREAN
- POSTGRES_ANTREAN_USERNAME=stim_read
- POSTGRES_ANTREAN_PASSWORD=itikom123
- POSTGRES_ANTREAN_HOST=10.10.123.198
- POSTGRES_ANTREAN_DATABASE=db_antrean
- POSTGRES_ANTREAN_PORT=5100
- POSTGRES_ANTREAN_SSLMODE=disable

View File

@@ -39,11 +39,17 @@ var (
dbNameSimrs = os.Getenv("SIMRS_STAG_NAME")
portSimrs = os.Getenv("SIMRS_STAG_PORT")
hostSatudata = os.Getenv("SATUDATA_HOST")
userNameSatudata = os.Getenv("SATUDATA_USER")
passwordSatudata = os.Getenv("SATUDATA_PASS")
dbNameSatudata = os.Getenv("SATUDATA_NAME")
portSatudata = os.Getenv("SATUDATA_PORT")
//hostSatudata = os.Getenv("SATUDATA_HOST")
//userNameSatudata = os.Getenv("SATUDATA_USER")
//passwordSatudata = os.Getenv("SATUDATA_PASS")
//dbNameSatudata = os.Getenv("SATUDATA_NAME")
//portSatudata = os.Getenv("SATUDATA_PORT")
hostAntrean = os.Getenv("POSTGRES_ANTREAN_HOST")
userNameAntrean = os.Getenv("POSTGRES_ANTREAN_USERNAME")
passwordAntrean = os.Getenv("POSTGRES_ANTREAN_PASSWORD")
dbNameAntrean = os.Getenv("POSTGRES_ANTREAN_DATABASE")
portAntrean = os.Getenv("POSTGRES_ANTREAN_PORT")
hostMongo = os.Getenv("MONGODB_DEV_HOST")
portMongo = os.Getenv("MONGODB_DEV_PORT")
@@ -86,9 +92,9 @@ func New(database ...string) Service {
} else {
log.Println("Successfully connected to the database")
}
satudata := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostSatudata, userNameSatudata, passwordSatudata, dbNameSatudata, portSatudata)
Antrean := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta", hostAntrean, userNameAntrean, passwordAntrean, dbNameAntrean, portAntrean)
SatudataDB, err := gorm.Open(postgres.Open(satudata), &gorm.Config{})
AntreanDB, err := gorm.Open(postgres.Open(Antrean), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to SIM database: ", err)
} else {
@@ -127,7 +133,7 @@ func New(database ...string) Service {
log.Println("Successfully connected to MongoDB!")
dbInstance = &service{
simrsDB: SimrsDB,
satuDataDB: SatudataDB,
satuDataDB: AntreanDB,
mongoDB: client.Database(mongoDBName),
}
return dbInstance
@@ -216,7 +222,7 @@ func (s *service) Close() error {
func (s *service) GetDB(database string) *gorm.DB {
if strings.ToLower(database) == "simrs" {
return s.simrsDB
} else if strings.ToLower(database) == "satudata" {
} else if strings.ToLower(database) == "antrean" {
return s.satuDataDB
}
log.Println("Database tidak ditemukan")

View File

@@ -7,6 +7,7 @@ import (
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
AntreanHandler "template_blueprint/pkg/handlers/antrean"
patientHandler "template_blueprint/pkg/handlers/patient"
datapoliklinikHandler "template_blueprint/pkg/handlers/poliklinik"
dataRetribusi "template_blueprint/pkg/handlers/retribusi"
@@ -53,6 +54,13 @@ func (s *Server) RegisterRoutes() http.Handler {
{
Poliklinik.GET("/getdata/statuspelayanan/:statuspelayanan", datapoliklinikHandler.GetDataPoliklinik)
}
Antrean := v1.Group("/kios")
{
Antrean.POST("/detail", AntreanHandler.GetKios)
Antrean.POST("/insert", AntreanHandler.InsertKios)
Antrean.PUT("/update/:id", AntreanHandler.UpdateKios)
Antrean.DELETE("/delete/:id", AntreanHandler.DeleteKios)
}
retribusi := v1.Group("/retribusi")
{
retribusi.GET("/getData/Limit/:limit/Offset/:offset", dataRetribusi.GetDataRetribusi)

View File

@@ -0,0 +1,134 @@
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
}

View File

@@ -0,0 +1,89 @@
package antrean
import (
"github.com/gin-gonic/gin"
"net/http"
"strconv"
"template_blueprint/internal/database"
connDatabase "template_blueprint/pkg/database/satu_data"
"template_blueprint/pkg/models/antrean"
)
func GetKios(c *gin.Context) {
db := database.New().GetDB("antrean")
satudata := connDatabase.NewDatabaseService(db)
var req *antrean.Request
err := c.Bind(&req)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
DataKios, errInsertData := satudata.GetKios(req.ID)
if errInsertData != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": errInsertData.Error()})
return
}
c.JSON(http.StatusCreated, gin.H{
"message": "Data Ditemukan",
"data": DataKios,
})
}
func InsertKios(c *gin.Context) {
db := database.New().GetDB("antrean")
satudata := connDatabase.NewDatabaseService(db)
var req *antrean.KioskData
err := c.Bind(&req)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
errInsertData := satudata.InsertKiosk(req)
if errInsertData != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": errInsertData.Error()})
return
}
c.JSON(http.StatusCreated, gin.H{"message": "Data Berhasil disimpan"})
}
func UpdateKios(c *gin.Context) {
db := database.New().GetDB("antrean")
satudata := connDatabase.NewDatabaseService(db)
ID := c.Param("id")
var req *antrean.KioskData
err := c.Bind(&req)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
err = satudata.UpdateKiosk(ID, req)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Data kios berhasil diupdate"})
}
func DeleteKios(c *gin.Context) {
db := database.New().GetDB("antrean")
satudata := connDatabase.NewDatabaseService(db)
idParam := c.Param("id")
id, err := strconv.ParseInt(idParam, 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid ID"})
return
}
if err := satudata.DeleteKiosk(id); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Kios Berhasil di delete"})
}

View File

@@ -0,0 +1,40 @@
package antrean
type Antrean struct {
ID int `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name"`
Icon string `gorm:"column:icon" json:"icon"`
URL string `gorm:"column:url" json:"url"`
Active bool `gorm:"column:active" json:"active"`
FKrefHealthcare int `gorm:"column:fk_ref_healthcare_type_id" json:"healthcare_type_id"`
DisplayHealth string `gorm:"column:refnamehealth" json:"healthcare_name"`
FKrefserviceType int `gorm:"column:fk_ref_service_type_id" json:"service_type_id"`
DisplayPayment string `gorm:"column:refnamepayment" json:"payment_name"`
FKLocation string `gorm:"column:fk_sd_location_id" json:"location_id"`
DisplayLocation string `gorm:"column:ds_sd_location" json:"display_location"`
}
type Request struct {
ID int `json:"id"`
}
type KioskData struct {
Name string `json:"name"`
Active bool `json:"active"`
Icon string `json:"icon"`
URL string `json:"url"`
FKRefHealthcareTypeID int64 `json:"fk_ref_healthcare_type_id"`
FKRefServiceTypeID int64 `json:"fk_ref_service_type_id"`
FKSDLocationID string `json:"fk_sd_location_id"`
DSSDLocation string `json:"ds_sd_location"`
HealthcareServiceData *HealthcareServiceData `json:"healthcare_service_data,omitempty"`
PaymentTypeData *PaymentTypeData `json:"payment_type_data,omitempty"`
}
type HealthcareServiceData struct {
FKMSHealthcareServiceID int64 `json:"fk_ms_healthcare_service_id"`
}
type PaymentTypeData struct {
FKRefPaymentTypeID int64 `json:"fk_ref_payment_type_id"`
}