From 2d8fcba59f006b907da9288e7379be72339b8570 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Fri, 29 Aug 2025 15:36:37 +0700 Subject: [PATCH] feat (device, material): add create item --- .../use-case/main-use-case/device/case.go | 3 +++ .../use-case/main-use-case/device/helper.go | 27 +++++++++++++++++++ .../use-case/main-use-case/material/case.go | 3 +++ .../use-case/main-use-case/material/helper.go | 27 +++++++++++++++++++ 4 files changed, 60 insertions(+) diff --git a/internal/use-case/main-use-case/device/case.go b/internal/use-case/main-use-case/device/case.go index cb40c1eb..ad218571 100644 --- a/internal/use-case/main-use-case/device/case.go +++ b/internal/use-case/main-use-case/device/case.go @@ -34,6 +34,9 @@ func Create(input e.CreateDto) (*d.Data, error) { return err } + if err := createItem(&input, &event, tx); err != nil { + return err + } if resData, err := CreateData(input, &event, tx); err != nil { return err } else { diff --git a/internal/use-case/main-use-case/device/helper.go b/internal/use-case/main-use-case/device/helper.go index 137425b1..63d51664 100644 --- a/internal/use-case/main-use-case/device/helper.go +++ b/internal/use-case/main-use-case/device/helper.go @@ -6,6 +6,16 @@ package device import ( e "simrs-vx/internal/domain/main-entities/device" + ei "simrs-vx/internal/domain/main-entities/item" + + ui "simrs-vx/internal/use-case/main-use-case/item" + + ero "simrs-vx/internal/domain/references/organization" + + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" + + "gorm.io/gorm" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Device) { @@ -22,3 +32,20 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Device) { data.Uom_Code = inputSrc.Uom_Code data.Item_Id = inputSrc.Item_Id } + +func createItem(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error { + itemCreate := ei.CreateDto{ + Code: pu.AddPrefix("dev-", input.Code), + Name: input.Name, + ItemGroup_Code: ero.ITGCDevice, + Uom_Code: &input.Uom_Code, + Infra_Id: input.Infra_Id, + } + item, err := ui.CreateData(itemCreate, event, tx) + if err != nil { + return err + } + + input.Item_Id = &item.Id + return nil +} diff --git a/internal/use-case/main-use-case/material/case.go b/internal/use-case/main-use-case/material/case.go index f855f044..ecf52cd1 100644 --- a/internal/use-case/main-use-case/material/case.go +++ b/internal/use-case/main-use-case/material/case.go @@ -34,6 +34,9 @@ func Create(input e.CreateDto) (*d.Data, error) { return err } + if err := createItem(&input, &event, tx); err != nil { + return err + } if resData, err := CreateData(input, &event, tx); err != nil { return err } else { diff --git a/internal/use-case/main-use-case/material/helper.go b/internal/use-case/main-use-case/material/helper.go index 11b4900c..ce0d8a2e 100644 --- a/internal/use-case/main-use-case/material/helper.go +++ b/internal/use-case/main-use-case/material/helper.go @@ -5,7 +5,16 @@ Any functions that are used internally by the use-case package material import ( + ei "simrs-vx/internal/domain/main-entities/item" e "simrs-vx/internal/domain/main-entities/material" + + ui "simrs-vx/internal/use-case/main-use-case/item" + + ero "simrs-vx/internal/domain/references/organization" + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" + + "gorm.io/gorm" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Material) { @@ -23,3 +32,21 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Material) { data.Stock = inputSrc.Stock data.Item_Id = inputSrc.Item_Id } + +func createItem(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error { + itemCreate := ei.CreateDto{ + Code: pu.AddPrefix("mat-", input.Code), + Name: input.Name, + ItemGroup_Code: ero.ITGCMaterial, + Uom_Code: &input.Uom_Code, + Infra_Id: input.Infra_Id, + Stock: input.Stock, + } + item, err := ui.CreateData(itemCreate, event, tx) + if err != nil { + return err + } + + input.Item_Id = &item.Id + return nil +}