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"` Person *ep.UpdateDto `json:"person"`
PersonAddresses []epa.UpdateDto `json:"personAddresses"` PersonAddresses []epa.UpdateDto `json:"personAddresses"`
PersonContacts []epc.UpdateDto `json:"personContacts"` PersonContacts []epc.UpdateDto `json:"personContacts"`
Code *string `json:"code" validate:"maxLength=20"`
Employee *EmployeUpdateDto `json:"employee"` Employee *EmployeUpdateDto `json:"employee"`
IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"`
SIP_Number *string `json:"sip_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" ed "simrs-vx/internal/domain/main-entities/doctor"
ee "simrs-vx/internal/domain/main-entities/employee" ee "simrs-vx/internal/domain/main-entities/employee"
el "simrs-vx/internal/domain/main-entities/laborant" el "simrs-vx/internal/domain/main-entities/laborant"
emw "simrs-vx/internal/domain/main-entities/midwife"
en "simrs-vx/internal/domain/main-entities/nurse" en "simrs-vx/internal/domain/main-entities/nurse"
et "simrs-vx/internal/domain/main-entities/nutritionist" et "simrs-vx/internal/domain/main-entities/nutritionist"
ep "simrs-vx/internal/domain/main-entities/pharmacist" ep "simrs-vx/internal/domain/main-entities/pharmacist"
@@ -18,6 +19,7 @@ import (
ud "simrs-vx/internal/use-case/main-use-case/doctor" ud "simrs-vx/internal/use-case/main-use-case/doctor"
ue "simrs-vx/internal/use-case/main-use-case/employee" ue "simrs-vx/internal/use-case/main-use-case/employee"
ul "simrs-vx/internal/use-case/main-use-case/laborant" 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" un "simrs-vx/internal/use-case/main-use-case/nurse"
ut "simrs-vx/internal/use-case/main-use-case/nutritionist" ut "simrs-vx/internal/use-case/main-use-case/nutritionist"
upe "simrs-vx/internal/use-case/main-use-case/person" 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 { switch input.Employee.Position_Code {
case ero.EPCDoc: case ero.EPCDoc:
createDoc := ed.CreateDto{ createDoc := ed.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
SIP_Number: input.SIP_Number, SIP_Number: input.SIP_Number,
@@ -118,6 +121,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
} }
case ero.EPCNur: case ero.EPCNur:
createNurse := en.CreateDto{ createNurse := en.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
Unit_Id: input.Unit_Id, Unit_Id: input.Unit_Id,
@@ -128,6 +132,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
} }
case ero.EPCNut: case ero.EPCNut:
createNutritionist := et.CreateDto{ createNutritionist := et.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
@@ -136,6 +141,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
} }
case ero.EPCPha: case ero.EPCPha:
createPharmacist := ep.CreateDto{ createPharmacist := ep.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
@@ -144,12 +150,22 @@ func Create(input e.CreateDto) (*d.Data, error) {
} }
case ero.EPCLab: case ero.EPCLab:
createLaborant := el.CreateDto{ createLaborant := el.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
if _, err := ul.CreateData(createLaborant, &event, tx); err != nil { if _, err := ul.CreateData(createLaborant, &event, tx); err != nil {
return err 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: default:
return errors.New("invalid employee position") return errors.New("invalid employee position")
} }
@@ -380,6 +396,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err return err
} }
createDoc := ed.CreateDto{ createDoc := ed.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
SIP_Number: input.SIP_Number, SIP_Number: input.SIP_Number,
@@ -402,6 +419,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err return err
} }
createNur := en.CreateDto{ createNur := en.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
@@ -422,6 +440,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err return err
} }
createNut := et.CreateDto{ createNut := et.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
@@ -442,6 +461,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err return err
} }
createPha := ep.CreateDto{ createPha := ep.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, IHS_Number: input.IHS_Number,
} }
@@ -462,6 +482,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err return err
} }
createLab := el.CreateDto{ createLab := el.CreateDto{
Code: input.Code,
Employee_Id: &employeeData.Id, Employee_Id: &employeeData.Id,
IHS_Number: input.IHS_Number, 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 { if _, err := ul.CreateData(createLab, &event, tx); err != nil {
return err 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: default:
return errors.New("invalid employee position") return errors.New("invalid employee position")
} }