From d3bca381043f53123887c0b36dff409924cc4c91 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Tue, 30 Sep 2025 21:20:32 +0700 Subject: [PATCH] feat (medication-item): add qty calculation if intervalMultiplier is not nil --- .../main-entities/medication-item/dto.go | 25 ++++++++++--------- .../main-use-case/medication-item/helper.go | 11 ++++++++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/internal/domain/main-entities/medication-item/dto.go b/internal/domain/main-entities/medication-item/dto.go index c90be314..a43473d2 100644 --- a/internal/domain/main-entities/medication-item/dto.go +++ b/internal/domain/main-entities/medication-item/dto.go @@ -9,18 +9,19 @@ import ( ) type CreateDto struct { - Medication_Id *uint `json:"medication_id"` - IsMix bool `json:"isMix"` - Medicine_Id *uint `json:"medicine_id"` - MedicineMix_Id *uint `json:"medicineMix_id"` - Frequency *uint16 `json:"frequency"` - Dose float64 `json:"dose"` - Usage string `json:"usage"` - Interval uint8 `json:"interval"` - IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` - IsRedeemed bool `json:"isRedeemed"` - Quantity float64 `json:"quantity"` - Note *string `json:"note" gorm:"size:1024"` + Medication_Id *uint `json:"medication_id"` + IsMix bool `json:"isMix"` + Medicine_Id *uint `json:"medicine_id"` + MedicineMix_Id *uint `json:"medicineMix_id"` + Frequency *uint16 `json:"frequency"` + Dose float64 `json:"dose"` + Usage string `json:"usage"` + Interval uint8 `json:"interval"` + IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` + IsRedeemed bool `json:"isRedeemed"` + Quantity float64 `json:"quantity"` + Note *string `json:"note" gorm:"size:1024"` + IntervalMultiplier *uint16 `json:"intervalMultiplier"` } type ReadListDto struct { diff --git a/internal/use-case/main-use-case/medication-item/helper.go b/internal/use-case/main-use-case/medication-item/helper.go index aa3833d9..dcee2cac 100644 --- a/internal/use-case/main-use-case/medication-item/helper.go +++ b/internal/use-case/main-use-case/medication-item/helper.go @@ -29,4 +29,15 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MedicationItem) { data.IsRedeemed = inputSrc.IsRedeemed data.Quantity = inputSrc.Quantity data.Note = inputSrc.Note + + if inputSrc.IntervalMultiplier != nil { + data.Quantity = countQty(*inputSrc) + } +} + +func countQty(input e.CreateDto) float64 { + if input.Frequency != nil && input.Dose != 0 && input.IntervalMultiplier != nil { + return (float64(*input.Frequency) * float64(input.Dose)) * float64(*input.IntervalMultiplier) + } + return 0 }