feat: product proto type.
This commit is contained in:
@@ -21,6 +21,7 @@ type ProductInventoryAdminController struct {
|
||||
type productInventoryPayload struct {
|
||||
ProductCode string `json:"productCode"`
|
||||
ProjectTypeCode string `json:"projectTypeCode"`
|
||||
SuiteID *uint `json:"suiteId"`
|
||||
SuiteCode string `json:"suiteCode"`
|
||||
SerialNumber *string `json:"serialNumber"`
|
||||
AssetName string `json:"assetName"`
|
||||
@@ -88,11 +89,17 @@ func (pc *ProductInventoryAdminController) Create(c *gin.Context) {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
resolvedSuiteID, resolvedSuiteCode, err := pc.resolveSuite(payload.SuiteID, payload.SuiteCode)
|
||||
if err != nil {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
record := models.ProductInventory{
|
||||
ProductCode: payload.ProductCode,
|
||||
ProjectTypeCode: payload.ProjectTypeCode,
|
||||
SuiteCode: payload.SuiteCode,
|
||||
SuiteID: resolvedSuiteID,
|
||||
SuiteCode: resolvedSuiteCode,
|
||||
SerialNumber: payload.SerialNumber,
|
||||
AssetName: payload.AssetName,
|
||||
Status: models.ProductInventoryStatus(payload.Status),
|
||||
@@ -130,10 +137,16 @@ func (pc *ProductInventoryAdminController) Update(c *gin.Context) {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
resolvedSuiteID, resolvedSuiteCode, err := pc.resolveSuite(payload.SuiteID, payload.SuiteCode)
|
||||
if err != nil {
|
||||
writeError(c, http.StatusBadRequest, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
record.ProductCode = payload.ProductCode
|
||||
record.ProjectTypeCode = payload.ProjectTypeCode
|
||||
record.SuiteCode = payload.SuiteCode
|
||||
record.SuiteID = resolvedSuiteID
|
||||
record.SuiteCode = resolvedSuiteCode
|
||||
record.SerialNumber = payload.SerialNumber
|
||||
record.AssetName = payload.AssetName
|
||||
record.Status = models.ProductInventoryStatus(payload.Status)
|
||||
@@ -219,6 +232,32 @@ func (pc *ProductInventoryAdminController) validateInventoryPayload(payload prod
|
||||
return nil
|
||||
}
|
||||
|
||||
func (pc *ProductInventoryAdminController) resolveSuite(suiteID *uint, suiteCode string) (*uint, string, error) {
|
||||
if suiteID != nil && *suiteID > 0 {
|
||||
var suite models.ProductSuite
|
||||
if err := pc.DB.First(&suite, *suiteID).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, "", errors.New("suiteId is invalid")
|
||||
}
|
||||
return nil, "", errors.New("failed to query product suite")
|
||||
}
|
||||
return &suite.ID, suite.Code, nil
|
||||
}
|
||||
|
||||
if trimmedCode := strings.TrimSpace(suiteCode); trimmedCode != "" {
|
||||
var suite models.ProductSuite
|
||||
if err := pc.DB.Where("code = ?", trimmedCode).First(&suite).Error; err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, "", errors.New("suiteCode is invalid")
|
||||
}
|
||||
return nil, "", errors.New("failed to query product suite")
|
||||
}
|
||||
return &suite.ID, suite.Code, nil
|
||||
}
|
||||
|
||||
return nil, "", nil
|
||||
}
|
||||
|
||||
func (pc *ProductInventoryAdminController) applySoldDefaults(record *models.ProductInventory) {
|
||||
if record == nil {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user