feat (medicine): wip
This commit is contained in:
No files matched your search
@@ -10,15 +10,16 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type CreateDto struct {
|
type CreateDto struct {
|
||||||
Code string `json:"code"`
|
Code string `json:"code"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
MedicineGroup_Code *string `json:"medicineGroup_code"`
|
MedicineGroup_Code *string `json:"medicineGroup_code"`
|
||||||
MedicineMethod_Code *string `json:"medicineMethod_code"`
|
MedicineMethod_Code *string `json:"medicineMethod_code"`
|
||||||
Uom_Code *string `json:"uom_code"`
|
Uom_Code *string `json:"uom_code"`
|
||||||
Dose uint8 `json:"dose"`
|
Dose uint8 `json:"dose"`
|
||||||
Infra_Id *uint16 `json:"infra_id"`
|
Infra_Id *uint16 `json:"infra_id"`
|
||||||
Stock *int `json:"stock"`
|
Stock *int `json:"stock"`
|
||||||
Item_Id *uint `json:"item_id"`
|
Item_Id *uint `json:"item_id"`
|
||||||
|
InsuranceCompany_Code *string `json:"insuranceCompany_code"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ReadListDto struct {
|
type ReadListDto struct {
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ import (
|
|||||||
itemprice "simrs-vx/internal/interface/main-handler/item-price"
|
itemprice "simrs-vx/internal/interface/main-handler/item-price"
|
||||||
mcusrc "simrs-vx/internal/interface/main-handler/mcu-src"
|
mcusrc "simrs-vx/internal/interface/main-handler/mcu-src"
|
||||||
mcusrccategory "simrs-vx/internal/interface/main-handler/mcu-src-category"
|
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"
|
medicinegroup "simrs-vx/internal/interface/main-handler/medicine-group"
|
||||||
medicinemethod "simrs-vx/internal/interface/main-handler/medicine-method"
|
medicinemethod "simrs-vx/internal/interface/main-handler/medicine-method"
|
||||||
pharmacycompany "simrs-vx/internal/interface/main-handler/pharmacy-company"
|
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/mcu-src", mcusrc.O)
|
||||||
hc.RegCrud(r, "/v1/ethnic", ethnic.O)
|
hc.RegCrud(r, "/v1/ethnic", ethnic.O)
|
||||||
hc.RegCrud(r, "/v1/insurance-company", insurancecompany.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/village", village.O)
|
||||||
hc.RegCrud(r, "/v1/district", district.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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := createItemWithDefaultPrice(&input, &event, tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if resData, err := CreateData(input, &event, tx); err != nil {
|
if resData, err := CreateData(input, &event, tx); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5,7 +5,17 @@ Any functions that are used internally by the use-case
|
|||||||
package medicine
|
package medicine
|
||||||
|
|
||||||
import (
|
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"
|
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) {
|
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.Infra_Id = inputSrc.Infra_Id
|
||||||
data.Stock = inputSrc.Stock
|
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},
|
// 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)
|
return pl.SetLogError(event, logData)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddPrefix(prefix string, str string) string {
|
||||||
|
return prefix + str
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user