diff --git a/internal/domain/main-entities/user/dto.go b/internal/domain/main-entities/user/dto.go index b06a4bb0..c3a84737 100644 --- a/internal/domain/main-entities/user/dto.go +++ b/internal/domain/main-entities/user/dto.go @@ -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"` diff --git a/internal/use-case/main-use-case/user/case.go b/internal/use-case/main-use-case/user/case.go index 7d2053de..8e452e62 100644 --- a/internal/use-case/main-use-case/user/case.go +++ b/internal/use-case/main-use-case/user/case.go @@ -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") }