primeira versão do e-li-nps construido com IA
This commit is contained in:
commit
06950d6e2c
34 changed files with 2524 additions and 0 deletions
66
internal/elinps/validate.go
Normal file
66
internal/elinps/validate.go
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
package elinps
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var emailRe = regexp.MustCompile(`^[^\s@]+@[^\s@]+\.[^\s@]+$`)
|
||||
|
||||
func normalizeEmail(s string) string {
|
||||
return strings.ToLower(strings.TrimSpace(s))
|
||||
}
|
||||
|
||||
func ValidatePedidoInput(in *PedidoInput) error {
|
||||
in.ProdutoNome = strings.TrimSpace(in.ProdutoNome)
|
||||
in.InquilinoCodigo = strings.TrimSpace(in.InquilinoCodigo)
|
||||
in.InquilinoNome = strings.TrimSpace(in.InquilinoNome)
|
||||
in.UsuarioCodigo = strings.TrimSpace(in.UsuarioCodigo)
|
||||
in.UsuarioNome = strings.TrimSpace(in.UsuarioNome)
|
||||
in.UsuarioTelefone = strings.TrimSpace(in.UsuarioTelefone)
|
||||
in.UsuarioEmail = normalizeEmail(in.UsuarioEmail)
|
||||
|
||||
if in.ProdutoNome == "" || len(in.ProdutoNome) > 64 {
|
||||
return errors.New("produto_nome invalido")
|
||||
}
|
||||
if in.InquilinoCodigo == "" || len(in.InquilinoCodigo) > 64 {
|
||||
return errors.New("inquilino_codigo invalido")
|
||||
}
|
||||
if in.InquilinoNome == "" || len(in.InquilinoNome) > 128 {
|
||||
return errors.New("inquilino_nome invalido")
|
||||
}
|
||||
if in.UsuarioCodigo == "" || len(in.UsuarioCodigo) > 64 {
|
||||
return errors.New("usuario_codigo invalido")
|
||||
}
|
||||
if in.UsuarioNome == "" || len(in.UsuarioNome) > 128 {
|
||||
return errors.New("usuario_nome invalido")
|
||||
}
|
||||
// E-mail passa a ser opcional: o controle de exibição é por
|
||||
// (produto + inquilino_codigo + usuario_codigo).
|
||||
if in.UsuarioEmail != "" {
|
||||
if len(in.UsuarioEmail) > 254 || !emailRe.MatchString(in.UsuarioEmail) {
|
||||
return errors.New("usuario_email invalido")
|
||||
}
|
||||
}
|
||||
if len(in.UsuarioTelefone) > 64 {
|
||||
return errors.New("usuario_telefone invalido")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func ValidatePatchInput(in *PatchInput) error {
|
||||
if in.Nota != nil {
|
||||
if *in.Nota < 1 || *in.Nota > 10 {
|
||||
return errors.New("nota invalida")
|
||||
}
|
||||
}
|
||||
if in.Justificativa != nil {
|
||||
j := strings.TrimSpace(*in.Justificativa)
|
||||
if len(j) > 2000 {
|
||||
return errors.New("justificativa muito longa")
|
||||
}
|
||||
*in.Justificativa = j
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue