feat (medicine): wip
This commit is contained in:
@@ -10,15 +10,16 @@ import (
|
||||
)
|
||||
|
||||
type CreateDto struct {
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
MedicineGroup_Code *string `json:"medicineGroup_code"`
|
||||
MedicineMethod_Code *string `json:"medicineMethod_code"`
|
||||
Uom_Code *string `json:"uom_code"`
|
||||
Dose uint8 `json:"dose"`
|
||||
Infra_Id *uint16 `json:"infra_id"`
|
||||
Stock *int `json:"stock"`
|
||||
Item_Id *uint `json:"item_id"`
|
||||
Code string `json:"code"`
|
||||
Name string `json:"name"`
|
||||
MedicineGroup_Code *string `json:"medicineGroup_code"`
|
||||
MedicineMethod_Code *string `json:"medicineMethod_code"`
|
||||
Uom_Code *string `json:"uom_code"`
|
||||
Dose uint8 `json:"dose"`
|
||||
Infra_Id *uint16 `json:"infra_id"`
|
||||
Stock *int `json:"stock"`
|
||||
Item_Id *uint `json:"item_id"`
|
||||
InsuranceCompany_Code *string `json:"insuranceCompany_code"`
|
||||
}
|
||||
|
||||
type ReadListDto struct {
|
||||
|
||||
@@ -48,6 +48,7 @@ import (
|
||||
itemprice "simrs-vx/internal/interface/main-handler/item-price"
|
||||
mcusrc "simrs-vx/internal/interface/main-handler/mcu-src"
|
||||
mcusrccategory "simrs-vx/internal/interface/main-handler/mcu-src-category"
|
||||
medicine "simrs-vx/internal/interface/main-handler/medicine"
|
||||
medicinegroup "simrs-vx/internal/interface/main-handler/medicine-group"
|
||||
medicinemethod "simrs-vx/internal/interface/main-handler/medicine-method"
|
||||
pharmacycompany "simrs-vx/internal/interface/main-handler/pharmacy-company"
|
||||
@@ -122,6 +123,7 @@ func SetRoutes() http.Handler {
|
||||
hc.RegCrud(r, "/v1/mcu-src", mcusrc.O)
|
||||
hc.RegCrud(r, "/v1/ethnic", ethnic.O)
|
||||
hc.RegCrud(r, "/v1/insurance-company", insurancecompany.O)
|
||||
hc.RegCrud(r, "/v1/medicine", medicine.O)
|
||||
|
||||
hc.RegCrud(r, "/v1/village", village.O)
|
||||
hc.RegCrud(r, "/v1/district", district.O)
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package medicine
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
rw "github.com/karincake/risoles"
|
||||
sf "github.com/karincake/semprit"
|
||||
|
||||
// ua "github.com/karincake/tumpeng/auth/svc"
|
||||
|
||||
e "simrs-vx/internal/domain/main-entities/medicine"
|
||||
u "simrs-vx/internal/use-case/main-use-case/medicine"
|
||||
)
|
||||
|
||||
type myBase struct{}
|
||||
|
||||
var O myBase
|
||||
|
||||
func (obj myBase) Create(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.CreateDto{}
|
||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||
return
|
||||
}
|
||||
res, err := u.Create(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
func (obj myBase) GetList(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.ReadListDto{}
|
||||
sf.UrlQueryParam(&dto, *r.URL)
|
||||
res, err := u.ReadList(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
func (obj myBase) GetDetail(w http.ResponseWriter, r *http.Request) {
|
||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||
if id <= 0 {
|
||||
return
|
||||
}
|
||||
dto := e.ReadDetailDto{}
|
||||
dto.Id = uint16(id)
|
||||
res, err := u.ReadDetail(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
func (obj myBase) Update(w http.ResponseWriter, r *http.Request) {
|
||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||
if id <= 0 {
|
||||
return
|
||||
}
|
||||
|
||||
dto := e.UpdateDto{}
|
||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||
return
|
||||
}
|
||||
dto.Id = uint(id)
|
||||
res, err := u.Update(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||
if id <= 0 {
|
||||
return
|
||||
}
|
||||
|
||||
dto := e.DeleteDto{}
|
||||
dto.Id = uint(id)
|
||||
res, err := u.Delete(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
@@ -34,6 +34,9 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := createItemWithDefaultPrice(&input, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
if resData, err := CreateData(input, &event, tx); err != nil {
|
||||
return err
|
||||
} else {
|
||||
|
||||
@@ -5,7 +5,17 @@ Any functions that are used internally by the use-case
|
||||
package medicine
|
||||
|
||||
import (
|
||||
ei "simrs-vx/internal/domain/main-entities/item"
|
||||
eip "simrs-vx/internal/domain/main-entities/item-price"
|
||||
e "simrs-vx/internal/domain/main-entities/medicine"
|
||||
|
||||
ui "simrs-vx/internal/use-case/main-use-case/item"
|
||||
uip "simrs-vx/internal/use-case/main-use-case/item-price"
|
||||
|
||||
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.Medicine) {
|
||||
@@ -26,3 +36,44 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Medicine) {
|
||||
data.Infra_Id = inputSrc.Infra_Id
|
||||
data.Stock = inputSrc.Stock
|
||||
}
|
||||
|
||||
func createItem(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
||||
igcMed := "Medicine"
|
||||
itemCreate := ei.CreateDto{
|
||||
Code: pu.AddPrefix("med-", input.Code),
|
||||
Name: input.Name,
|
||||
ItemGroup_Code: &igcMed,
|
||||
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
|
||||
}
|
||||
|
||||
func createItemPrice(input *e.CreateDto, event *pl.Event, tx *gorm.DB, item_id *uint) error {
|
||||
itemPriceCreate := eip.CreateDto{
|
||||
Item_Id: item_id,
|
||||
Price: 0,
|
||||
InsuranceCompany_Code: input.InsuranceCompany_Code,
|
||||
}
|
||||
_, err := uip.CreateData(itemPriceCreate, event, tx)
|
||||
return err
|
||||
}
|
||||
|
||||
func createItemWithDefaultPrice(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error {
|
||||
if err := createItem(input, event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := createItemPrice(input, event, tx, input.Item_Id); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -7,17 +7,3 @@ package medicine
|
||||
// CreateMw{Name: "check-data", Func: pm.CheckData},
|
||||
// )
|
||||
// }
|
||||
|
||||
// func createItemAndItemPrice(input *e.CreateDto, data *e.Medicine, tx *gorm.DB) error {
|
||||
// if input != nil {
|
||||
// itemCreate := ei.CreateDto{
|
||||
// Code: input.Code,
|
||||
// Name: input.Name,
|
||||
// ItemGroup_Code: "Medicine",
|
||||
// Uom_Code: input.Uom_Code,
|
||||
// Infra_Id: input.Infra_Id,
|
||||
// Stock: input.Stock,
|
||||
// }
|
||||
// }
|
||||
// return nil
|
||||
// }
|
||||
|
||||
@@ -76,3 +76,7 @@ func HandleMiddlewareError(event *pl.Event, mwType, mwName string, logData inter
|
||||
}
|
||||
return pl.SetLogError(event, logData)
|
||||
}
|
||||
|
||||
func AddPrefix(prefix string, str string) string {
|
||||
return prefix + str
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user