feat (orders): add guard if parents are done, cant create child
This commit is contained in:
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()
|
||||
}
|
||||
Reference in New Issue
Block a user