Merge pull request #106 from dikstub-rssa/fix/anything-moko

Fix/anything moko
This commit is contained in:
Dwi Atmoko Purbo Sakti
2025-10-24 11:03:28 +07:00
committed by GitHub
22 changed files with 100 additions and 2 deletions
@@ -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");
+3 -2
View File
@@ -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=
@@ -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,
@@ -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"`
@@ -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,
@@ -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"`
@@ -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,
@@ -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"`
@@ -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,
@@ -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"`
@@ -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,
@@ -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"`
@@ -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,
@@ -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"`
@@ -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"`
@@ -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
@@ -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
}
@@ -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
}
@@ -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
@@ -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
}
@@ -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
}
@@ -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")
}