Files
shop/address/validation.go

64 lines
1.6 KiB
Go

package address
import (
"errors"
"github.com/hashicorp/go-multierror"
)
func (addr *Address) IsComplete() error {
addr.TrimSpace()
// Return error if required field is missing
var mErr *multierror.Error
if addr == nil {
mErr = multierror.Append(mErr, errors.New("address is nil"))
return mErr.ErrorOrNil()
}
errPerson := addr.Person.IsComplete()
if errPerson != nil {
mErr = multierror.Append(mErr, errPerson)
}
if addr.Street == "" {
mErr = multierror.Append(mErr, errors.New("address street is empty"))
}
if addr.StreetNumber == "" {
mErr = multierror.Append(mErr, errors.New("address street number is empty"))
}
if len(addr.ZIP) < 4 {
mErr = multierror.Append(mErr, errors.New("address zip is not valid"))
}
if addr.City == "" {
mErr = multierror.Append(mErr, errors.New("address city is empty"))
}
if addr.Country == "" {
mErr = multierror.Append(mErr, errors.New("address country is empty"))
}
if addr.CountryCode == "" {
mErr = multierror.Append(mErr, errors.New("address country code is empty"))
}
return mErr.ErrorOrNil()
}
func (person *Person) IsComplete() error {
var mErr *multierror.Error
if person == nil {
mErr = multierror.Append(mErr, errors.New("person is nil"))
return mErr.ErrorOrNil()
}
person.TrimSpace()
if person.Salutation == "" {
mErr = multierror.Append(mErr, errors.New("person salutation is empty"))
}
if person.FirstName == "" {
mErr = multierror.Append(mErr, errors.New("person firstname is empty"))
}
if person.LastName == "" {
mErr = multierror.Append(mErr, errors.New("person lastname is empty"))
}
return mErr.ErrorOrNil()
}