added intern

This commit is contained in:
2025-10-19 16:56:50 +07:00
parent a8aa3a22f1
commit 11a07a96f4
9 changed files with 273 additions and 114 deletions

No files matched your search

@@ -0,0 +1,81 @@
package intern
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ep "simrs-vx/internal/domain/main-entities/person"
es "simrs-vx/internal/domain/main-entities/specialist"
ess "simrs-vx/internal/domain/main-entities/subspecialist"
eu "simrs-vx/internal/domain/main-entities/user"
)
type CreateDto struct {
Person_Id *uint `json:"person_id"`
Specialist_Id *uint16 `json:"specialist_id"`
Subspecialist_Id *uint16 `json:"subspecialist_id"`
User_Id *uint `json:"user_id"`
}
type ReadListDto struct {
FilterDto
Includes string `json:"includes"`
Preloads []string `json:"-"`
Pagination ecore.Pagination
}
type FilterDto struct {
Person_Id *uint `json:"person_id"`
Specialist_Id *uint16 `json:"specialist_id"`
Subspecialist_Id *uint16 `json:"subspecialist_id"`
User_Id *uint `json:"user_id"`
}
type ReadDetailDto struct {
Id uint16 `json:"id"`
User_Id *uint `json:"user_id"`
}
type UpdateDto struct {
Id uint `json:"id"`
CreateDto
}
type DeleteDto struct {
Id uint `json:"id"`
}
type MetaDto struct {
PageNumber int `json:"page_number"`
PageSize int `json:"page_size"`
Count int `json:"count"`
}
type ResponseDto struct {
ecore.Main
Person_Id *uint `json:"person_id"`
Person *ep.Person `json:"person,omitempty"`
Specialist_Id *uint16 `json:"specialist_id"`
Specialist *es.Specialist `json:"specialist,omitempty"`
Subspecialist_Id *uint16 `json:"subspecialist_id"`
Subspecialist *ess.Subspecialist `json:"subspecialist,omitempty"`
User_Id *uint `json:"user_id"`
User *eu.User `json:"user,omitempty"`
}
func (d Intern) ToResponse() ResponseDto {
resp := ResponseDto{
Person_Id: d.Person_Id,
Person: d.Person,
User_Id: d.User_Id,
User: d.User,
}
resp.Main = d.Main
return resp
}
func ToResponseList(data []Intern) []ResponseDto {
resp := make([]ResponseDto, len(data))
for i, u := range data {
resp[i] = u.ToResponse()
}
return resp
}
@@ -0,0 +1,17 @@
package intern
import (
ecore "simrs-vx/internal/domain/base-entities/core"
ep "simrs-vx/internal/domain/main-entities/person"
eu "simrs-vx/internal/domain/main-entities/user"
erg "simrs-vx/internal/domain/references/organization"
)
type Intern struct {
ecore.Main // adjust this according to the needs
Person_Id *uint `json:"person_id"`
Person *ep.Person `json:"person,omitempty" gorm:"foreignKey:Person_Id"`
Position_Code *erg.InternPosisitionCode `json:"position_code" gorm:"size:20"`
User_Id *uint `json:"user_id"`
User *eu.User `json:"user,omitempty" gorm:"foreignKey:User_Id"`
}
+24 -23
View File
@@ -1,33 +1,33 @@
package user
import (
ecore "simrs-vx/internal/domain/base-entities/core"
"time"
ecore "simrs-vx/internal/domain/base-entities/core"
ep "simrs-vx/internal/domain/main-entities/person"
epa "simrs-vx/internal/domain/main-entities/person-address"
epc "simrs-vx/internal/domain/main-entities/person-contact"
erc "simrs-vx/internal/domain/references/common"
ero "simrs-vx/internal/domain/references/organization"
erg "simrs-vx/internal/domain/references/organization"
)
type CreateDto struct {
Name string `json:"name" validate:"maxLength=25"`
Password string `json:"password" validate:"maxLength=255"`
Status_Code erc.UserStatusCode `json:"status_code" validate:"maxLength=10"`
Position_Code ero.UserPosisitionCode `json:"position_code" validate:"maxLength=20"`
Person_Id *uint `json:"-"`
Person *ep.UpdateDto `json:"person"`
PersonAddresses []epa.UpdateDto `json:"personAddresses"`
PersonContacts []epc.UpdateDto `json:"personContacts"`
Employee *EmployeUpdateDto `json:"employee"`
IHS_Number *string `json:"ihs_number" validate:"maxLength=20"`
SIP_Number *string `json:"sip_number" validate:"maxLength=20"`
Unit_Id *uint16 `json:"unit_id"`
Infra_Id *uint16 `json:"infra_id"`
Specialist_Id *uint16 `json:"specialist_id"`
Subspecialist_Id *uint16 `json:"subspecialist_id"`
Name string `json:"name" validate:"maxLength=25"`
Password string `json:"password" validate:"maxLength=255"`
Status_Code erc.UserStatusCode `json:"status_code" validate:"maxLength=10"`
Person_Id *uint `json:"-"`
Person *ep.UpdateDto `json:"person"`
PersonAddresses []epa.UpdateDto `json:"personAddresses"`
PersonContacts []epc.UpdateDto `json:"personContacts"`
Employee *EmployeUpdateDto `json:"employee"`
IHS_Number *string `json:"ihs_number" validate:"maxLength=20"`
SIP_Number *string `json:"sip_number" validate:"maxLength=20"`
Unit_Id *uint16 `json:"unit_id"`
Infra_Id *uint16 `json:"infra_id"`
Specialist_Id *uint16 `json:"specialist_id"`
Subspecialist_Id *uint16 `json:"subspecialist_id"`
ContractPosition_Code erg.ContractPositionCode `json:"contractPosition_code" gorm:"not null;size:20"`
}
type ReadListDto struct {
@@ -84,12 +84,13 @@ func (d *User) ToResponse() ResponseDto {
}
type EmployeUpdateDto struct {
Id uint `json:"id"`
User_Id *uint `json:"-"`
Person_Id *uint `json:"-"`
Division_Code *string `json:"division_code"`
Number *string `json:"number" validate:"maxLength=20"`
Status_Code erc.ActiveStatusCode `json:"status_code" validate:"maxLength=10"`
Id uint `json:"id"`
User_Id *uint `json:"-"`
Person_Id *uint `json:"-"`
Division_Code *string `json:"division_code"`
Number *string `json:"number" validate:"maxLength=20"`
Position_Code erg.EmployeePosisitionCode `json:"status_code" validate:"maxLength=10"`
Status_Code erc.ActiveStatusCode `json:"status_code" validate:"maxLength=10"`
}
func ToResponseList(data []User) []ResponseDto {
+10 -10
View File
@@ -5,17 +5,17 @@ import (
ecore "simrs-vx/internal/domain/base-entities/core"
erc "simrs-vx/internal/domain/references/common"
ero "simrs-vx/internal/domain/references/organization"
erg "simrs-vx/internal/domain/references/organization"
)
type User struct {
ecore.Main // adjust this according to the needs
Name string `json:"name" gorm:"unique;not null;size:25"`
Password string `json:"password" gorm:"not null;size:255"`
Status_Code erc.UserStatusCode `json:"status_code" gorm:"not null;size:10"`
FailedLoginCount uint8 `json:"failedLoginCount" gorm:"type:smallint"`
Position_Code ero.UserPosisitionCode `json:"position_code" gorm:"not null;size:20"`
LoginAttemptCount int `json:"-"`
LastSuccessLogin *time.Time `json:"lastSuccessLogin,omitempty"`
LastAllowdLogin *time.Time `json:"lastAllowdLogin,omitempty"`
ecore.Main // adjust this according to the needs
Name string `json:"name" gorm:"unique;not null;size:25"`
Password string `json:"password" gorm:"not null;size:255"`
Status_Code erc.UserStatusCode `json:"status_code" gorm:"not null;size:10"`
ContractPosition_Code erg.ContractPositionCode `json:"contractPosition_code" gorm:"not null;size:20"`
FailedLoginCount uint8 `json:"failedLoginCount" gorm:"type:smallint"`
LoginAttemptCount int `json:"-"`
LastSuccessLogin *time.Time `json:"lastSuccessLogin,omitempty"`
LastAllowdLogin *time.Time `json:"lastAllowdLogin,omitempty"`
}
@@ -1,26 +1,33 @@
package organization
type (
UserPosisitionCode string
ItemGroupCode string
InfraGroupCode string
UnitTypeCode string
DoctorFeeTypeCode string
ContractPositionCode string
EmployeePosisitionCode string
InternPosisitionCode string
ItemGroupCode string
InfraGroupCode string
UnitTypeCode string
DoctorFeeTypeCode string
)
const (
UPCReg UserPosisitionCode = "registration" // Admisi/Pendaftaran
UPCNur UserPosisitionCode = "nurse" // Perawat
UPCDoc UserPosisitionCode = "doctor" // Dokter
UPCNut UserPosisitionCode = "nutritionist" // Ahli gizi
UPCMwi UserPosisitionCode = "mid-wife" // Bidan
UPCLab UserPosisitionCode = "laborant" // Laboran
UPCPha UserPosisitionCode = "pharmacy" // Farmasi
UPCPay UserPosisitionCode = "payment" // Pembayaran
UPCHur UserPosisitionCode = "human-resource" // Sumber Daya Manusia
UPCGea UserPosisitionCode = "general-affair" // Bagian Umum
UPCInt UserPosisitionCode = "specialist-intern" // PPDS
UPCMan UserPosisitionCode = "management" // Manajemen
CSCEmp ContractPositionCode = "employee" // Pegawai
CSCSpi ContractPositionCode = "intern" // PPDS
EPCReg EmployeePosisitionCode = "registration" // Admisi/Pendaftaran
EPCNur EmployeePosisitionCode = "nurse" // Perawat
EPCDoc EmployeePosisitionCode = "doctor" // Dokter
EPCNut EmployeePosisitionCode = "nutritionist" // Ahli gizi
EPCMwi EmployeePosisitionCode = "mid-wife" // Bidan
EPCLab EmployeePosisitionCode = "laborant" // Laboran
EPCPha EmployeePosisitionCode = "pharmacy" // Farmasi
EPCPay EmployeePosisitionCode = "payment" // Pembayaran
EPCHur EmployeePosisitionCode = "human-resource" // Sumber Daya Manusia
EPCGea EmployeePosisitionCode = "general-affair" // Bagian Umum
EPCMan EmployeePosisitionCode = "management" // Manajemen
IPCSpecialist = "specialist-intern"
IPCNurse = "nurse-intern"
ITGCInfra ItemGroupCode = "infra"
ITGCMedicine ItemGroupCode = "medicine"
@@ -25,6 +25,7 @@ import (
inpatient "simrs-vx/internal/domain/main-entities/inpatient"
installation "simrs-vx/internal/domain/main-entities/installation"
insurancecompany "simrs-vx/internal/domain/main-entities/insurance-company"
intern "simrs-vx/internal/domain/main-entities/intern"
internalreference "simrs-vx/internal/domain/main-entities/internal-reference"
item "simrs-vx/internal/domain/main-entities/item"
itemprice "simrs-vx/internal/domain/main-entities/item-price"
@@ -105,6 +106,7 @@ func getMainEntities() []any {
&diagnosesrc.DiagnoseSrc{},
&proceduresrc.ProcedureSrc{},
&employee.Employee{},
&intern.Intern{},
&doctor.Doctor{},
&nurse.Nurse{},
&nutritionist.Nutritionist{},