feat (employee): add create feat doctor, nurse, nutritionist, pharmacy
This commit is contained in:
No files matched your search
@@ -11,13 +11,16 @@ import (
|
|||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
User_Id *uint `json:"user_id"`
|
User_Id *uint `json:"user_id"`
|
||||||
UserRequest *eu.CreateDto `json:"user_request"`
|
User *eu.CreateDto `json:"user"`
|
||||||
Person_Id *uint `json:"person_id"`
|
Person_Id *uint `json:"person_id"`
|
||||||
PersonRequest *ep.CreateDto `json:"person_request"`
|
Person *ep.CreateDto `json:"person"`
|
||||||
Position_Code ero.EmployeePosisitionCode `json:"position_code"`
|
Position_Code ero.EmployeePosisitionCode `json:"position_code"`
|
||||||
Division_Code *string `json:"division_code"`
|
Division_Code *string `json:"division_code"`
|
||||||
Number *string `json:"number"`
|
Number *string `json:"number"`
|
||||||
Status_Code erc.ActiveStatusCode `json:"status_code"`
|
Status_Code erc.ActiveStatusCode `json:"status_code"`
|
||||||
|
IHS_Number *string `json:"ihs_number"`
|
||||||
|
SIP_Number *string `json:"sip_number"`
|
||||||
|
Unit_Id *uint `json:"unit_id"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReadListDto struct {
|
type ReadListDto struct {
|
||||||
@@ -99,6 +102,6 @@ func ToResponseList(data []Employee) []ResponseDto {
|
|||||||
|
|
||||||
func (c CreateDto) Sanitize() CreateDto {
|
func (c CreateDto) Sanitize() CreateDto {
|
||||||
sanitized := c
|
sanitized := c
|
||||||
sanitized.UserRequest.Password = "[REDACTED]"
|
sanitized.User.Password = "[REDACTED]"
|
||||||
return sanitized
|
return sanitized
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,25 @@
|
|||||||
package employee
|
package employee
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
ed "simrs-vx/internal/domain/main-entities/doctor"
|
||||||
e "simrs-vx/internal/domain/main-entities/employee"
|
e "simrs-vx/internal/domain/main-entities/employee"
|
||||||
|
en "simrs-vx/internal/domain/main-entities/nurse"
|
||||||
|
et "simrs-vx/internal/domain/main-entities/nutritionist"
|
||||||
|
ep "simrs-vx/internal/domain/main-entities/pharmacist"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
dg "github.com/karincake/apem/db-gorm-pg"
|
ud "simrs-vx/internal/use-case/main-use-case/doctor"
|
||||||
d "github.com/karincake/dodol"
|
un "simrs-vx/internal/use-case/main-use-case/nurse"
|
||||||
|
ut "simrs-vx/internal/use-case/main-use-case/nutritionist"
|
||||||
|
up "simrs-vx/internal/use-case/main-use-case/pharmacist"
|
||||||
|
|
||||||
|
ero "simrs-vx/internal/domain/references/organization"
|
||||||
|
|
||||||
pl "simrs-vx/pkg/logger"
|
pl "simrs-vx/pkg/logger"
|
||||||
pu "simrs-vx/pkg/use-case-helper"
|
pu "simrs-vx/pkg/use-case-helper"
|
||||||
|
|
||||||
|
dg "github.com/karincake/apem/db-gorm-pg"
|
||||||
|
d "github.com/karincake/dodol"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -34,11 +44,10 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if input.Person_Id == nil {
|
if err := createOrUpdatePerson(&input, &event, tx); err != nil {
|
||||||
if err := createPerson(&input, &event, tx); err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := createUser(&input, &event, tx); err != nil {
|
if err := createUser(&input, &event, tx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -49,6 +58,43 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
|||||||
data = *resData
|
data = *resData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch input.Position_Code {
|
||||||
|
case ero.EPCDoc:
|
||||||
|
createDoc := ed.CreateDto{
|
||||||
|
Employee_Id: &data.Id,
|
||||||
|
IHS_Number: input.IHS_Number,
|
||||||
|
SIP_Number: input.SIP_Number,
|
||||||
|
Unit_Id: input.Unit_Id,
|
||||||
|
}
|
||||||
|
if _, err := ud.CreateData(createDoc, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case ero.EPCNur:
|
||||||
|
createNurse := en.CreateDto{
|
||||||
|
Employee_Id: &data.Id,
|
||||||
|
IHS_Number: input.IHS_Number,
|
||||||
|
}
|
||||||
|
if _, err := un.CreateData(createNurse, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case ero.EPCNut:
|
||||||
|
createNutritionist := et.CreateDto{
|
||||||
|
Employee_Id: &data.Id,
|
||||||
|
IHS_Number: input.IHS_Number,
|
||||||
|
}
|
||||||
|
if _, err := ut.CreateData(createNutritionist, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case ero.EPCPha:
|
||||||
|
createPharmacist := ep.CreateDto{
|
||||||
|
Employee_Id: &data.Id,
|
||||||
|
IHS_Number: input.IHS_Number,
|
||||||
|
}
|
||||||
|
if _, err := up.CreateData(createPharmacist, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mwRunner.setMwType(pu.MWTPost)
|
mwRunner.setMwType(pu.MWTPost)
|
||||||
// Run post-middleware
|
// Run post-middleware
|
||||||
if err := mwRunner.RunCreateMiddleware(createPostMw, &input, &data); err != nil {
|
if err := mwRunner.RunCreateMiddleware(createPostMw, &input, &data); err != nil {
|
||||||
|
|||||||
@@ -7,11 +7,14 @@ package employee
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
e "simrs-vx/internal/domain/main-entities/employee"
|
e "simrs-vx/internal/domain/main-entities/employee"
|
||||||
pl "simrs-vx/pkg/logger"
|
ep "simrs-vx/internal/domain/main-entities/person"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
up "simrs-vx/internal/use-case/main-use-case/person"
|
up "simrs-vx/internal/use-case/main-use-case/person"
|
||||||
uu "simrs-vx/internal/use-case/main-use-case/user"
|
uu "simrs-vx/internal/use-case/main-use-case/user"
|
||||||
|
|
||||||
|
pl "simrs-vx/pkg/logger"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -33,7 +36,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Employee) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createUser(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
func createUser(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
||||||
if input.UserRequest == nil {
|
if input.User == nil {
|
||||||
event.Status = "failed"
|
event.Status = "failed"
|
||||||
event.ErrInfo = pl.ErrorInfo{
|
event.ErrInfo = pl.ErrorInfo{
|
||||||
Code: "data-create-fail",
|
Code: "data-create-fail",
|
||||||
@@ -42,7 +45,7 @@ func createUser(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
|||||||
}
|
}
|
||||||
return pl.SetLogError(event, input)
|
return pl.SetLogError(event, input)
|
||||||
}
|
}
|
||||||
user, err := uu.CreateData(*input.UserRequest, event, tx)
|
user, err := uu.CreateData(*input.User, event, tx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -50,21 +53,33 @@ func createUser(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPerson(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
func createOrUpdatePerson(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
||||||
if input.PersonRequest == nil {
|
if input.Person_Id == nil {
|
||||||
event.Status = "failed"
|
person, err := up.CreateData(*input.Person, event, tx)
|
||||||
event.ErrInfo = pl.ErrorInfo{
|
if err != nil {
|
||||||
Code: "data-create-fail",
|
return err
|
||||||
Detail: "person request is required",
|
|
||||||
Raw: errors.New("person request is required"),
|
|
||||||
}
|
}
|
||||||
return pl.SetLogError(event, input)
|
input.Person_Id = &person.Id
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
person, err := up.CreateData(*input.PersonRequest, event, tx)
|
|
||||||
|
person, err := up.ReadDetailData(ep.ReadDetailDto{Id: *input.Person_Id}, event, tx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
input.Person_Id = &person.Id
|
|
||||||
return nil
|
|
||||||
|
|
||||||
|
if person == nil {
|
||||||
|
event.Status = "failed"
|
||||||
|
event.ErrInfo = pl.ErrorInfo{
|
||||||
|
Code: "data-notFound",
|
||||||
|
Detail: "person with ID " + strconv.Itoa(int(*input.Person_Id)) + " not found",
|
||||||
|
Raw: errors.New("person with ID " + strconv.Itoa(int(*input.Person_Id)) + " not found"),
|
||||||
|
}
|
||||||
|
return pl.SetLogError(event, input)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := up.UpdateData(ep.UpdateDto{CreateDto: *input.Person}, person, event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user