antrean tes
This commit is contained in:
9
.env
9
.env
@@ -23,4 +23,11 @@ MONGODB_DEV_PORT=27017
|
|||||||
MONGODB_DEV_USER=admin
|
MONGODB_DEV_USER=admin
|
||||||
MONGODB_DEV_PASS=stim*rs54
|
MONGODB_DEV_PASS=stim*rs54
|
||||||
MONGODB_DEV_MASTER=master
|
MONGODB_DEV_MASTER=master
|
||||||
MONGODB_DEV_LOCAL=local
|
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
|
||||||
@@ -32,4 +32,11 @@ services:
|
|||||||
- MONGODB_DEV_USER=admin
|
- MONGODB_DEV_USER=admin
|
||||||
- MONGODB_DEV_PASS=stim*rs54
|
- MONGODB_DEV_PASS=stim*rs54
|
||||||
- MONGODB_DEV_MASTER=master
|
- MONGODB_DEV_MASTER=master
|
||||||
- MONGODB_DEV_LOCAL=local
|
- 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
|
||||||
@@ -39,11 +39,17 @@ var (
|
|||||||
dbNameSimrs = os.Getenv("SIMRS_STAG_NAME")
|
dbNameSimrs = os.Getenv("SIMRS_STAG_NAME")
|
||||||
portSimrs = os.Getenv("SIMRS_STAG_PORT")
|
portSimrs = os.Getenv("SIMRS_STAG_PORT")
|
||||||
|
|
||||||
hostSatudata = os.Getenv("SATUDATA_HOST")
|
//hostSatudata = os.Getenv("SATUDATA_HOST")
|
||||||
userNameSatudata = os.Getenv("SATUDATA_USER")
|
//userNameSatudata = os.Getenv("SATUDATA_USER")
|
||||||
passwordSatudata = os.Getenv("SATUDATA_PASS")
|
//passwordSatudata = os.Getenv("SATUDATA_PASS")
|
||||||
dbNameSatudata = os.Getenv("SATUDATA_NAME")
|
//dbNameSatudata = os.Getenv("SATUDATA_NAME")
|
||||||
portSatudata = os.Getenv("SATUDATA_PORT")
|
//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")
|
hostMongo = os.Getenv("MONGODB_DEV_HOST")
|
||||||
portMongo = os.Getenv("MONGODB_DEV_PORT")
|
portMongo = os.Getenv("MONGODB_DEV_PORT")
|
||||||
@@ -86,9 +92,9 @@ func New(database ...string) Service {
|
|||||||
} else {
|
} else {
|
||||||
log.Println("Successfully connected to the database")
|
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 {
|
if err != nil {
|
||||||
log.Fatal("Failed to connect to SIM database: ", err)
|
log.Fatal("Failed to connect to SIM database: ", err)
|
||||||
} else {
|
} else {
|
||||||
@@ -127,7 +133,7 @@ func New(database ...string) Service {
|
|||||||
log.Println("Successfully connected to MongoDB!")
|
log.Println("Successfully connected to MongoDB!")
|
||||||
dbInstance = &service{
|
dbInstance = &service{
|
||||||
simrsDB: SimrsDB,
|
simrsDB: SimrsDB,
|
||||||
satuDataDB: SatudataDB,
|
satuDataDB: AntreanDB,
|
||||||
mongoDB: client.Database(mongoDBName),
|
mongoDB: client.Database(mongoDBName),
|
||||||
}
|
}
|
||||||
return dbInstance
|
return dbInstance
|
||||||
@@ -216,7 +222,7 @@ func (s *service) Close() error {
|
|||||||
func (s *service) GetDB(database string) *gorm.DB {
|
func (s *service) GetDB(database string) *gorm.DB {
|
||||||
if strings.ToLower(database) == "simrs" {
|
if strings.ToLower(database) == "simrs" {
|
||||||
return s.simrsDB
|
return s.simrsDB
|
||||||
} else if strings.ToLower(database) == "satudata" {
|
} else if strings.ToLower(database) == "antrean" {
|
||||||
return s.satuDataDB
|
return s.satuDataDB
|
||||||
}
|
}
|
||||||
log.Println("Database tidak ditemukan")
|
log.Println("Database tidak ditemukan")
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
swaggerFiles "github.com/swaggo/files"
|
swaggerFiles "github.com/swaggo/files"
|
||||||
ginSwagger "github.com/swaggo/gin-swagger"
|
ginSwagger "github.com/swaggo/gin-swagger"
|
||||||
|
AntreanHandler "template_blueprint/pkg/handlers/antrean"
|
||||||
patientHandler "template_blueprint/pkg/handlers/patient"
|
patientHandler "template_blueprint/pkg/handlers/patient"
|
||||||
datapoliklinikHandler "template_blueprint/pkg/handlers/poliklinik"
|
datapoliklinikHandler "template_blueprint/pkg/handlers/poliklinik"
|
||||||
dataRetribusi "template_blueprint/pkg/handlers/retribusi"
|
dataRetribusi "template_blueprint/pkg/handlers/retribusi"
|
||||||
@@ -53,6 +54,13 @@ func (s *Server) RegisterRoutes() http.Handler {
|
|||||||
{
|
{
|
||||||
Poliklinik.GET("/getdata/statuspelayanan/:statuspelayanan", datapoliklinikHandler.GetDataPoliklinik)
|
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 := v1.Group("/retribusi")
|
||||||
{
|
{
|
||||||
retribusi.GET("/getData/Limit/:limit/Offset/:offset", dataRetribusi.GetDataRetribusi)
|
retribusi.GET("/getData/Limit/:limit/Offset/:offset", dataRetribusi.GetDataRetribusi)
|
||||||
|
|||||||
134
pkg/database/satu_data/antrean.go
Normal file
134
pkg/database/satu_data/antrean.go
Normal 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
|
||||||
|
}
|
||||||
89
pkg/handlers/antrean/antrean.go
Normal file
89
pkg/handlers/antrean/antrean.go
Normal 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"})
|
||||||
|
}
|
||||||
40
pkg/models/antrean/antrean.go
Normal file
40
pkg/models/antrean/antrean.go
Normal 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"`
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user