This commit is contained in:
dpurbosakti
2025-09-04 21:15:11 +07:00
parent 56d9513dd7
commit dd409e5c5e
11 changed files with 59 additions and 20 deletions
@@ -0,0 +1,10 @@
-- Modify "Doctor" table
ALTER TABLE "public"."Doctor" ADD CONSTRAINT "uni_Doctor_IHS_Number" UNIQUE ("IHS_Number"), ADD CONSTRAINT "uni_Doctor_SIP_Number" UNIQUE ("SIP_Number");
-- Modify "Laborant" table
ALTER TABLE "public"."Laborant" ADD CONSTRAINT "uni_Laborant_IHS_Number" UNIQUE ("IHS_Number");
-- Modify "Nurse" table
ALTER TABLE "public"."Nurse" ADD CONSTRAINT "uni_Nurse_IHS_Number" UNIQUE ("IHS_Number");
-- Modify "Nutritionist" table
ALTER TABLE "public"."Nutritionist" ADD CONSTRAINT "uni_Nutritionist_IHS_Number" UNIQUE ("IHS_Number");
-- Modify "Pharmacist" table
ALTER TABLE "public"."Pharmacist" ADD CONSTRAINT "uni_Pharmacist_IHS_Number" UNIQUE ("IHS_Number");
+2 -1
View File
@@ -1,2 +1,3 @@
h1:5CRUsZFEhBmTlYz30l5g/ilZWIUjrfTf7K0qa5ffXQg=
h1:G2T3Gv3jMXqZDaBw/lSU8IhowMI3z//r+ZtHxndsLc4=
20250904105930.sql h1:Vv4vCurl7m7/ZB6TjRpkubHpQ4RYwSUn0QHdzfoGpzY=
20250904141448.sql h1:FYCHH9Os4KkrZMDu/jR8FMP+wLMRW+Mb0PkLU/9BRDg=
@@ -12,8 +12,8 @@ type Doctor struct {
ecore.Main // adjust this according to the needs
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:"size:20"`
SIP_Number *string `json:"sip_number" gorm:"size:20"`
IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"`
SIP_Number *string `json:"sip_number" gorm:"unique;size:20"`
Unit_Id *uint16 `json:"unit_id"`
Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id;references:Id"`
Specialist_Id *uint16 `json:"specialist_id"`
@@ -9,5 +9,5 @@ type Laborant struct {
ecore.Main // adjust this according to the needs
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:"size:20"`
IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"`
}
@@ -11,7 +11,7 @@ type Nurse struct {
ecore.Main // adjust this according to the needs
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:"size:20"`
IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"`
Unit_Id *uint16 `json:"unit_id"`
Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id;references:Id"`
Infra_Id *uint16 `json:"infra_id"`
@@ -9,5 +9,5 @@ type Nutritionist struct {
ecore.Main // adjust this according to the needs
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:"size:20"`
IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"`
}
@@ -9,5 +9,5 @@ type Pharmacist struct {
ecore.Main // adjust this according to the needs
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:"size:20"`
IHS_Number *string `json:"ihs_number" gorm:"unique;size:20"`
}
@@ -102,7 +102,20 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
tx = tx.Preload("Person.Contacts")
tx = tx.Preload("Person.Relatives")
if err := tx.First(&data, input.Id).Error; err != nil {
if input.User_Id != nil {
tx = tx.Where("\"User_Id\" = ?", *input.User_Id)
}
if input.Person_Id != nil {
tx = tx.Where("\"Person_Id\" = ?", *input.Person_Id)
}
if input.Number != nil {
tx = tx.Where("\"Number\" = ?", *input.Number)
}
if input.Id != 0 {
tx = tx.Where("\"Id\" = ?", input.Id)
}
if err := tx.First(&data).Error; err != nil {
if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil {
return nil, processedErr
}
@@ -96,7 +96,14 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
tx = dg.I
}
if err := tx.First(&data, input.Id).Error; err != nil {
if input.User_Id != nil {
tx = tx.Where("\"User_Id\" = ?", *input.User_Id)
}
if input.Id > 0 {
tx = tx.Where("\"Id\" = ?", input.Id)
}
if err := tx.First(&data).Error; err != nil {
if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil {
return nil, processedErr
}
+11 -6
View File
@@ -341,7 +341,12 @@ func Update(input e.UpdateDto) (*d.Data, error) {
if err != nil {
return err
}
createInt := esi.CreateDto{}
createInt := esi.CreateDto{
User_Id: &data.Id,
Person_Id: input.Person_Id,
Specialist_Id: input.Specialist_Id,
Subspecialist_Id: input.Subspecialist_Id,
}
if readIntData != nil {
if err := usi.UpdateData(esi.UpdateDto{CreateDto: createInt}, readIntData, &event, tx); err != nil {
return err
@@ -368,7 +373,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
switch input.Position_Code {
case ero.UPCDoc:
readDoc := ed.ReadDetailDto{Employee_Id: &data.Id}
readDoc := ed.ReadDetailDto{Employee_Id: &employeeData.Id}
readDocData, err := ud.ReadDetailData(readDoc, &event, tx)
if err != nil {
return err
@@ -390,7 +395,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
case ero.UPCNur:
readNur := en.ReadDetailDto{Employee_Id: &data.Id}
readNur := en.ReadDetailDto{Employee_Id: &employeeData.Id}
readNurData, err := un.ReadDetailData(readNur, &event, tx)
if err != nil {
return err
@@ -410,7 +415,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
case ero.UPCNut:
readNut := et.ReadDetailDto{Employee_Id: &data.Id}
readNut := et.ReadDetailDto{Employee_Id: &employeeData.Id}
readNutData, err := ut.ReadDetailData(readNut, &event, tx)
if err != nil {
return err
@@ -430,7 +435,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
case ero.UPCPha:
readPha := ep.ReadDetailDto{Employee_Id: &data.Id}
readPha := ep.ReadDetailDto{Employee_Id: &employeeData.Id}
readPhaData, err := up.ReadDetailData(readPha, &event, tx)
if err != nil {
return err
@@ -450,7 +455,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
return err
}
case ero.UPCLab:
readLab := el.ReadDetailDto{Employee_Id: &data.Id}
readLab := el.ReadDetailDto{Employee_Id: &employeeData.Id}
readLabData, err := ul.ReadDetailData(readLab, &event, tx)
if err != nil {
return err
@@ -5,6 +5,7 @@ Any functions that are used internally by the use-case
package user
import (
"errors"
ee "simrs-vx/internal/domain/main-entities/employee"
esi "simrs-vx/internal/domain/main-entities/specialist-intern"
e "simrs-vx/internal/domain/main-entities/user"
@@ -56,18 +57,20 @@ func setDataEmployeeUpdate(src e.EmployeUpdateDto) ee.UpdateDto {
func getPersonIdByUserId(userId uint, positionCode ero.UserPosisitionCode, event *pl.Event, tx *gorm.DB) (*uint, error) {
pl.SetLogInfo(event, nil, "started", "DBGetPersonIdByUserId")
if positionCode == ero.UPCInt {
person, err := usi.ReadDetailData(esi.ReadDetailDto{User_Id: &userId}, event, tx)
specInt, err := usi.ReadDetailData(esi.ReadDetailDto{User_Id: &userId}, event, tx)
if err != nil {
return nil, err
}
return &person.Id, nil
if specInt.Person_Id == nil {
return nil, errors.New("person id not found")
}
return specInt.Person_Id, nil
}
person, err := ue.ReadDetailData(ee.ReadDetailDto{User_Id: &userId}, event, tx)
emp, err := ue.ReadDetailData(ee.ReadDetailDto{User_Id: &userId}, event, tx)
if err != nil {
return nil, err
}
return &person.Id, nil
return emp.Person_Id, nil
}