feat (user): add code on create and update, also handle midwife creation

This commit is contained in:
dpurbosakti
2025-10-24 10:59:14 +07:00
parent e95f28e442
commit abebfd1d0c
2 changed files with 43 additions and 0 deletions
@@ -20,6 +20,7 @@ type CreateDto struct {
Person *ep.UpdateDto `json:"person"`
PersonAddresses []epa.UpdateDto `json:"personAddresses"`
PersonContacts []epc.UpdateDto `json:"personContacts"`
Code *string `json:"code" validate:"maxLength=20"`
Employee *EmployeUpdateDto `json:"employee"`
IHS_Number *string `json:"ihs_number" validate:"maxLength=20"`
SIP_Number *string `json:"sip_number" validate:"maxLength=20"`
@@ -9,6 +9,7 @@ import (
ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/employee"
el "simrs-vx/internal/domain/main-entities/laborant"
emw "simrs-vx/internal/domain/main-entities/midwife"
en "simrs-vx/internal/domain/main-entities/nurse"
et "simrs-vx/internal/domain/main-entities/nutritionist"
ep "simrs-vx/internal/domain/main-entities/pharmacist"
@@ -18,6 +19,7 @@ import (
ud "simrs-vx/internal/use-case/main-use-case/doctor"
ue "simrs-vx/internal/use-case/main-use-case/employee"
ul "simrs-vx/internal/use-case/main-use-case/laborant"
umw "simrs-vx/internal/use-case/main-use-case/midwife"
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"
@@ -106,6 +108,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
switch input.Employee.Position_Code {
case ero.EPCDoc:
createDoc := ed.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
SIP_Number: input.SIP_Number,
@@ -118,6 +121,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
}
case ero.EPCNur:
createNurse := en.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
Unit_Id: input.Unit_Id,
@@ -128,6 +132,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
}
case ero.EPCNut:
createNutritionist := et.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -136,6 +141,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
}
case ero.EPCPha:
createPharmacist := ep.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -144,12 +150,22 @@ func Create(input e.CreateDto) (*d.Data, error) {
}
case ero.EPCLab:
createLaborant := el.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
if _, err := ul.CreateData(createLaborant, &event, tx); err != nil {
return err
}
case ero.EPCMwi:
createMidWife := emw.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
if _, err := umw.CreateData(createMidWife, &event, tx); err != nil {
return err
}
default:
return errors.New("invalid employee position")
}
@@ -380,6 +396,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
createDoc := ed.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
SIP_Number: input.SIP_Number,
@@ -402,6 +419,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
createNur := en.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -422,6 +440,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
createNut := et.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -442,6 +461,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
createPha := ep.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -462,6 +482,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
createLab := el.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
@@ -475,6 +496,27 @@ func Update(input e.UpdateDto) (*d.Data, error) {
if _, err := ul.CreateData(createLab, &event, tx); err != nil {
return err
}
case ero.EPCMwi:
readMidWife := emw.ReadDetailDto{Employee_Id: &employeeData.Id}
readMidWifeData, err := umw.ReadDetailData(readMidWife, &event, tx)
if err != nil {
return err
}
createMidWife := emw.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number,
}
if readMidWifeData != nil {
if err := umw.UpdateData(emw.UpdateDto{CreateDto: createMidWife}, readMidWifeData, &event, tx); err != nil {
return err
}
return nil
}
if _, err := umw.CreateData(createMidWife, &event, tx); err != nil {
return err
}
default:
return errors.New("invalid employee position")
}