feat (orders): add guard if parents are done, cant create child

This commit is contained in:
dpurbosakti
2025-09-22 13:00:23 +07:00
parent 6304d8f02a
commit 37da1ee418
18 changed files with 365 additions and 3 deletions

No files matched your search

@@ -6,6 +6,8 @@ import (
e "simrs-vx/internal/domain/main-entities/material-order"
ue "simrs-vx/internal/use-case/main-use-case/encounter"
erc "simrs-vx/internal/domain/references/common"
dg "github.com/karincake/apem/db-gorm-pg"
@@ -38,6 +40,11 @@ func Create(input e.CreateDto) (*d.Data, error) {
return err
}
// check if encounter is done
if ue.IsDone(*input.Encounter_Id, &event, tx) {
return errors.New("encounter is already done")
}
if resData, err := CreateData(input, &event, tx); err != nil {
return err
} else {
@@ -153,3 +153,27 @@ func DeleteData(data *e.MaterialOrder, event *pl.Event, dbx ...*gorm.DB) error {
pl.SetLogInfo(event, nil, "complete")
return nil
}
func IsCompleted(materialOrder_id uint, event *pl.Event, dbx ...*gorm.DB) bool {
pl.SetLogInfo(event, nil, "started", "DBIsCompleted")
var tx *gorm.DB
if len(dbx) > 0 {
tx = dbx[0]
} else {
tx = dg.I
}
var data e.MaterialOrder
if err := tx.Where("\"Id\" = ?", materialOrder_id).First(&data).Error; err != nil {
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-get-fail",
Detail: "Database get failed",
Raw: err,
}
return false
}
pl.SetLogInfo(event, nil, "complete")
return data.IsCompleted()
}