From 7276b2a985106beebe85f97b3deb59429ce7e75d Mon Sep 17 00:00:00 2001 From: vanilia Date: Wed, 3 Dec 2025 14:02:29 +0700 Subject: [PATCH] fix soapi sync --- internal/use-case/main-use-case/soapi/case.go | 4 +-- .../main-use-case/soapi/middleware.go | 2 +- .../simgos-sync-plugin/new/soapi/plugin.go | 2 +- .../new/encounter/case.go | 30 +++++++++++++++++++ .../simgos-sync-use-case/new/patient/case.go | 5 ++++ 5 files changed, 39 insertions(+), 4 deletions(-) diff --git a/internal/use-case/main-use-case/soapi/case.go b/internal/use-case/main-use-case/soapi/case.go index 8f4d29e2..49f37ba7 100644 --- a/internal/use-case/main-use-case/soapi/case.go +++ b/internal/use-case/main-use-case/soapi/case.go @@ -51,7 +51,7 @@ func Create(input e.CreateDto) (*d.Data, error) { // get detail for sync soapiData, err := ReadDetailData(e.ReadDetailDto{ Id: data.Id, - Includes: "Encounter,Employee"}, &event) + Includes: "Encounter,Employee"}, &event, tx) if err != nil { return err } @@ -59,7 +59,7 @@ func Create(input e.CreateDto) (*d.Data, error) { mwRunner.setMwType(pu.MWTPre) // Run pre-middleware if err = mwRunner.ExecuteIfSyncOn(func() error { - return mwRunner.RunCreateMiddleware(createPostMw, soapiData) + return mwRunner.RunCreateMiddleware(createPreMw, soapiData) }); err != nil { return err } diff --git a/internal/use-case/main-use-case/soapi/middleware.go b/internal/use-case/main-use-case/soapi/middleware.go index 049b0415..548d27fd 100644 --- a/internal/use-case/main-use-case/soapi/middleware.go +++ b/internal/use-case/main-use-case/soapi/middleware.go @@ -4,7 +4,7 @@ import plugin "simrs-vx/internal/use-case/simgos-sync-plugin/new/soapi" func init() { createPreMw = append(createPreMw, - createMw{Name: "sync-update-soapi", Func: plugin.Create}) + createMw{Name: "sync-create-soapi", Func: plugin.Create}) createSimxLogMw = append(createSimxLogMw, createLogMw{Name: "create-sync-log", Func: plugin.CreateLog}) diff --git a/internal/use-case/simgos-sync-plugin/new/soapi/plugin.go b/internal/use-case/simgos-sync-plugin/new/soapi/plugin.go index 8cc40723..20fabfac 100644 --- a/internal/use-case/simgos-sync-plugin/new/soapi/plugin.go +++ b/internal/use-case/simgos-sync-plugin/new/soapi/plugin.go @@ -32,5 +32,5 @@ func Delete(input *e.DeleteDto) error { } func getPrefixEndpoint() string { - return fmt.Sprintf("%s%s/v1/encounter", sync.O.TargetHost, sync.O.Prefix) + return fmt.Sprintf("%s%s/v1/soapi", sync.O.TargetHost, sync.O.Prefix) } diff --git a/internal/use-case/simgos-sync-use-case/new/encounter/case.go b/internal/use-case/simgos-sync-use-case/new/encounter/case.go index 4258e4a3..05c77915 100644 --- a/internal/use-case/simgos-sync-use-case/new/encounter/case.go +++ b/internal/use-case/simgos-sync-use-case/new/encounter/case.go @@ -135,6 +135,11 @@ func Update(input e.Encounter) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 2: Update Simgos if err = UpdateTPendaftaranData(input, simgos, "update", &event, tx); err != nil { return err @@ -238,6 +243,11 @@ func CheckIn(input e.Encounter) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 2: Update Simgos if err = UpdateTPendaftaranData(input, simgos, "check-in", &event, tx); err != nil { return err @@ -280,6 +290,11 @@ func CheckOut(input e.Encounter) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 2: Update Simgos if err = UpdateTPendaftaranData(input, simgos, "check-out", &event, tx); err != nil { return err @@ -322,6 +337,11 @@ func UpdateStatus(input e.Encounter) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 2: Update TPendaftaran if err = UpdateTPendaftaranData(input, simgos, "update-status", &event, tx); err != nil { return err @@ -434,6 +454,11 @@ func ApproveSwitchUnit(input e.ApproveCancelUnitDto) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 3: Update TPemeriksaanHist if err := utph.UpdateSimgosData(input, tPemeriksaanHist, "approve", &event, tx); err != nil { return err @@ -476,6 +501,11 @@ func CancelSwitchUnit(input e.ApproveCancelUnitDto) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 3: Update TPemeriksaanHist if err := utph.UpdateSimgosData(input, tPemeriksaanHist, "cancel", &event, tx); err != nil { return err diff --git a/internal/use-case/simgos-sync-use-case/new/patient/case.go b/internal/use-case/simgos-sync-use-case/new/patient/case.go index a147524c..03497eed 100644 --- a/internal/use-case/simgos-sync-use-case/new/patient/case.go +++ b/internal/use-case/simgos-sync-use-case/new/patient/case.go @@ -122,6 +122,11 @@ func Update(input e.Patient) (*d.Data, error) { tx := db.NewTx() err = tx.Simgos.Transaction(func(tx *gorm.DB) error { + // SET LOCAL + if err = tx.Exec(`SET LOCAL simx.sync_source = 'new'`).Error; err != nil { + return err + } + // Step 3: Update Simgos if err = UpdateSimgosData(input, patientData, &event, tx); err != nil { return err