Merge pull request #138 from dikstub-rssa/feat/adjustment-encounter-cancel
update encounter cancel flow
This commit is contained in:
@@ -3,6 +3,7 @@ package encounter
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
us "simrs-vx/internal/use-case/main-use-case/soapi"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
@@ -489,6 +490,32 @@ func UpdateStatusCode(input e.UpdateStatusDto) (*d.Data, error) {
|
||||
return pl.SetLogError(&event, input)
|
||||
}
|
||||
|
||||
if input.StatusCode == erc.DSCCancel {
|
||||
// TODO: Prevent cancellation if the billing has been verified
|
||||
|
||||
// TODO: Only "supervisi pendaftaran" could cancel encounter
|
||||
|
||||
// Prevent cancellation if soapi exist
|
||||
encounterId := uint(input.Id)
|
||||
dataSoapi, _, err := us.ReadListData(es.ReadListDto{
|
||||
FilterDto: es.FilterDto{
|
||||
Encounter_Id: &encounterId,
|
||||
}}, &event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(dataSoapi) > 0 {
|
||||
event.Status = "failed"
|
||||
event.ErrInfo = pl.ErrorInfo{
|
||||
Code: "cancel-not-allowed",
|
||||
Detail: "encounter can't be cancelled because SOAPI already exists",
|
||||
Raw: errors.New("encounter has SOAPI records"),
|
||||
}
|
||||
return pl.SetLogError(&event, input)
|
||||
}
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event, tx)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
|
||||
Reference in New Issue
Block a user