From e34e810e5192aa4077c072288200c60ae0221eb6 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Thu, 4 Sep 2025 12:07:47 +0700 Subject: [PATCH] feat (employee): add laborant on create and update --- internal/domain/main-entities/laborant/dto.go | 13 ++++--- .../use-case/main-use-case/employee/case.go | 35 +++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/internal/domain/main-entities/laborant/dto.go b/internal/domain/main-entities/laborant/dto.go index 5bf6ee9b..85c0176e 100644 --- a/internal/domain/main-entities/laborant/dto.go +++ b/internal/domain/main-entities/laborant/dto.go @@ -6,9 +6,8 @@ import ( ) type CreateDto struct { - Code string `json:"code"` - Name string `json:"name"` - Parent_Id *int16 `json:"parent_id"` + Employee_Id *uint `json:"employee_id"` + IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` } type ReadListDto struct { @@ -56,11 +55,11 @@ type ResponseDto struct { func (d Laborant) ToResponse() ResponseDto { resp := ResponseDto{ - // Code: d.Code, - // Name: d.Name, - // Parent_Id: d.Parent_Id, + Employee_Id: d.Employee_Id, + Employee: d.Employee, + IHS_Number: d.IHS_Number, } - // resp.SmallMain = d.SmallMain + resp.Main = d.Main return resp } diff --git a/internal/use-case/main-use-case/employee/case.go b/internal/use-case/main-use-case/employee/case.go index 7a489ec8..a6c16652 100644 --- a/internal/use-case/main-use-case/employee/case.go +++ b/internal/use-case/main-use-case/employee/case.go @@ -1,15 +1,18 @@ package employee import ( + "errors" "strconv" ed "simrs-vx/internal/domain/main-entities/doctor" e "simrs-vx/internal/domain/main-entities/employee" + el "simrs-vx/internal/domain/main-entities/laborant" en "simrs-vx/internal/domain/main-entities/nurse" et "simrs-vx/internal/domain/main-entities/nutritionist" ep "simrs-vx/internal/domain/main-entities/pharmacist" ud "simrs-vx/internal/use-case/main-use-case/doctor" + ul "simrs-vx/internal/use-case/main-use-case/laborant" un "simrs-vx/internal/use-case/main-use-case/nurse" ut "simrs-vx/internal/use-case/main-use-case/nutritionist" upe "simrs-vx/internal/use-case/main-use-case/person" @@ -114,6 +117,16 @@ func Create(input e.CreateDto) (*d.Data, error) { if _, err := up.CreateData(createPharmacist, &event, tx); err != nil { return err } + case ero.EPCLab: + createLaborant := el.CreateDto{ + Employee_Id: &data.Id, + IHS_Number: input.IHS_Number, + } + if _, err := ul.CreateData(createLaborant, &event, tx); err != nil { + return err + } + default: + return errors.New("invalid employee position") } mwRunner.setMwType(pu.MWTPost) @@ -376,6 +389,28 @@ func Update(input e.UpdateDto) (*d.Data, error) { if _, err := up.CreateData(createPha, &event, tx); err != nil { return err } + case ero.EPCLab: + readLab := el.ReadDetailDto{Employee_Id: &data.Id} + readLabData, err := ul.ReadDetailData(readLab, &event, tx) + if err != nil { + return err + } + createLab := el.CreateDto{ + Employee_Id: &data.Id, + IHS_Number: input.IHS_Number, + } + if readLabData != nil { + if err := ul.UpdateData(el.UpdateDto{CreateDto: createLab}, readLabData, &event, tx); err != nil { + return err + } + return nil + } + + if _, err := ul.CreateData(createLab, &event, tx); err != nil { + return err + } + default: + return errors.New("invalid employee position") } pl.SetLogInfo(&event, nil, "complete")