39 lines
944 B
Go
39 lines
944 B
Go
package productdto
|
|
|
|
import (
|
|
"api/libs/logger"
|
|
"errors"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
type ProductDto struct {
|
|
Nome string `json:"nome" validate:"required"`
|
|
Codigo string `json:"codigo" validate:"required"`
|
|
EstoqueTotal int64 `json:"estoqueTotal" validate:"required"`
|
|
EstoqueCorte int64 `json:"estoqueCorte" validate:"required"`
|
|
PrecoDe float32 `json:"precoDe" validate:"required"`
|
|
PrecoPor float32 `json:"precoPor" validate:"required"`
|
|
}
|
|
|
|
func (d *ProductDto) Validate() error {
|
|
|
|
validate := validator.New()
|
|
|
|
err := validate.Struct(d)
|
|
if err != nil {
|
|
if _, ok := err.(*validator.InvalidValidationError); ok {
|
|
logger.Development.Info(err.Error())
|
|
}
|
|
for _, e := range err.(validator.ValidationErrors) {
|
|
err = errors.New(e.Field() + " " + e.Tag())
|
|
}
|
|
}
|
|
|
|
if d.PrecoPor > d.PrecoDe {
|
|
err = errors.New(`o "preço de" não pode ser inferior ao "preço por"`)
|
|
}
|
|
|
|
return err
|
|
}
|