// Code generated by go-swagger; DO NOT EDIT.

// All Code Copyright(c) 2018-2020 by Taxnexus, Inc.
// All rights reserved worldwide.
// Proprietary product; unlicensed use is not allowed

package blaze_models

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"strconv"

	"github.com/go-openapi/errors"
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/swag"
)

// VendorResponse vendor response
//
// swagger:model VendorResponse
type VendorResponse struct {

	// active
	Active bool `json:"active,omitempty"`

	// additional address list
	AdditionalAddressList []string `json:"additionalAddressList"`

	// address
	Address *VendorResponseAddress `json:"address,omitempty"`

	// arms length type
	ArmsLengthType string `json:"armsLengthType,omitempty"`

	// assets
	Assets []*VendorResponseAssetsItems0 `json:"assets"`

	// back order enabled
	BackOrderEnabled bool `json:"backOrderEnabled,omitempty"`

	// brand list
	BrandList []string `json:"brandList"`

	// brands
	Brands []string `json:"brands"`

	// company Id
	CompanyID string `json:"companyId,omitempty"`

	// company licenses
	CompanyLicenses []string `json:"companyLicenses"`

	// company type
	CompanyType string `json:"companyType,omitempty"`

	// created
	Created int64 `json:"created,omitempty"`

	// credits
	Credits float64 `json:"credits,omitempty"`

	// dba name
	DbaName string `json:"dbaName,omitempty"`

	// deleted
	Deleted bool `json:"deleted,omitempty"`

	// description
	Description string `json:"description,omitempty"`

	// email
	Email string `json:"email,omitempty"`

	// fax
	Fax string `json:"fax,omitempty"`

	// first name
	FirstName string `json:"firstName,omitempty"`

	// id
	ID string `json:"id,omitempty"`

	// import Id
	ImportID string `json:"importId,omitempty"`

	// last name
	LastName string `json:"lastName,omitempty"`

	// licence type
	LicenceType string `json:"licenceType,omitempty"`

	// license expiration date
	LicenseExpirationDate float64 `json:"licenseExpirationDate,omitempty"`

	// license number
	LicenseNumber string `json:"licenseNumber,omitempty"`

	// mobile number
	MobileNumber string `json:"mobileNumber,omitempty"`

	// modified
	Modified int64 `json:"modified,omitempty"`

	// name
	Name string `json:"name,omitempty"`

	// notes
	Notes []string `json:"notes"`

	// phone
	Phone string `json:"phone,omitempty"`

	// qb desktop ref
	QbDesktopRef string `json:"qbDesktopRef,omitempty"`

	// qb vendor ref
	QbVendorRef []string `json:"qbVendorRef"`

	// related entity
	RelatedEntity bool `json:"relatedEntity,omitempty"`

	// updated
	Updated bool `json:"updated,omitempty"`

	// vendor key
	VendorKey string `json:"vendorKey,omitempty"`

	// vendor type
	VendorType string `json:"vendorType,omitempty"`

	// website
	Website string `json:"website,omitempty"`
}

// Validate validates this vendor response
func (m *VendorResponse) Validate(formats strfmt.Registry) error {
	var res []error

	if err := m.validateAddress(formats); err != nil {
		res = append(res, err)
	}

	if err := m.validateAssets(formats); err != nil {
		res = append(res, err)
	}

	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}

func (m *VendorResponse) validateAddress(formats strfmt.Registry) error {

	if swag.IsZero(m.Address) { // not required
		return nil
	}

	if m.Address != nil {
		if err := m.Address.Validate(formats); err != nil {
			if ve, ok := err.(*errors.Validation); ok {
				return ve.ValidateName("address")
			}
			return err
		}
	}

	return nil
}

func (m *VendorResponse) validateAssets(formats strfmt.Registry) error {

	if swag.IsZero(m.Assets) { // not required
		return nil
	}

	for i := 0; i < len(m.Assets); i++ {
		if swag.IsZero(m.Assets[i]) { // not required
			continue
		}

		if m.Assets[i] != nil {
			if err := m.Assets[i].Validate(formats); err != nil {
				if ve, ok := err.(*errors.Validation); ok {
					return ve.ValidateName("assets" + "." + strconv.Itoa(i))
				}
				return err
			}
		}

	}

	return nil
}

// MarshalBinary interface implementation
func (m *VendorResponse) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *VendorResponse) UnmarshalBinary(b []byte) error {
	var res VendorResponse
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}

// VendorResponseAddress vendor response address
//
// swagger:model VendorResponseAddress
type VendorResponseAddress struct {

	// address
	Address string `json:"address,omitempty"`

	// city
	City string `json:"city,omitempty"`

	// company Id
	CompanyID string `json:"companyId,omitempty"`

	// country
	Country string `json:"country,omitempty"`

	// created
	Created int64 `json:"created,omitempty"`

	// deleted
	Deleted bool `json:"deleted,omitempty"`

	// id
	ID string `json:"id,omitempty"`

	// modified
	Modified int64 `json:"modified,omitempty"`

	// state
	State string `json:"state,omitempty"`

	// updated
	Updated bool `json:"updated,omitempty"`

	// zip code
	ZipCode string `json:"zipCode,omitempty"`
}

// Validate validates this vendor response address
func (m *VendorResponseAddress) Validate(formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *VendorResponseAddress) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *VendorResponseAddress) UnmarshalBinary(b []byte) error {
	var res VendorResponseAddress
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}

// VendorResponseAssetsItems0 vendor response assets items0
//
// swagger:model VendorResponseAssetsItems0
type VendorResponseAssetsItems0 struct {

	// active
	Active bool `json:"active,omitempty"`

	// asset type
	AssetType string `json:"assetType,omitempty"`

	// company Id
	CompanyID string `json:"companyId,omitempty"`

	// created
	Created int64 `json:"created,omitempty"`

	// deleted
	Deleted bool `json:"deleted,omitempty"`

	// id
	ID string `json:"id,omitempty"`

	// key
	Key string `json:"key,omitempty"`

	// large URL
	LargeURL string `json:"largeURL,omitempty"`

	// large x2 URL
	LargeX2URL string `json:"largeX2URL,omitempty"`

	// medium URL
	MediumURL string `json:"mediumURL,omitempty"`

	// modified
	Modified int64 `json:"modified,omitempty"`

	// name
	Name string `json:"name,omitempty"`

	// priority
	Priority float64 `json:"priority,omitempty"`

	// secured
	Secured bool `json:"secured,omitempty"`

	// thumb URL
	ThumbURL string `json:"thumbURL,omitempty"`

	// type
	Type string `json:"type,omitempty"`

	// updated
	Updated bool `json:"updated,omitempty"`
}

// Validate validates this vendor response assets items0
func (m *VendorResponseAssetsItems0) Validate(formats strfmt.Registry) error {
	return nil
}

// MarshalBinary interface implementation
func (m *VendorResponseAssetsItems0) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

// UnmarshalBinary interface implementation
func (m *VendorResponseAssetsItems0) UnmarshalBinary(b []byte) error {
	var res VendorResponseAssetsItems0
	if err := swag.ReadJSON(b, &res); err != nil {
		return err
	}
	*m = res
	return nil
}
