feat (employee): add laborant on create and update

This commit is contained in:
dpurbosakti
2025-09-04 12:07:47 +07:00
parent 00803113f0
commit e34e810e51
2 changed files with 41 additions and 7 deletions
@@ -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
}
@@ -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")