add adjustment checkout

This commit is contained in:
vanilia
2025-10-22 09:03:19 +07:00
parent 4793eb3b3f
commit a795ccd747
20 changed files with 797 additions and 61 deletions

No files matched your search

@@ -1,19 +1,9 @@
package internal_reference
import (
// main entities
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/encounter"
eir "simrs-vx/internal/domain/main-entities/internal-reference"
eu "simrs-vx/internal/domain/main-entities/unit"
"strconv"
// main use case
ud "simrs-vx/internal/use-case/main-use-case/doctor"
ue "simrs-vx/internal/use-case/main-use-case/encounter"
uu "simrs-vx/internal/use-case/main-use-case/unit"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
@@ -43,11 +33,6 @@ func Create(input eir.CreateDto) (*d.Data, error) {
return err
}
// Validate Request
if err := validateRequest(input); err != nil {
return err
}
if resData, err := CreateData(input, &event, tx); err != nil {
return err
} else {
@@ -179,29 +164,6 @@ func ReadDetail(input eir.ReadDetailDto) (*d.Data, error) {
}, nil
}
func validateRequest(input eir.CreateDto) (err error) {
// Validate Encounter Id
_, err = ue.ReadDetail(ee.ReadDetailDto{Id: uint16(*input.Encounter_Id)})
if err != nil {
return err
}
// Validate Unit Id
_, err = uu.ReadDetail(eu.ReadDetailDto{Id: *input.Unit_Id})
if err != nil {
return err
}
// Validate Doctor Id
_, err = ud.ReadDetail(ed.ReadDetailDto{Id: uint16(*input.Doctor_Id)})
if err != nil {
return err
}
return
}
func Update(input eir.UpdateDto) (*d.Data, error) {
rdDto := eir.ReadDetailDto{Id: input.Id}
var data *eir.InternalReference
@@ -228,21 +190,10 @@ func Update(input eir.UpdateDto) (*d.Data, error) {
return err
}
// Validate Request
if err := validateRequest(input.CreateDto); err != nil {
return err
}
if err := UpdateData(input, data, &event, tx); err != nil {
return err
}
// Get Updated Data
rdDto.Includes = "encounter,unit,doctor"
if data, err = ReadDetailData(rdDto, &event, tx); err != nil {
return err
}
pl.SetLogInfo(&event, nil, "complete")
mwRunner.setMwType(pu.MWTPost)
@@ -21,3 +21,17 @@ func setData[T *ir.CreateDto | *ir.UpdateDto](input T, data *ir.InternalReferenc
data.Unit_Id = inputSrc.Unit_Id
data.Doctor_Id = inputSrc.Doctor_Id
}
func setBulkData(input []ir.CreateDto, encounterId uint) []ir.InternalReference {
var data []ir.InternalReference
for _, v := range input {
data = append(data, ir.InternalReference{
Encounter_Id: &encounterId,
Unit_Id: v.Unit_Id,
Doctor_Id: v.Doctor_Id,
})
}
return data
}
@@ -142,3 +142,24 @@ func DeleteData(data *eir.InternalReference, event *pl.Event, dbx ...*gorm.DB) e
pl.SetLogInfo(event, nil, "complete")
return nil
}
func CreateBulkData(input []eir.CreateDto, encounterId uint, event *pl.Event, dbx ...*gorm.DB) error {
pl.SetLogInfo(event, nil, "started", "DBCreate")
data := []eir.InternalReference{}
setBulkData(input, encounterId)
var tx *gorm.DB
if len(dbx) > 0 {
tx = dbx[0]
} else {
tx = dg.I
}
if err := tx.Create(&data).Error; err != nil {
return plh.HandleCreateError(input, event, err)
}
pl.SetLogInfo(event, nil, "complete")
return nil
}