diff --git a/cmd/main-migration/migrations/20251024034832.sql b/cmd/main-migration/migrations/20251024034832.sql new file mode 100644 index 00000000..05794c82 --- /dev/null +++ b/cmd/main-migration/migrations/20251024034832.sql @@ -0,0 +1,12 @@ +-- Modify "Doctor" table +ALTER TABLE "public"."Doctor" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Doctor_Code" UNIQUE ("Code"); +-- Modify "Laborant" table +ALTER TABLE "public"."Laborant" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Laborant_Code" UNIQUE ("Code"); +-- Modify "Midwife" table +ALTER TABLE "public"."Midwife" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Midwife_Code" UNIQUE ("Code"); +-- Modify "Nurse" table +ALTER TABLE "public"."Nurse" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Nurse_Code" UNIQUE ("Code"); +-- Modify "Nutritionist" table +ALTER TABLE "public"."Nutritionist" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Nutritionist_Code" UNIQUE ("Code"); +-- Modify "Pharmacist" table +ALTER TABLE "public"."Pharmacist" ADD COLUMN "Code" character varying(20) NULL, ADD CONSTRAINT "uni_Pharmacist_Code" UNIQUE ("Code"); diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 26b28019..f65af68d 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:JmnFn6HtgFEjn6R7vQ/qii2smCP5Ye2B2JgnKEpkkLs= +h1:iDCRTkq1AjDg/YtmmPXwu6TAXJeoXQuXfDZG99Pi6cY= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -55,4 +55,5 @@ h1:JmnFn6HtgFEjn6R7vQ/qii2smCP5Ye2B2JgnKEpkkLs= 20251020062553.sql h1:Iw7hulcm5iRQlfW+ygA4iTPxLqkxx6h9vXMXEwUAHKs= 20251021041042.sql h1:wMgSivBV2A0NDcsLmKGIp0kMcVh2IODSG9b4dgzCaOM= 20251021075552.sql h1:8gfSMAglflNO6L0sSzxFNEubYN8/O4thT7OQT+WH+3M= -20251023044432.sql h1:nax2UtrrEp7vE3uFbUbsExTPCvFr5Hv44NEPPTXTMtA= +20251023044432.sql h1:MkvajJs3bfk9+wHvQ43/ccAluJEBARm1gWr1u92ccLA= +20251024034832.sql h1:SoqYFfkaTTiY18PWY+l8+dqUlZtCUjSsbC0L1swsD3s= diff --git a/internal/domain/main-entities/doctor/dto.go b/internal/domain/main-entities/doctor/dto.go index 62d5f5b4..0abcd99b 100644 --- a/internal/domain/main-entities/doctor/dto.go +++ b/internal/domain/main-entities/doctor/dto.go @@ -9,6 +9,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` SIP_Number *string `json:"sip_number"` @@ -24,6 +25,7 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee-id"` IHS_Number *string `json:"ihs-number" validate:"maxLength=20"` SIP_Number *string `json:"sip-number" validate:"maxLength=20"` @@ -34,6 +36,7 @@ type FilterDto struct { type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` SIP_Number *string `json:"sip_number"` @@ -56,6 +59,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -70,6 +74,7 @@ type ResponseDto struct { func (d Doctor) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/doctor/entity.go b/internal/domain/main-entities/doctor/entity.go index cf952380..ec882838 100644 --- a/internal/domain/main-entities/doctor/entity.go +++ b/internal/domain/main-entities/doctor/entity.go @@ -10,6 +10,7 @@ import ( type Doctor struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` diff --git a/internal/domain/main-entities/laborant/dto.go b/internal/domain/main-entities/laborant/dto.go index 4397d2f1..e5fdb550 100644 --- a/internal/domain/main-entities/laborant/dto.go +++ b/internal/domain/main-entities/laborant/dto.go @@ -6,6 +6,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` } @@ -17,12 +18,14 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee-id"` IHS_Number *string `json:"ihs-number"` } type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } @@ -44,6 +47,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -51,6 +55,7 @@ type ResponseDto struct { func (d Laborant) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/laborant/entity.go b/internal/domain/main-entities/laborant/entity.go index eeb63bef..9b48552e 100644 --- a/internal/domain/main-entities/laborant/entity.go +++ b/internal/domain/main-entities/laborant/entity.go @@ -7,6 +7,7 @@ import ( type Laborant struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` diff --git a/internal/domain/main-entities/midwife/dto.go b/internal/domain/main-entities/midwife/dto.go index d1adfdaf..ed01a36b 100644 --- a/internal/domain/main-entities/midwife/dto.go +++ b/internal/domain/main-entities/midwife/dto.go @@ -6,6 +6,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` } @@ -17,12 +18,14 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } @@ -44,6 +47,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -51,6 +55,7 @@ type ResponseDto struct { func (d Midwife) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/midwife/entity.go b/internal/domain/main-entities/midwife/entity.go index f98ba553..f0871e31 100644 --- a/internal/domain/main-entities/midwife/entity.go +++ b/internal/domain/main-entities/midwife/entity.go @@ -7,6 +7,7 @@ import ( type Midwife struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` diff --git a/internal/domain/main-entities/nurse/dto.go b/internal/domain/main-entities/nurse/dto.go index 1707f212..7b7b283c 100644 --- a/internal/domain/main-entities/nurse/dto.go +++ b/internal/domain/main-entities/nurse/dto.go @@ -8,6 +8,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` Unit_Id *uint16 `json:"unit_id"` @@ -21,6 +22,7 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee-id"` IHS_Number *string `json:"ihs-number"` Unit_Id *uint16 `json:"unit-id"` @@ -28,6 +30,7 @@ type FilterDto struct { } type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } @@ -49,6 +52,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -60,6 +64,7 @@ type ResponseDto struct { func (d Nurse) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/nurse/entity.go b/internal/domain/main-entities/nurse/entity.go index c3332c45..9768c622 100644 --- a/internal/domain/main-entities/nurse/entity.go +++ b/internal/domain/main-entities/nurse/entity.go @@ -9,6 +9,7 @@ import ( type Nurse struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` diff --git a/internal/domain/main-entities/nutritionist/dto.go b/internal/domain/main-entities/nutritionist/dto.go index df6365bf..832d6873 100644 --- a/internal/domain/main-entities/nutritionist/dto.go +++ b/internal/domain/main-entities/nutritionist/dto.go @@ -6,6 +6,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` } @@ -17,12 +18,14 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee-id"` IHS_Number *string `json:"ihs-number"` } type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } @@ -44,6 +47,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -51,6 +55,7 @@ type ResponseDto struct { func (d Nutritionist) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/nutritionist/entity.go b/internal/domain/main-entities/nutritionist/entity.go index be431f66..ab953c7f 100644 --- a/internal/domain/main-entities/nutritionist/entity.go +++ b/internal/domain/main-entities/nutritionist/entity.go @@ -7,6 +7,7 @@ import ( type Nutritionist struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` diff --git a/internal/domain/main-entities/pharmacist/dto.go b/internal/domain/main-entities/pharmacist/dto.go index 4a04f8d2..ded53ac8 100644 --- a/internal/domain/main-entities/pharmacist/dto.go +++ b/internal/domain/main-entities/pharmacist/dto.go @@ -6,6 +6,7 @@ import ( ) type CreateDto struct { + Code *string `json:"code" validate:"maxLength=20"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` } @@ -17,12 +18,14 @@ type ReadListDto struct { } type FilterDto struct { + Code *string `json:"code"` Employee_Id *uint `json:"employee-id"` IHS_Number *string `json:"ihs-number"` } type ReadDetailDto struct { Id uint16 `json:"id"` + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` IHS_Number *string `json:"ihs_number"` } @@ -44,6 +47,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main + Code *string `json:"code"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty"` IHS_Number *string `json:"ihs_number"` @@ -51,6 +55,7 @@ type ResponseDto struct { func (d Pharmacist) ToResponse() ResponseDto { resp := ResponseDto{ + Code: d.Code, Employee_Id: d.Employee_Id, Employee: d.Employee, IHS_Number: d.IHS_Number, diff --git a/internal/domain/main-entities/pharmacist/entity.go b/internal/domain/main-entities/pharmacist/entity.go index 318cc97e..604de4d4 100644 --- a/internal/domain/main-entities/pharmacist/entity.go +++ b/internal/domain/main-entities/pharmacist/entity.go @@ -7,6 +7,7 @@ import ( type Pharmacist struct { ecore.Main // adjust this according to the needs + Code *string `json:"code" gorm:"unique;size:20"` Employee_Id *uint `json:"employee_id"` Employee *ee.Employee `json:"employee,omitempty" gorm:"foreignKey:Employee_Id;references:Id"` IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"` 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/doctor/helper.go b/internal/use-case/main-use-case/doctor/helper.go index 8077b92f..b62045c7 100644 --- a/internal/use-case/main-use-case/doctor/helper.go +++ b/internal/use-case/main-use-case/doctor/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Doctor) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number data.SIP_Number = inputSrc.SIP_Number diff --git a/internal/use-case/main-use-case/laborant/helper.go b/internal/use-case/main-use-case/laborant/helper.go index 8619f7e6..8a053b90 100644 --- a/internal/use-case/main-use-case/laborant/helper.go +++ b/internal/use-case/main-use-case/laborant/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Laborant) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number } diff --git a/internal/use-case/main-use-case/midwife/helper.go b/internal/use-case/main-use-case/midwife/helper.go index 5be74b86..e63f0e6f 100644 --- a/internal/use-case/main-use-case/midwife/helper.go +++ b/internal/use-case/main-use-case/midwife/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Midwife) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number } diff --git a/internal/use-case/main-use-case/nurse/helper.go b/internal/use-case/main-use-case/nurse/helper.go index 5ecb6f20..003230b3 100644 --- a/internal/use-case/main-use-case/nurse/helper.go +++ b/internal/use-case/main-use-case/nurse/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Nurse) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number data.Unit_Id = inputSrc.Unit_Id diff --git a/internal/use-case/main-use-case/nutritionist/helper.go b/internal/use-case/main-use-case/nutritionist/helper.go index 4ff20809..028b2dc3 100644 --- a/internal/use-case/main-use-case/nutritionist/helper.go +++ b/internal/use-case/main-use-case/nutritionist/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Nutritionist) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number } diff --git a/internal/use-case/main-use-case/pharmacist/helper.go b/internal/use-case/main-use-case/pharmacist/helper.go index deb230cf..c17fa8a2 100644 --- a/internal/use-case/main-use-case/pharmacist/helper.go +++ b/internal/use-case/main-use-case/pharmacist/helper.go @@ -17,6 +17,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Pharmacist) { inputSrc = &inputTemp.CreateDto } + data.Code = inputSrc.Code data.Employee_Id = inputSrc.Employee_Id data.IHS_Number = inputSrc.IHS_Number } 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") }