// 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"
)

// MemberResponse member response
//
// swagger:model MemberResponse
type MemberResponse struct {

	// active transaction
	ActiveTransaction float64 `json:"activeTransaction,omitempty"`

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

	// addresses
	Addresses []string `json:"addresses"`

	// agreement expired
	AgreementExpired bool `json:"agreementExpired,omitempty"`

	// anonymous
	Anonymous bool `json:"anonymous,omitempty"`

	// ban patient
	BanPatient bool `json:"banPatient,omitempty"`

	// cannabis result
	CannabisResult string `json:"cannabisResult,omitempty"`

	// care giver list
	CareGiverList []string `json:"careGiverList"`

	// care givers
	CareGivers []string `json:"careGivers"`

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

	// consumer type
	ConsumerType string `json:"consumerType,omitempty"`

	// consumer user Id
	ConsumerUserID string `json:"consumerUserId,omitempty"`

	// contracts
	Contracts []string `json:"contracts"`

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

	// current cannabis limit
	CurrentCannabisLimit string `json:"currentCannabisLimit,omitempty"`

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

	// dirty
	Dirty bool `json:"dirty,omitempty"`

	// dl expired
	DlExpired bool `json:"dlExpired,omitempty"`

	// dob
	Dob float64 `json:"dob,omitempty"`

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

	// email opt in
	EmailOptIn bool `json:"emailOptIn,omitempty"`

	// email verified
	EmailVerified bool `json:"emailVerified,omitempty"`

	// enable loyalty
	EnableLoyalty bool `json:"enableLoyalty,omitempty"`

	// enabled care giver
	EnabledCareGiver bool `json:"enabledCareGiver,omitempty"`

	// exp statuses
	ExpStatuses []string `json:"expStatuses"`

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

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

	// identifications
	Identifications []*MemberResponseIdentificationsItems0 `json:"identifications"`

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

	// in queue
	InQueue bool `json:"inQueue,omitempty"`

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

	// last visit date
	LastVisitDate int64 `json:"lastVisitDate,omitempty"`

	// lifetime points
	LifetimePoints float64 `json:"lifetimePoints,omitempty"`

	// loyalty points
	LoyaltyPoints float64 `json:"loyaltyPoints,omitempty"`

	// marketing source
	MarketingSource string `json:"marketingSource,omitempty"`

	// medical
	Medical bool `json:"medical,omitempty"`

	// member activities
	MemberActivities []string `json:"memberActivities"`

	// member group
	MemberGroup *MemberResponseMemberGroup `json:"memberGroup,omitempty"`

	// member group Id
	MemberGroupID string `json:"memberGroupId,omitempty"`

	// middle name
	MiddleName string `json:"middleName,omitempty"`

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

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

	// preferences
	Preferences []string `json:"preferences"`

	// primary phone
	PrimaryPhone string `json:"primaryPhone,omitempty"`

	// qb customer ref
	QbCustomerRef []string `json:"qbCustomerRef"`

	// qb desktop customer ref
	QbDesktopCustomerRef string `json:"qbDesktopCustomerRef,omitempty"`

	// recent products
	RecentProducts []string `json:"recentProducts"`

	// recommendation expired
	RecommendationExpired bool `json:"recommendationExpired,omitempty"`

	// recommendation expiry left
	RecommendationExpiryLeft float64 `json:"recommendationExpiryLeft,omitempty"`

	// recommendations
	Recommendations []*MemberResponseRecommendationsItems0 `json:"recommendations"`

	// region Id
	RegionID string `json:"regionId,omitempty"`

	// search text
	SearchText string `json:"searchText,omitempty"`

	// sex
	Sex float64 `json:"sex,omitempty"`

	// shop Id
	ShopID string `json:"shopId,omitempty"`

	// start date
	StartDate int64 `json:"startDate,omitempty"`

	// state cannabis limit
	StateCannabisLimit string `json:"stateCannabisLimit,omitempty"`

	// status
	Status string `json:"status,omitempty"`

	// tags
	Tags []string `json:"tags"`

	// text opt in
	TextOptIn bool `json:"textOptIn,omitempty"`

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

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

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

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

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

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

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

func (m *MemberResponse) 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 *MemberResponse) validateIdentifications(formats strfmt.Registry) error {

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

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

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

	}

	return nil
}

func (m *MemberResponse) validateMemberGroup(formats strfmt.Registry) error {

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

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

	return nil
}

func (m *MemberResponse) validateRecommendations(formats strfmt.Registry) error {

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

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

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

	}

	return nil
}

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

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

// MemberResponseAddress member response address
//
// swagger:model MemberResponseAddress
type MemberResponseAddress 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 member response address
func (m *MemberResponseAddress) Validate(formats strfmt.Registry) error {
	return nil
}

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

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

// MemberResponseIdentificationsItems0 member response identifications items0
//
// swagger:model MemberResponseIdentificationsItems0
type MemberResponseIdentificationsItems0 struct {

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

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

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

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

	// expiration date
	ExpirationDate int64 `json:"expirationDate,omitempty"`

	// front photo
	FrontPhoto string `json:"frontPhoto,omitempty"`

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

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

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

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

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

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

// Validate validates this member response identifications items0
func (m *MemberResponseIdentificationsItems0) Validate(formats strfmt.Registry) error {
	var res []error

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

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

func (m *MemberResponseIdentificationsItems0) 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 *MemberResponseIdentificationsItems0) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

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

// MemberResponseIdentificationsItems0AssetsItems0 member response identifications items0 assets items0
//
// swagger:model MemberResponseIdentificationsItems0AssetsItems0
type MemberResponseIdentificationsItems0AssetsItems0 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 member response identifications items0 assets items0
func (m *MemberResponseIdentificationsItems0AssetsItems0) Validate(formats strfmt.Registry) error {
	return nil
}

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

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

// MemberResponseMemberGroup member response member group
//
// swagger:model MemberResponseMemberGroup
type MemberResponseMemberGroup struct {

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

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

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

	// default group
	DefaultGroup bool `json:"defaultGroup,omitempty"`

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

	// dirty
	Dirty bool `json:"dirty,omitempty"`

	// discount
	Discount float64 `json:"discount,omitempty"`

	// discount type
	DiscountType string `json:"discountType,omitempty"`

	// enable promotion
	EnablePromotion bool `json:"enablePromotion,omitempty"`

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

	// member count
	MemberCount float64 `json:"memberCount,omitempty"`

	// member count email opt in
	MemberCountEmailOptIn float64 `json:"memberCountEmailOptIn,omitempty"`

	// member count text opt in
	MemberCountTextOptIn float64 `json:"memberCountTextOptIn,omitempty"`

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

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

	// promotion Id
	PromotionID string `json:"promotionId,omitempty"`

	// shop Id
	ShopID string `json:"shopId,omitempty"`

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

// Validate validates this member response member group
func (m *MemberResponseMemberGroup) Validate(formats strfmt.Registry) error {
	return nil
}

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

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

// MemberResponseRecommendationsItems0 member response recommendations items0
//
// swagger:model MemberResponseRecommendationsItems0
type MemberResponseRecommendationsItems0 struct {

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

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

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

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

	// doctor
	Doctor string `json:"doctor,omitempty"`

	// doctor Id
	DoctorID string `json:"doctorId,omitempty"`

	// expiration date
	ExpirationDate string `json:"expirationDate,omitempty"`

	// front photo
	FrontPhoto string `json:"frontPhoto,omitempty"`

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

	// issue date
	IssueDate string `json:"issueDate,omitempty"`

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

	// recommendation number
	RecommendationNumber string `json:"recommendationNumber,omitempty"`

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

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

	// verified
	Verified bool `json:"verified,omitempty"`

	// verify method
	VerifyMethod string `json:"verifyMethod,omitempty"`

	// verify phone number
	VerifyPhoneNumber string `json:"verifyPhoneNumber,omitempty"`

	// verify website
	VerifyWebsite string `json:"verifyWebsite,omitempty"`
}

// Validate validates this member response recommendations items0
func (m *MemberResponseRecommendationsItems0) Validate(formats strfmt.Registry) error {
	var res []error

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

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

func (m *MemberResponseRecommendationsItems0) 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 *MemberResponseRecommendationsItems0) MarshalBinary() ([]byte, error) {
	if m == nil {
		return nil, nil
	}
	return swag.WriteJSON(m)
}

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

// MemberResponseRecommendationsItems0AssetsItems0 member response recommendations items0 assets items0
//
// swagger:model MemberResponseRecommendationsItems0AssetsItems0
type MemberResponseRecommendationsItems0AssetsItems0 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 member response recommendations items0 assets items0
func (m *MemberResponseRecommendationsItems0AssetsItems0) Validate(formats strfmt.Registry) error {
	return nil
}

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

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