From 550b629bcbc6148011d708de663aac9db47529ae Mon Sep 17 00:00:00 2001 From: Munawwirul Jamal Date: Tue, 9 Dec 2025 14:24:07 +0700 Subject: [PATCH 1/3] feat/user: adjust some entities --- internal/domain/main-entities/registration/dto.go | 6 +++--- internal/domain/main-entities/user/dto.go | 3 ++- .../use-case/main-use-case/person-address/lib.go | 13 ++++++++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/internal/domain/main-entities/registration/dto.go b/internal/domain/main-entities/registration/dto.go index b7837aee..ea842e95 100644 --- a/internal/domain/main-entities/registration/dto.go +++ b/internal/domain/main-entities/registration/dto.go @@ -23,9 +23,9 @@ type FilterDto struct { } type ReadDetailDto struct { - Id *uint16 `json:"id"` - Code *string `json:"code"` - Employee_Id *uint `json:"employee_id"` + Id *uint `json:"id"` + Employee_Id *uint `json:"employee_id"` + Includes string `json:"includes"` } type UpdateDto struct { diff --git a/internal/domain/main-entities/user/dto.go b/internal/domain/main-entities/user/dto.go index fd4b3f2c..acd189a0 100644 --- a/internal/domain/main-entities/user/dto.go +++ b/internal/domain/main-entities/user/dto.go @@ -24,8 +24,9 @@ type CreateDto struct { Employee *EmployeUpdateDto `json:"employee"` IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` SIP_Number *string `json:"sip_number" validate:"maxLength=20"` - Unit_Code *string `json:"unit_code"` Infra_Code *string `json:"infra_code"` + Installation_Code *string `json:"installation_code"` + Unit_Code *string `json:"unit_code"` Specialist_Code *string `json:"specialist_code"` Subspecialist_Code *string `json:"subspecialist_code"` ContractPosition_Code erg.ContractPositionCode `json:"contractPosition_code" gorm:"not null;size:20"` diff --git a/internal/use-case/main-use-case/person-address/lib.go b/internal/use-case/main-use-case/person-address/lib.go index 94cbfa69..8a07aba6 100644 --- a/internal/use-case/main-use-case/person-address/lib.go +++ b/internal/use-case/main-use-case/person-address/lib.go @@ -2,6 +2,8 @@ package personaddress import ( e "simrs-vx/internal/domain/main-entities/person-address" + "strconv" + "strings" plh "simrs-vx/pkg/lib-helper" pl "simrs-vx/pkg/logger" @@ -179,10 +181,19 @@ func CreateOrUpdateBatch(input []e.UpdateDto, event *pl.Event, tx ...*gorm.DB) e } setData(&input[idx], &data[idx]) if err := dbx.Create(&data[idx]).Error; err != nil { + errMsg := err.Error() + additionalMessage := "" + // FK error + if strings.Contains(errMsg, "violates foreign key") { + pos := strings.Index(errMsg, "violates foreign key") + additionalMessage = ", " + errMsg[pos:] + } + // Got another errot, put it down below + // .... event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ Code: "data-create-fail", - Detail: "Database insert failed", + Detail: "data insert failed at PersonAddres[" + strconv.Itoa(idx) + "]" + additionalMessage, Raw: err, } return pl.SetLogError(event, input) From 36e65abfac59ba7586208f029ad9e0df2f53d5fd Mon Sep 17 00:00:00 2001 From: Munawwirul Jamal Date: Tue, 9 Dec 2025 14:24:28 +0700 Subject: [PATCH 2/3] feat/user: employee regisgtration flow --- .../main-use-case/registration/case.go | 276 ++++++++++++++++++ .../main-use-case/registration/helper.go | 22 ++ .../main-use-case/registration/lib.go | 179 ++++++++++++ .../registration/middleware-runner.go | 103 +++++++ .../main-use-case/registration/middleware.go | 9 + .../main-use-case/registration/tycovar.go | 44 +++ internal/use-case/main-use-case/user/case.go | 10 +- 7 files changed, 642 insertions(+), 1 deletion(-) create mode 100644 internal/use-case/main-use-case/registration/case.go create mode 100644 internal/use-case/main-use-case/registration/helper.go create mode 100644 internal/use-case/main-use-case/registration/lib.go create mode 100644 internal/use-case/main-use-case/registration/middleware-runner.go create mode 100644 internal/use-case/main-use-case/registration/middleware.go create mode 100644 internal/use-case/main-use-case/registration/tycovar.go diff --git a/internal/use-case/main-use-case/registration/case.go b/internal/use-case/main-use-case/registration/case.go new file mode 100644 index 00000000..06d48899 --- /dev/null +++ b/internal/use-case/main-use-case/registration/case.go @@ -0,0 +1,276 @@ +package doctor + +import ( + "strconv" + + dg "github.com/karincake/apem/db-gorm-pg" + d "github.com/karincake/dodol" + "gorm.io/gorm" + + e "simrs-vx/internal/domain/main-entities/registration" + + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" +) + +const source = "doctor" + +func Create(input e.CreateDto) (*d.Data, error) { + data := e.Registration{} + + event := pl.Event{ + Feature: "Create", + Source: source, + } + + // Start log + pl.SetLogInfo(&event, input, "started", "create") + + err := dg.I.Transaction(func(tx *gorm.DB) error { + mwRunner := newMiddlewareRunner(&event, tx) + mwRunner.setMwType(pu.MWTPre) + // Run pre-middleware + if err := mwRunner.RunCreateMiddleware(createPreMw, &input, &data); err != nil { + return err + } + + if resData, err := CreateData(input, &event, tx); err != nil { + return err + } else { + data = *resData + } + + mwRunner.setMwType(pu.MWTPost) + // Run post-middleware + if err := mwRunner.RunCreateMiddleware(createPostMw, &input, &data); err != nil { + return err + } + + pl.SetLogInfo(&event, nil, "complete") + + return nil + }) + + if err != nil { + return nil, err + } + + return &d.Data{ + Meta: d.II{ + "source": source, + "structure": "single-data", + "status": "created", + }, + Data: data.ToResponse(), + }, nil +} + +func ReadList(input e.ReadListDto) (*d.Data, error) { + var data *e.Registration + var dataList []e.Registration + var metaList *e.MetaDto + var err error + + event := pl.Event{ + Feature: "ReadList", + Source: source, + } + + // Start log + pl.SetLogInfo(&event, input, "started", "readList") + + err = dg.I.Transaction(func(tx *gorm.DB) error { + mwRunner := newMiddlewareRunner(&event, tx) + mwRunner.setMwType(pu.MWTPre) + // Run pre-middleware + if err := mwRunner.RunReadListMiddleware(readListPreMw, &input, data); err != nil { + return err + } + + if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { + return err + } + + mwRunner.setMwType(pu.MWTPost) + // Run post-middleware + if err := mwRunner.RunReadListMiddleware(readListPostMw, &input, data); err != nil { + return err + } + + return nil + }) + + if err != nil { + return nil, err + } + + return &d.Data{ + Meta: d.IS{ + "source": source, + "structure": "list-data", + "status": "fetched", + "page_number": strconv.Itoa(metaList.PageNumber), + "page_size": strconv.Itoa(metaList.PageSize), + "record_totalCount": strconv.Itoa(metaList.Count), + "record_currentCount": strconv.Itoa(len(dataList)), + }, + Data: e.ToResponseList(dataList), + }, nil +} + +func ReadDetail(input e.ReadDetailDto) (*d.Data, error) { + var data *e.Registration + var err error + + event := pl.Event{ + Feature: "ReadDetail", + Source: source, + } + + // Start log + pl.SetLogInfo(&event, input, "started", "readDetail") + + err = dg.I.Transaction(func(tx *gorm.DB) error { + mwRunner := newMiddlewareRunner(&event, tx) + mwRunner.setMwType(pu.MWTPre) + // Run pre-middleware + if err := mwRunner.RunReadDetailMiddleware(readDetailPreMw, &input, data); err != nil { + return err + } + + if data, err = ReadDetailData(input, &event, tx); err != nil { + return err + } + + mwRunner.setMwType(pu.MWTPost) + // Run post-middleware + if err := mwRunner.RunReadDetailMiddleware(readDetailPostMw, &input, data); err != nil { + return err + } + + return nil + }) + + if err != nil { + return nil, err + } + + return &d.Data{ + Meta: d.IS{ + "source": source, + "structure": "single-data", + "status": "fetched", + }, + Data: data.ToResponse(), + }, nil +} + +func Update(input e.UpdateDto) (*d.Data, error) { + rdDto := e.ReadDetailDto{Id: input.Id} + var data *e.Registration + var err error + + event := pl.Event{ + Feature: "Update", + Source: source, + } + + // Start log + pl.SetLogInfo(&event, input, "started", "update") + + err = dg.I.Transaction(func(tx *gorm.DB) error { + pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail") + if data, err = ReadDetailData(rdDto, &event, tx); err != nil { + return err + } + + mwRunner := newMiddlewareRunner(&event, tx) + mwRunner.setMwType(pu.MWTPre) + // Run pre-middleware + if err := mwRunner.RunUpdateMiddleware(readDetailPreMw, &rdDto, data); err != nil { + return err + } + + if err := UpdateData(input, data, &event, tx); err != nil { + return err + } + + pl.SetLogInfo(&event, nil, "complete") + + mwRunner.setMwType(pu.MWTPost) + // Run post-middleware + if err := mwRunner.RunUpdateMiddleware(readDetailPostMw, &rdDto, data); err != nil { + return err + } + + return nil + }) + + if err != nil { + return nil, err + } + + return &d.Data{ + Meta: d.IS{ + "source": source, + "structure": "single-data", + "status": "updated", + }, + Data: data.ToResponse(), + }, nil + +} + +func Delete(input e.DeleteDto) (*d.Data, error) { + rdDto := e.ReadDetailDto{Id: &input.Id} + var data *e.Registration + var err error + + event := pl.Event{ + Feature: "Delete", + Source: source, + } + + // Start log + pl.SetLogInfo(&event, input, "started", "delete") + + err = dg.I.Transaction(func(tx *gorm.DB) error { + pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail") + if data, err = ReadDetailData(rdDto, &event, tx); err != nil { + return err + } + + mwRunner := newMiddlewareRunner(&event, tx) + mwRunner.setMwType(pu.MWTPre) + // Run pre-middleware + if err := mwRunner.RunDeleteMiddleware(readDetailPreMw, &rdDto, data); err != nil { + return err + } + + if err := DeleteData(data, &event, tx); err != nil { + return err + } + + mwRunner.setMwType(pu.MWTPost) + // Run post-middleware + if err := mwRunner.RunDeleteMiddleware(readDetailPostMw, &rdDto, data); err != nil { + return err + } + + return nil + }) + + if err != nil { + return nil, err + } + + return &d.Data{ + Meta: d.IS{ + "source": source, + "structure": "single-data", + "status": "deleted", + }, + Data: data.ToResponse(), + }, nil + +} diff --git a/internal/use-case/main-use-case/registration/helper.go b/internal/use-case/main-use-case/registration/helper.go new file mode 100644 index 00000000..186e7f44 --- /dev/null +++ b/internal/use-case/main-use-case/registration/helper.go @@ -0,0 +1,22 @@ +/* +DESCRIPTION: +Any functions that are used internally by the use-case +*/ +package doctor + +import ( + e "simrs-vx/internal/domain/main-entities/registration" +) + +func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Registration) { + var inputSrc *e.CreateDto + if inputT, ok := any(input).(*e.CreateDto); ok { + inputSrc = inputT + } else { + inputTemp := any(input).(*e.UpdateDto) + inputSrc = &inputTemp.CreateDto + } + + data.Employee_Id = inputSrc.Employee_Id + data.Installation_Code = inputSrc.Installation_Code +} diff --git a/internal/use-case/main-use-case/registration/lib.go b/internal/use-case/main-use-case/registration/lib.go new file mode 100644 index 00000000..7d28bb9a --- /dev/null +++ b/internal/use-case/main-use-case/registration/lib.go @@ -0,0 +1,179 @@ +package doctor + +import ( + "fmt" + e "simrs-vx/internal/domain/main-entities/registration" + + plh "simrs-vx/pkg/lib-helper" + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" + + dg "github.com/karincake/apem/db-gorm-pg" + gh "github.com/karincake/getuk" + "gorm.io/gorm" +) + +func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registration, error) { + pl.SetLogInfo(event, nil, "started", "DBCreate") + + data := e.Registration{} + setData(&input, &data) + + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + if err := tx.Create(&data).Error; err != nil { + return nil, plh.HandleCreateError(input, event, err) + } + + pl.SetLogInfo(event, nil, "complete") + return &data, nil +} + +func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Registration, *e.MetaDto, error) { + pl.SetLogInfo(event, input, "started", "DBReadList") + data := []e.Registration{} + pagination := gh.Pagination{} + count := int64(0) + meta := e.MetaDto{} + + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + tx = tx. + Model(&e.Registration{}). + Scopes(gh.Preload(input.Includes)). + Scopes(gh.Filter(input.FilterDto)). + Count(&count). + Scopes(gh.Paginate(input, &pagination)). + Order("\"CreatedAt\" DESC") + + if err := tx.Find(&data).Error; err != nil { + if err == gorm.ErrRecordNotFound { + return nil, &meta, nil + } + return nil, nil, plh.HandleListError(input, event, err) + } + + meta.Count = int(count) + meta.PageNumber = pagination.PageNumber + meta.PageSize = pagination.PageSize + + pl.SetLogInfo(event, nil, "complete") + return data, &meta, nil +} + +func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registration, error) { + pl.SetLogInfo(event, input, "started", "DBReadDetail") + data := e.Registration{} + + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + if input.Employee_Id != nil { + tx = tx.Where("\"Employee_Id\" = ?", *input.Employee_Id) + } + if input.Id != nil { + tx = tx.Where("\"Id\" = ?", input.Id) + } + fmt.Println(input.Includes) + if err := tx.Scopes(gh.Preload(input.Includes)).First(&data).Error; err != nil { + if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil { + return nil, processedErr + } + } + + pl.SetLogInfo(event, nil, "complete") + return &data, nil +} + +func UpdateData(input e.UpdateDto, data *e.Registration, event *pl.Event, dbx ...*gorm.DB) error { + pl.SetLogInfo(event, data, "started", "DBUpdate") + setData(&input, data) + + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + if err := tx.Save(&data).Error; err != nil { + event.Status = "failed" + event.ErrInfo = pl.ErrorInfo{ + Code: "data-update-fail", + Detail: "Database update failed", + Raw: err, + } + return pl.SetLogError(event, input) + } + + pl.SetLogInfo(event, nil, "complete") + return nil +} + +func DeleteData(data *e.Registration, event *pl.Event, dbx ...*gorm.DB) error { + pl.SetLogInfo(event, data, "started", "DBDelete") + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + if err := tx.Delete(&data).Error; err != nil { + event.Status = "failed" + event.ErrInfo = pl.ErrorInfo{ + Code: "data-delete-fail", + Detail: "Database delete failed", + Raw: err, + } + return pl.SetLogError(event, data) + } + + pl.SetLogInfo(event, nil, "complete") + return nil +} + +func GetIdByUserId(user_id *uint, event *pl.Event, dbx ...*gorm.DB) (*uint, error) { + pl.SetLogInfo(event, nil, "started", "DBGetIdByUserId") + var tx *gorm.DB + if len(dbx) > 0 { + tx = dbx[0] + } else { + tx = dg.I + } + + var doctor_id uint + + err := tx.Model(&e.Registration{}). + Select("\"Doctor\".\"Id\" as doctor_id"). + Joins("JOIN \"Employee\" as e ON e.\"Id\" = \"Doctor\".\"Employee_Id\""). + Where("e.\"User_Id\" = ?", user_id). + Scan(&doctor_id).Error + + if err != nil { + event.Status = "failed" + event.ErrInfo = pl.ErrorInfo{ + Code: "data-get-fail", + Detail: "Database get failed", + Raw: err, + } + return nil, pl.SetLogError(event, user_id) + } + + pl.SetLogInfo(event, nil, "complete") + return &doctor_id, nil +} diff --git a/internal/use-case/main-use-case/registration/middleware-runner.go b/internal/use-case/main-use-case/registration/middleware-runner.go new file mode 100644 index 00000000..d68f8de9 --- /dev/null +++ b/internal/use-case/main-use-case/registration/middleware-runner.go @@ -0,0 +1,103 @@ +package doctor + +import ( + e "simrs-vx/internal/domain/main-entities/registration" + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" + + "gorm.io/gorm" +) + +type middlewareRunner struct { + Event *pl.Event + Tx *gorm.DB + MwType pu.MWType +} + +// NewMiddlewareExecutor creates a new middleware executor +func newMiddlewareRunner(event *pl.Event, tx *gorm.DB) *middlewareRunner { + return &middlewareRunner{ + Event: event, + Tx: tx, + } +} + +// ExecuteCreateMiddleware executes create middleware +func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e.CreateDto, data *e.Registration) error { + for _, middleware := range middlewares { + logData := pu.GetLogData(input, data) + + pl.SetLogInfo(me.Event, logData, "started", middleware.Name) + + if err := middleware.Func(input, data, me.Tx); err != nil { + return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err) + } + + pl.SetLogInfo(me.Event, nil, "complete") + } + return nil +} + +func (me *middlewareRunner) RunReadListMiddleware(middlewares []readListMw, input *e.ReadListDto, data *e.Registration) error { + for _, middleware := range middlewares { + logData := pu.GetLogData(input, data) + + pl.SetLogInfo(me.Event, logData, "started", middleware.Name) + + if err := middleware.Func(input, data, me.Tx); err != nil { + return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err) + } + + pl.SetLogInfo(me.Event, nil, "complete") + } + return nil +} + +func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { + for _, middleware := range middlewares { + logData := pu.GetLogData(input, data) + + pl.SetLogInfo(me.Event, logData, "started", middleware.Name) + + if err := middleware.Func(input, data, me.Tx); err != nil { + return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err) + } + + pl.SetLogInfo(me.Event, nil, "complete") + } + return nil +} + +func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { + for _, middleware := range middlewares { + logData := pu.GetLogData(input, data) + + pl.SetLogInfo(me.Event, logData, "started", middleware.Name) + + if err := middleware.Func(input, data, me.Tx); err != nil { + return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err) + } + + pl.SetLogInfo(me.Event, nil, "complete") + } + return nil +} + +func (me *middlewareRunner) RunDeleteMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { + for _, middleware := range middlewares { + logData := pu.GetLogData(input, data) + + pl.SetLogInfo(me.Event, logData, "started", middleware.Name) + + if err := middleware.Func(input, data, me.Tx); err != nil { + return pu.HandleMiddlewareError(me.Event, string(me.MwType), middleware.Name, logData, err) + } + + pl.SetLogInfo(me.Event, nil, "complete") + } + return nil +} + +func (me *middlewareRunner) setMwType(mwType pu.MWType) { + me.MwType = mwType +} diff --git a/internal/use-case/main-use-case/registration/middleware.go b/internal/use-case/main-use-case/registration/middleware.go new file mode 100644 index 00000000..b6bfc120 --- /dev/null +++ b/internal/use-case/main-use-case/registration/middleware.go @@ -0,0 +1,9 @@ +package doctor + +// example of middleware +// func init() { +// createPreMw = append(createPreMw, +// CreateMw{Name: "modif-input", Func: pm.ModifInput}, +// CreateMw{Name: "check-data", Func: pm.CheckData}, +// ) +// } diff --git a/internal/use-case/main-use-case/registration/tycovar.go b/internal/use-case/main-use-case/registration/tycovar.go new file mode 100644 index 00000000..bda8f4f8 --- /dev/null +++ b/internal/use-case/main-use-case/registration/tycovar.go @@ -0,0 +1,44 @@ +/* +DESCRIPTION: +A sample, part of the package that contains type, constants, and/or variables. + +In this sample it also provides type and variable regarding the needs of the +middleware to separate from main use-case which has the basic CRUD +functionality. The purpose of this is to make the code more maintainable. +*/ +package doctor + +import ( + "gorm.io/gorm" + + e "simrs-vx/internal/domain/main-entities/registration" +) + +type createMw struct { + Name string + Func func(input *e.CreateDto, data *e.Registration, tx *gorm.DB) error +} + +type readListMw struct { + Name string + Func func(input *e.ReadListDto, data *e.Registration, tx *gorm.DB) error +} + +type readDetailMw struct { + Name string + Func func(input *e.ReadDetailDto, data *e.Registration, tx *gorm.DB) error +} + +type UpdateMw = readDetailMw +type DeleteMw = readDetailMw + +var createPreMw []createMw // preprocess middleware +var createPostMw []createMw // postprocess middleware +var readListPreMw []readListMw // .. +var readListPostMw []readListMw // .. +var readDetailPreMw []readDetailMw +var readDetailPostMw []readDetailMw +var updatePreMw []readDetailMw +var updatePostMw []readDetailMw +var deletePreMw []readDetailMw +var deletePostMw []readDetailMw diff --git a/internal/use-case/main-use-case/user/case.go b/internal/use-case/main-use-case/user/case.go index f6faec22..f360336a 100644 --- a/internal/use-case/main-use-case/user/case.go +++ b/internal/use-case/main-use-case/user/case.go @@ -13,6 +13,7 @@ import ( en "simrs-vx/internal/domain/main-entities/nurse" et "simrs-vx/internal/domain/main-entities/nutritionist" ep "simrs-vx/internal/domain/main-entities/pharmacist" + er "simrs-vx/internal/domain/main-entities/registration" esi "simrs-vx/internal/domain/main-entities/specialist-intern" e "simrs-vx/internal/domain/main-entities/user" @@ -26,6 +27,7 @@ import ( upa "simrs-vx/internal/use-case/main-use-case/person-address" upc "simrs-vx/internal/use-case/main-use-case/person-contact" up "simrs-vx/internal/use-case/main-use-case/pharmacist" + ur "simrs-vx/internal/use-case/main-use-case/registration" usi "simrs-vx/internal/use-case/main-use-case/specialist-intern" erc "simrs-vx/internal/domain/references/common" @@ -167,7 +169,13 @@ func Create(input e.CreateDto) (*d.Data, error) { return err } case ero.EPCReg, ero.EPCScr: - // do nothing + createSub := er.CreateDto{ + Employee_Id: employeeData.Id, + Installation_Code: *input.Installation_Code, + } + if _, err := ur.CreateData(createSub, &event, tx); err != nil { + return err + } default: return errors.New("invalid employee position") } From bd1d5bdde688c890d94d4375bbc2a40b81280aed Mon Sep 17 00:00:00 2001 From: Munawwirul Jamal Date: Tue, 9 Dec 2025 15:50:17 +0700 Subject: [PATCH 3/3] feat/user: moved Registration to Registrator --- .../migrations/20251209084929.sql | 14 ++++++ cmd/main-migration/migrations/atlas.sum | 5 ++- .../{registration => registrator}/dto.go | 6 +-- .../{registration => registrator}/entity.go | 4 +- internal/domain/main-entities/user/dto.go | 44 ++++++++++++------- internal/interface/migration/main-entities.go | 4 +- .../main-use-case/authentication/helper.go | 11 +++++ .../{registration => registrator}/case.go | 18 ++++---- .../{registration => registrator}/helper.go | 6 +-- .../{registration => registrator}/lib.go | 32 +++++++------- .../middleware-runner.go | 14 +++--- .../middleware.go | 2 +- .../{registration => registrator}/tycovar.go | 10 ++--- internal/use-case/main-use-case/user/case.go | 4 +- 14 files changed, 105 insertions(+), 69 deletions(-) create mode 100644 cmd/main-migration/migrations/20251209084929.sql rename internal/domain/main-entities/{registration => registrator}/dto.go (92%) rename internal/domain/main-entities/{registration => registrator}/entity.go (93%) rename internal/use-case/main-use-case/{registration => registrator}/case.go (95%) rename internal/use-case/main-use-case/{registration => registrator}/helper.go (83%) rename internal/use-case/main-use-case/{registration => registrator}/lib.go (84%) rename internal/use-case/main-use-case/{registration => registrator}/middleware-runner.go (87%) rename internal/use-case/main-use-case/{registration => registrator}/middleware.go (91%) rename internal/use-case/main-use-case/{registration => registrator}/tycovar.go (75%) diff --git a/cmd/main-migration/migrations/20251209084929.sql b/cmd/main-migration/migrations/20251209084929.sql new file mode 100644 index 00000000..c67550ae --- /dev/null +++ b/cmd/main-migration/migrations/20251209084929.sql @@ -0,0 +1,14 @@ +-- Create "Registrator" table +CREATE TABLE "public"."Registrator" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Employee_Id" bigint NULL, + "Installation_Code" character varying(20) NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_Registrator_Employee" FOREIGN KEY ("Employee_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_Registrator_Installation" FOREIGN KEY ("Installation_Code") REFERENCES "public"."Installation" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Drop "Registration" table +DROP TABLE "public"."Registration"; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index b828c76d..9c137d56 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:YJzcjq4dKD7GKlV0GJ88TOtZgg0JRDcVMlAe5ZYT9/U= +h1:B/ZKq0d90aqLf0EvQfND4cd8ZRHcmxfzKF2N1lpSeIs= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -157,4 +157,5 @@ h1:YJzcjq4dKD7GKlV0GJ88TOtZgg0JRDcVMlAe5ZYT9/U= 20251209025908.sql h1:p3kZA8kyEj+mQZSrdY3k2K1NojQzFJh/MlZJ0Oy6t/k= 20251209030538.sql h1:zltV6/Fu2zJW0/lVBl7MdnWuJcqNTUIRcqYYZ8Fi1wo= 20251209064304.sql h1:Mj6Zh+2b/4AkM1HjnJGjAs788kVN0UaL34jeaKQIjT0= -20251209070128.sql h1:rdqSlAmJS5XSc1w9dka3C53zwgibQwRIUqBcgmIPoTM= +20251209070128.sql h1:ip4wNCIF/UFQlNo6KpFG87/XA08aG3/Rf5zpxz3xioY= +20251209084929.sql h1:Z5higP1Ecq5UPWhrWZ5UCrxddMNqiJi8PbCNvGBE48A= diff --git a/internal/domain/main-entities/registration/dto.go b/internal/domain/main-entities/registrator/dto.go similarity index 92% rename from internal/domain/main-entities/registration/dto.go rename to internal/domain/main-entities/registrator/dto.go index ea842e95..5f0d4517 100644 --- a/internal/domain/main-entities/registration/dto.go +++ b/internal/domain/main-entities/registrator/dto.go @@ -1,4 +1,4 @@ -package doctor +package registrator import ( ecore "simrs-vx/internal/domain/base-entities/core" @@ -51,7 +51,7 @@ type ResponseDto struct { Installation *ei.Installation `json:"installation,omitempty"` } -func (d Registration) ToResponse() ResponseDto { +func (d Registrator) ToResponse() ResponseDto { resp := ResponseDto{ Employee_Id: d.Employee_Id, Employee: d.Employee, @@ -62,7 +62,7 @@ func (d Registration) ToResponse() ResponseDto { return resp } -func ToResponseList(data []Registration) []ResponseDto { +func ToResponseList(data []Registrator) []ResponseDto { resp := make([]ResponseDto, len(data)) for i, u := range data { resp[i] = u.ToResponse() diff --git a/internal/domain/main-entities/registration/entity.go b/internal/domain/main-entities/registrator/entity.go similarity index 93% rename from internal/domain/main-entities/registration/entity.go rename to internal/domain/main-entities/registrator/entity.go index 52d81f40..31998c1c 100644 --- a/internal/domain/main-entities/registration/entity.go +++ b/internal/domain/main-entities/registrator/entity.go @@ -1,4 +1,4 @@ -package doctor +package registrator import ( ecore "simrs-vx/internal/domain/base-entities/core" @@ -6,7 +6,7 @@ import ( ei "simrs-vx/internal/domain/main-entities/installation" ) -type Registration struct { +type Registrator 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"` diff --git a/internal/domain/main-entities/user/dto.go b/internal/domain/main-entities/user/dto.go index acd189a0..bb030df3 100644 --- a/internal/domain/main-entities/user/dto.go +++ b/internal/domain/main-entities/user/dto.go @@ -13,23 +13,24 @@ import ( ) type CreateDto struct { - Name string `json:"name" validate:"maxLength=25"` - Password string `json:"password" validate:"maxLength=255"` + Name string `json:"name" validate:"required;maxLength=50"` + Password string `json:"password" validate:"required;maxLength=255"` + ContractPosition_Code erg.ContractPositionCode `json:"contractPosition_code" gorm:"not null;size:20" validate:"required"` 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"` - 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"` - Infra_Code *string `json:"infra_code"` - Installation_Code *string `json:"installation_code"` - Unit_Code *string `json:"unit_code"` - Specialist_Code *string `json:"specialist_code"` - Subspecialist_Code *string `json:"subspecialist_code"` - ContractPosition_Code erg.ContractPositionCode `json:"contractPosition_code" gorm:"not null;size:20"` + + Employee *EmployeUpdateDto `json:"employee"` + Person *ep.UpdateDto `json:"person"` + PersonAddresses []epa.UpdateDto `json:"personAddresses"` + PersonContacts []epc.UpdateDto `json:"personContacts"` + Person_Id *uint `json:"-"` + Code *string `json:"code" validate:"maxLength=20"` + IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` + SIP_Number *string `json:"sip_number" validate:"maxLength=20"` + Installation_Code *string `json:"installation_code"` + Unit_Code *string `json:"unit_code"` + Specialist_Code *string `json:"specialist_code"` + Subspecialist_Code *string `json:"subspecialist_code"` + Infra_Code *string `json:"infra_code"` } type ReadListDto struct { @@ -88,11 +89,20 @@ 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"` Position_Code erg.EmployeePositionCode `json:"position_code" validate:"maxLength=20"` Status_Code erc.ActiveStatusCode `json:"status_code" validate:"maxLength=10"` + Person_Id *uint `json:"-"` + // TODO: Extras + // Code *string `json:"code" validate:"maxLength=20"` + // IHS_Number *string `json:"ihs_number" validate:"maxLength=20"` + // SIP_Number *string `json:"sip_number" validate:"maxLength=20"` + // Installation_Code *string `json:"installation_code"` + // Unit_Code *string `json:"unit_code"` + // Specialist_Code *string `json:"specialist_code"` + // Subspecialist_Code *string `json:"subspecialist_code"` + // Infra_Code *string `json:"infra_code"` } func ToResponseList(data []User) []ResponseDto { diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index 147419e5..af3b35d3 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -96,7 +96,7 @@ import ( radiologymcuorder "simrs-vx/internal/domain/main-entities/radiology-mcu-order" radiologymcuorderitem "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item" regency "simrs-vx/internal/domain/main-entities/regency" - registration "simrs-vx/internal/domain/main-entities/registration" + registrator "simrs-vx/internal/domain/main-entities/registrator" rehab "simrs-vx/internal/domain/main-entities/rehab" responsibledoctorhist "simrs-vx/internal/domain/main-entities/responsible-doctor-hist" resume "simrs-vx/internal/domain/main-entities/resume" @@ -149,7 +149,7 @@ func getMainEntities() []any { &proceduresrc.ProcedureSrc{}, &employee.Employee{}, &intern.Intern{}, - ®istration.Registration{}, + ®istrator.Registrator{}, &doctor.Doctor{}, &nurse.Nurse{}, &nutritionist.Nutritionist{}, diff --git a/internal/use-case/main-use-case/authentication/helper.go b/internal/use-case/main-use-case/authentication/helper.go index d8c54751..3a8154b6 100644 --- a/internal/use-case/main-use-case/authentication/helper.go +++ b/internal/use-case/main-use-case/authentication/helper.go @@ -26,6 +26,7 @@ import ( em "simrs-vx/internal/domain/main-entities/midwife" en "simrs-vx/internal/domain/main-entities/nurse" ep "simrs-vx/internal/domain/main-entities/pharmacist" + er "simrs-vx/internal/domain/main-entities/registrator" esp "simrs-vx/internal/domain/main-entities/specialist-position" essp "simrs-vx/internal/domain/main-entities/subspecialist-position" eup "simrs-vx/internal/domain/main-entities/unit-position" @@ -265,6 +266,16 @@ func populateRoles(user *eu.User, input eu.LoginDto, atClaims jwt.MapClaims, out } atClaims["pharmacist_code"] = empData.Code outputData["pharmacist_code"] = empData.Code + case erg.EPCReg: + empData := er.Registrator{} + dg.I.Where("\"Employee_Id\" = ?", employee.Id).First(&empData) + if empData.Id == 0 { + return d.FieldErrors{"authentication": d.FieldError{Code: "auth-noRegistrator", Message: pl.GenMessage("auth-noRegistrator")}} + } + atClaims["registrator_id"] = empData.Id + outputData["registrator_id"] = empData.Id + atClaims["installation_code"] = empData.Installation_Code + outputData["installation_code"] = empData.Installation_Code } errorGetPosition := d.FieldErrors{"authentication": d.FieldError{Code: "auth-getData-failed", Message: pl.GenMessage("auth-getData-failed")}} diff --git a/internal/use-case/main-use-case/registration/case.go b/internal/use-case/main-use-case/registrator/case.go similarity index 95% rename from internal/use-case/main-use-case/registration/case.go rename to internal/use-case/main-use-case/registrator/case.go index 06d48899..64313b97 100644 --- a/internal/use-case/main-use-case/registration/case.go +++ b/internal/use-case/main-use-case/registrator/case.go @@ -1,4 +1,4 @@ -package doctor +package registrator import ( "strconv" @@ -7,16 +7,16 @@ import ( d "github.com/karincake/dodol" "gorm.io/gorm" - e "simrs-vx/internal/domain/main-entities/registration" + e "simrs-vx/internal/domain/main-entities/registrator" pl "simrs-vx/pkg/logger" pu "simrs-vx/pkg/use-case-helper" ) -const source = "doctor" +const source = "registrator" func Create(input e.CreateDto) (*d.Data, error) { - data := e.Registration{} + data := e.Registrator{} event := pl.Event{ Feature: "Create", @@ -66,8 +66,8 @@ func Create(input e.CreateDto) (*d.Data, error) { } func ReadList(input e.ReadListDto) (*d.Data, error) { - var data *e.Registration - var dataList []e.Registration + var data *e.Registrator + var dataList []e.Registrator var metaList *e.MetaDto var err error @@ -119,7 +119,7 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { } func ReadDetail(input e.ReadDetailDto) (*d.Data, error) { - var data *e.Registration + var data *e.Registrator var err error event := pl.Event{ @@ -167,7 +167,7 @@ func ReadDetail(input e.ReadDetailDto) (*d.Data, error) { func Update(input e.UpdateDto) (*d.Data, error) { rdDto := e.ReadDetailDto{Id: input.Id} - var data *e.Registration + var data *e.Registrator var err error event := pl.Event{ @@ -223,7 +223,7 @@ func Update(input e.UpdateDto) (*d.Data, error) { func Delete(input e.DeleteDto) (*d.Data, error) { rdDto := e.ReadDetailDto{Id: &input.Id} - var data *e.Registration + var data *e.Registrator var err error event := pl.Event{ diff --git a/internal/use-case/main-use-case/registration/helper.go b/internal/use-case/main-use-case/registrator/helper.go similarity index 83% rename from internal/use-case/main-use-case/registration/helper.go rename to internal/use-case/main-use-case/registrator/helper.go index 186e7f44..68482b0b 100644 --- a/internal/use-case/main-use-case/registration/helper.go +++ b/internal/use-case/main-use-case/registrator/helper.go @@ -2,13 +2,13 @@ DESCRIPTION: Any functions that are used internally by the use-case */ -package doctor +package registrator import ( - e "simrs-vx/internal/domain/main-entities/registration" + e "simrs-vx/internal/domain/main-entities/registrator" ) -func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Registration) { +func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Registrator) { var inputSrc *e.CreateDto if inputT, ok := any(input).(*e.CreateDto); ok { inputSrc = inputT diff --git a/internal/use-case/main-use-case/registration/lib.go b/internal/use-case/main-use-case/registrator/lib.go similarity index 84% rename from internal/use-case/main-use-case/registration/lib.go rename to internal/use-case/main-use-case/registrator/lib.go index 7d28bb9a..694f9441 100644 --- a/internal/use-case/main-use-case/registration/lib.go +++ b/internal/use-case/main-use-case/registrator/lib.go @@ -1,8 +1,8 @@ -package doctor +package registrator import ( "fmt" - e "simrs-vx/internal/domain/main-entities/registration" + e "simrs-vx/internal/domain/main-entities/registrator" plh "simrs-vx/pkg/lib-helper" pl "simrs-vx/pkg/logger" @@ -13,10 +13,10 @@ import ( "gorm.io/gorm" ) -func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registration, error) { +func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registrator, error) { pl.SetLogInfo(event, nil, "started", "DBCreate") - data := e.Registration{} + data := e.Registrator{} setData(&input, &data) var tx *gorm.DB @@ -34,9 +34,9 @@ func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registr return &data, nil } -func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Registration, *e.MetaDto, error) { +func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Registrator, *e.MetaDto, error) { pl.SetLogInfo(event, input, "started", "DBReadList") - data := []e.Registration{} + data := []e.Registrator{} pagination := gh.Pagination{} count := int64(0) meta := e.MetaDto{} @@ -49,7 +49,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Re } tx = tx. - Model(&e.Registration{}). + Model(&e.Registrator{}). Scopes(gh.Preload(input.Includes)). Scopes(gh.Filter(input.FilterDto)). Count(&count). @@ -71,9 +71,9 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Re return data, &meta, nil } -func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registration, error) { +func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e.Registrator, error) { pl.SetLogInfo(event, input, "started", "DBReadDetail") - data := e.Registration{} + data := e.Registrator{} var tx *gorm.DB if len(dbx) > 0 { @@ -99,7 +99,7 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e return &data, nil } -func UpdateData(input e.UpdateDto, data *e.Registration, event *pl.Event, dbx ...*gorm.DB) error { +func UpdateData(input e.UpdateDto, data *e.Registrator, event *pl.Event, dbx ...*gorm.DB) error { pl.SetLogInfo(event, data, "started", "DBUpdate") setData(&input, data) @@ -124,7 +124,7 @@ func UpdateData(input e.UpdateDto, data *e.Registration, event *pl.Event, dbx .. return nil } -func DeleteData(data *e.Registration, event *pl.Event, dbx ...*gorm.DB) error { +func DeleteData(data *e.Registrator, event *pl.Event, dbx ...*gorm.DB) error { pl.SetLogInfo(event, data, "started", "DBDelete") var tx *gorm.DB if len(dbx) > 0 { @@ -156,13 +156,13 @@ func GetIdByUserId(user_id *uint, event *pl.Event, dbx ...*gorm.DB) (*uint, erro tx = dg.I } - var doctor_id uint + var registrator_id uint - err := tx.Model(&e.Registration{}). - Select("\"Doctor\".\"Id\" as doctor_id"). + err := tx.Model(&e.Registrator{}). + Select("\"Doctor\".\"Id\" as registrator_id"). Joins("JOIN \"Employee\" as e ON e.\"Id\" = \"Doctor\".\"Employee_Id\""). Where("e.\"User_Id\" = ?", user_id). - Scan(&doctor_id).Error + Scan(®istrator_id).Error if err != nil { event.Status = "failed" @@ -175,5 +175,5 @@ func GetIdByUserId(user_id *uint, event *pl.Event, dbx ...*gorm.DB) (*uint, erro } pl.SetLogInfo(event, nil, "complete") - return &doctor_id, nil + return ®istrator_id, nil } diff --git a/internal/use-case/main-use-case/registration/middleware-runner.go b/internal/use-case/main-use-case/registrator/middleware-runner.go similarity index 87% rename from internal/use-case/main-use-case/registration/middleware-runner.go rename to internal/use-case/main-use-case/registrator/middleware-runner.go index d68f8de9..e0488ca7 100644 --- a/internal/use-case/main-use-case/registration/middleware-runner.go +++ b/internal/use-case/main-use-case/registrator/middleware-runner.go @@ -1,7 +1,7 @@ -package doctor +package registrator import ( - e "simrs-vx/internal/domain/main-entities/registration" + e "simrs-vx/internal/domain/main-entities/registrator" pl "simrs-vx/pkg/logger" pu "simrs-vx/pkg/use-case-helper" @@ -23,7 +23,7 @@ func newMiddlewareRunner(event *pl.Event, tx *gorm.DB) *middlewareRunner { } // ExecuteCreateMiddleware executes create middleware -func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e.CreateDto, data *e.Registration) error { +func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e.CreateDto, data *e.Registrator) error { for _, middleware := range middlewares { logData := pu.GetLogData(input, data) @@ -38,7 +38,7 @@ func (me *middlewareRunner) RunCreateMiddleware(middlewares []createMw, input *e return nil } -func (me *middlewareRunner) RunReadListMiddleware(middlewares []readListMw, input *e.ReadListDto, data *e.Registration) error { +func (me *middlewareRunner) RunReadListMiddleware(middlewares []readListMw, input *e.ReadListDto, data *e.Registrator) error { for _, middleware := range middlewares { logData := pu.GetLogData(input, data) @@ -53,7 +53,7 @@ func (me *middlewareRunner) RunReadListMiddleware(middlewares []readListMw, inpu return nil } -func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { +func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registrator) error { for _, middleware := range middlewares { logData := pu.GetLogData(input, data) @@ -68,7 +68,7 @@ func (me *middlewareRunner) RunReadDetailMiddleware(middlewares []readDetailMw, return nil } -func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { +func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registrator) error { for _, middleware := range middlewares { logData := pu.GetLogData(input, data) @@ -83,7 +83,7 @@ func (me *middlewareRunner) RunUpdateMiddleware(middlewares []readDetailMw, inpu return nil } -func (me *middlewareRunner) RunDeleteMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registration) error { +func (me *middlewareRunner) RunDeleteMiddleware(middlewares []readDetailMw, input *e.ReadDetailDto, data *e.Registrator) error { for _, middleware := range middlewares { logData := pu.GetLogData(input, data) diff --git a/internal/use-case/main-use-case/registration/middleware.go b/internal/use-case/main-use-case/registrator/middleware.go similarity index 91% rename from internal/use-case/main-use-case/registration/middleware.go rename to internal/use-case/main-use-case/registrator/middleware.go index b6bfc120..c47ed8e0 100644 --- a/internal/use-case/main-use-case/registration/middleware.go +++ b/internal/use-case/main-use-case/registrator/middleware.go @@ -1,4 +1,4 @@ -package doctor +package registrator // example of middleware // func init() { diff --git a/internal/use-case/main-use-case/registration/tycovar.go b/internal/use-case/main-use-case/registrator/tycovar.go similarity index 75% rename from internal/use-case/main-use-case/registration/tycovar.go rename to internal/use-case/main-use-case/registrator/tycovar.go index bda8f4f8..565e186f 100644 --- a/internal/use-case/main-use-case/registration/tycovar.go +++ b/internal/use-case/main-use-case/registrator/tycovar.go @@ -6,27 +6,27 @@ In this sample it also provides type and variable regarding the needs of the middleware to separate from main use-case which has the basic CRUD functionality. The purpose of this is to make the code more maintainable. */ -package doctor +package registrator import ( "gorm.io/gorm" - e "simrs-vx/internal/domain/main-entities/registration" + e "simrs-vx/internal/domain/main-entities/registrator" ) type createMw struct { Name string - Func func(input *e.CreateDto, data *e.Registration, tx *gorm.DB) error + Func func(input *e.CreateDto, data *e.Registrator, tx *gorm.DB) error } type readListMw struct { Name string - Func func(input *e.ReadListDto, data *e.Registration, tx *gorm.DB) error + Func func(input *e.ReadListDto, data *e.Registrator, tx *gorm.DB) error } type readDetailMw struct { Name string - Func func(input *e.ReadDetailDto, data *e.Registration, tx *gorm.DB) error + Func func(input *e.ReadDetailDto, data *e.Registrator, tx *gorm.DB) error } type UpdateMw = readDetailMw diff --git a/internal/use-case/main-use-case/user/case.go b/internal/use-case/main-use-case/user/case.go index f360336a..1ea8c6ea 100644 --- a/internal/use-case/main-use-case/user/case.go +++ b/internal/use-case/main-use-case/user/case.go @@ -13,7 +13,7 @@ import ( en "simrs-vx/internal/domain/main-entities/nurse" et "simrs-vx/internal/domain/main-entities/nutritionist" ep "simrs-vx/internal/domain/main-entities/pharmacist" - er "simrs-vx/internal/domain/main-entities/registration" + er "simrs-vx/internal/domain/main-entities/registrator" esi "simrs-vx/internal/domain/main-entities/specialist-intern" e "simrs-vx/internal/domain/main-entities/user" @@ -27,7 +27,7 @@ import ( upa "simrs-vx/internal/use-case/main-use-case/person-address" upc "simrs-vx/internal/use-case/main-use-case/person-contact" up "simrs-vx/internal/use-case/main-use-case/pharmacist" - ur "simrs-vx/internal/use-case/main-use-case/registration" + ur "simrs-vx/internal/use-case/main-use-case/registrator" usi "simrs-vx/internal/use-case/main-use-case/specialist-intern" erc "simrs-vx/internal/domain/references/common"