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

package models

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

import (
	"encoding/json"
	"strconv"

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

// Reseller reseller
//
// swagger:model Reseller
type Reseller struct {

	// abacus code
	AbacusCode string `json:"AbacusCode,omitempty" gorm:"default:''"`

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

	// Api link
	APILink string `json:"ApiLink,omitempty" gorm:"-"`

	// bill contact
	BillContact string `json:"BillContact,omitempty" gorm:"default:''"`

	// ISO-4217 currency code
	// Enum: [AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BOV BRL BSD BTN BWP BYN BZD CAD CDF CHE CHF CHW CLF CLP CNY COP COU CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS INR IQD IRR ISK JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRU MUR MVR MWK MXN MXV MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SOS SRD SSP STN SVC SYP SZL THB TJS TMT TND TOP TRY TTD TWD TZS UAH UGX USD USN UYI UYU UYW UZS VES VND VUV WST XAF XAG XAU XBA XBB XBC XBD XCD XDR XOF XPD XPF XPT XSU XTS XUA XXX YER ZAR ZMW ZWL]
	BillCurrency *string `json:"BillCurrency,omitempty" gorm:"default:CHF"`

	// bill period
	// Enum: [daily weekly bi-weekly monthly bi-monthly quarterly semi-annually annually]
	BillPeriod *string `json:"BillPeriod,omitempty" gorm:"default:monthly"`

	// billable
	Billable *bool `json:"Billable,omitempty" gorm:"default:true"`

	// billing code
	BillingCode string `json:"BillingCode,omitempty" gorm:"default:''"`

	// cancel date
	// Format: date
	CancelDate strfmt.Date `json:"CancelDate,omitempty" gorm:"type:date;default:2100-12-31"`

	// contract end
	// Format: date
	ContractEnd strfmt.Date `json:"ContractEnd,omitempty" gorm:"type:date;default:2030-12-31"`

	// contract start
	// Format: date
	ContractStart strfmt.Date `json:"ContractStart,omitempty" gorm:"type:date;default:2019-01-01"`

	// customers
	Customers []*Customer `json:"Customers" gorm:"-"`

	// deleted at
	// Format: datetime
	DeletedAt *strfmt.DateTime `json:"DeletedAt,omitempty" gorm:"type:timestamptz"`

	// discount
	Discount float64 `json:"Discount,omitempty" gorm:"type:numeric(23,13);default:0.0"`

	// email bcc
	// Format: email
	EmailBcc strfmt.Email `json:"EmailBcc,omitempty" gorm:"default:''"`

	// email cc
	// Format: email
	EmailCc strfmt.Email `json:"EmailCc,omitempty" gorm:"default:''"`

	// email to
	// Format: email
	EmailTo strfmt.Email `json:"EmailTo,omitempty" gorm:"default:''"`

	// invoice mode
	// Enum: [email post]
	InvoiceMode *string `json:"InvoiceMode,omitempty" gorm:"default:email"`

	// is active
	IsActive *bool `json:"IsActive,omitempty" gorm:"default:true"`

	// ISO-369-1 alpha-2 language codes
	// Enum: [AA AB AE AF AK AM AN AR AS AV AY AZ BA BE BG BH BI BM BN BO BR BS CA CE CH CO CR CS CU CV CY DA DE DV DZ EE EL EN EO ES ET EU FA FF FI FJ FO FR FY GA GD GL GN GU GV HA HE HI HO HR HT HU HY HZ IA ID IE IG II IK IO IS IT IU JA JV KA KG KI KJ KK KL KM KN KO KR KS KU KV KW KY LA LB LG LI LN LO LT LU LV MG MH MI MK ML MN MR MS MT MY NA NB ND NE NG NL NN NO NR NV NY OC OJ OM OR OS PA PI PL PS PT QU RM RN RO RU RW SA SC SD SE SG SI SK SL SM SN SO SQ SR SS ST SU SV SW TA TE TG TH TI TK TL TN TO TR TS TT TW TY UG UK UR UZ VE VI VO WA WO XH YI YO ZA ZH ZU]
	Language *string `json:"Language,omitempty" gorm:"default:DE"`

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

	// parent reseller Id
	ParentResellerID string `json:"ParentResellerId,omitempty" gorm:"default:''"`

	// plan Id
	PlanID string `json:"PlanId,omitempty" gorm:"default:'DEFAULT'"`

	// reseller Id
	ResellerID string `json:"ResellerId,omitempty" gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"`
}

// Validate validates this reseller
func (m *Reseller) Validate(formats strfmt.Registry) error {
	var res []error

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

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

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

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

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

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

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

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

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

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

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

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

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

var resellerTypeBillCurrencyPropEnum []interface{}

func init() {
	var res []string
	if err := json.Unmarshal([]byte(`["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HRK","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		resellerTypeBillCurrencyPropEnum = append(resellerTypeBillCurrencyPropEnum, v)
	}
}

const (

	// ResellerBillCurrencyAED captures enum value "AED"
	ResellerBillCurrencyAED string = "AED"

	// ResellerBillCurrencyAFN captures enum value "AFN"
	ResellerBillCurrencyAFN string = "AFN"

	// ResellerBillCurrencyALL captures enum value "ALL"
	ResellerBillCurrencyALL string = "ALL"

	// ResellerBillCurrencyAMD captures enum value "AMD"
	ResellerBillCurrencyAMD string = "AMD"

	// ResellerBillCurrencyANG captures enum value "ANG"
	ResellerBillCurrencyANG string = "ANG"

	// ResellerBillCurrencyAOA captures enum value "AOA"
	ResellerBillCurrencyAOA string = "AOA"

	// ResellerBillCurrencyARS captures enum value "ARS"
	ResellerBillCurrencyARS string = "ARS"

	// ResellerBillCurrencyAUD captures enum value "AUD"
	ResellerBillCurrencyAUD string = "AUD"

	// ResellerBillCurrencyAWG captures enum value "AWG"
	ResellerBillCurrencyAWG string = "AWG"

	// ResellerBillCurrencyAZN captures enum value "AZN"
	ResellerBillCurrencyAZN string = "AZN"

	// ResellerBillCurrencyBAM captures enum value "BAM"
	ResellerBillCurrencyBAM string = "BAM"

	// ResellerBillCurrencyBBD captures enum value "BBD"
	ResellerBillCurrencyBBD string = "BBD"

	// ResellerBillCurrencyBDT captures enum value "BDT"
	ResellerBillCurrencyBDT string = "BDT"

	// ResellerBillCurrencyBGN captures enum value "BGN"
	ResellerBillCurrencyBGN string = "BGN"

	// ResellerBillCurrencyBHD captures enum value "BHD"
	ResellerBillCurrencyBHD string = "BHD"

	// ResellerBillCurrencyBIF captures enum value "BIF"
	ResellerBillCurrencyBIF string = "BIF"

	// ResellerBillCurrencyBMD captures enum value "BMD"
	ResellerBillCurrencyBMD string = "BMD"

	// ResellerBillCurrencyBND captures enum value "BND"
	ResellerBillCurrencyBND string = "BND"

	// ResellerBillCurrencyBOB captures enum value "BOB"
	ResellerBillCurrencyBOB string = "BOB"

	// ResellerBillCurrencyBOV captures enum value "BOV"
	ResellerBillCurrencyBOV string = "BOV"

	// ResellerBillCurrencyBRL captures enum value "BRL"
	ResellerBillCurrencyBRL string = "BRL"

	// ResellerBillCurrencyBSD captures enum value "BSD"
	ResellerBillCurrencyBSD string = "BSD"

	// ResellerBillCurrencyBTN captures enum value "BTN"
	ResellerBillCurrencyBTN string = "BTN"

	// ResellerBillCurrencyBWP captures enum value "BWP"
	ResellerBillCurrencyBWP string = "BWP"

	// ResellerBillCurrencyBYN captures enum value "BYN"
	ResellerBillCurrencyBYN string = "BYN"

	// ResellerBillCurrencyBZD captures enum value "BZD"
	ResellerBillCurrencyBZD string = "BZD"

	// ResellerBillCurrencyCAD captures enum value "CAD"
	ResellerBillCurrencyCAD string = "CAD"

	// ResellerBillCurrencyCDF captures enum value "CDF"
	ResellerBillCurrencyCDF string = "CDF"

	// ResellerBillCurrencyCHE captures enum value "CHE"
	ResellerBillCurrencyCHE string = "CHE"

	// ResellerBillCurrencyCHF captures enum value "CHF"
	ResellerBillCurrencyCHF string = "CHF"

	// ResellerBillCurrencyCHW captures enum value "CHW"
	ResellerBillCurrencyCHW string = "CHW"

	// ResellerBillCurrencyCLF captures enum value "CLF"
	ResellerBillCurrencyCLF string = "CLF"

	// ResellerBillCurrencyCLP captures enum value "CLP"
	ResellerBillCurrencyCLP string = "CLP"

	// ResellerBillCurrencyCNY captures enum value "CNY"
	ResellerBillCurrencyCNY string = "CNY"

	// ResellerBillCurrencyCOP captures enum value "COP"
	ResellerBillCurrencyCOP string = "COP"

	// ResellerBillCurrencyCOU captures enum value "COU"
	ResellerBillCurrencyCOU string = "COU"

	// ResellerBillCurrencyCRC captures enum value "CRC"
	ResellerBillCurrencyCRC string = "CRC"

	// ResellerBillCurrencyCUC captures enum value "CUC"
	ResellerBillCurrencyCUC string = "CUC"

	// ResellerBillCurrencyCUP captures enum value "CUP"
	ResellerBillCurrencyCUP string = "CUP"

	// ResellerBillCurrencyCVE captures enum value "CVE"
	ResellerBillCurrencyCVE string = "CVE"

	// ResellerBillCurrencyCZK captures enum value "CZK"
	ResellerBillCurrencyCZK string = "CZK"

	// ResellerBillCurrencyDJF captures enum value "DJF"
	ResellerBillCurrencyDJF string = "DJF"

	// ResellerBillCurrencyDKK captures enum value "DKK"
	ResellerBillCurrencyDKK string = "DKK"

	// ResellerBillCurrencyDOP captures enum value "DOP"
	ResellerBillCurrencyDOP string = "DOP"

	// ResellerBillCurrencyDZD captures enum value "DZD"
	ResellerBillCurrencyDZD string = "DZD"

	// ResellerBillCurrencyEGP captures enum value "EGP"
	ResellerBillCurrencyEGP string = "EGP"

	// ResellerBillCurrencyERN captures enum value "ERN"
	ResellerBillCurrencyERN string = "ERN"

	// ResellerBillCurrencyETB captures enum value "ETB"
	ResellerBillCurrencyETB string = "ETB"

	// ResellerBillCurrencyEUR captures enum value "EUR"
	ResellerBillCurrencyEUR string = "EUR"

	// ResellerBillCurrencyFJD captures enum value "FJD"
	ResellerBillCurrencyFJD string = "FJD"

	// ResellerBillCurrencyFKP captures enum value "FKP"
	ResellerBillCurrencyFKP string = "FKP"

	// ResellerBillCurrencyGBP captures enum value "GBP"
	ResellerBillCurrencyGBP string = "GBP"

	// ResellerBillCurrencyGEL captures enum value "GEL"
	ResellerBillCurrencyGEL string = "GEL"

	// ResellerBillCurrencyGHS captures enum value "GHS"
	ResellerBillCurrencyGHS string = "GHS"

	// ResellerBillCurrencyGIP captures enum value "GIP"
	ResellerBillCurrencyGIP string = "GIP"

	// ResellerBillCurrencyGMD captures enum value "GMD"
	ResellerBillCurrencyGMD string = "GMD"

	// ResellerBillCurrencyGNF captures enum value "GNF"
	ResellerBillCurrencyGNF string = "GNF"

	// ResellerBillCurrencyGTQ captures enum value "GTQ"
	ResellerBillCurrencyGTQ string = "GTQ"

	// ResellerBillCurrencyGYD captures enum value "GYD"
	ResellerBillCurrencyGYD string = "GYD"

	// ResellerBillCurrencyHKD captures enum value "HKD"
	ResellerBillCurrencyHKD string = "HKD"

	// ResellerBillCurrencyHNL captures enum value "HNL"
	ResellerBillCurrencyHNL string = "HNL"

	// ResellerBillCurrencyHRK captures enum value "HRK"
	ResellerBillCurrencyHRK string = "HRK"

	// ResellerBillCurrencyHTG captures enum value "HTG"
	ResellerBillCurrencyHTG string = "HTG"

	// ResellerBillCurrencyHUF captures enum value "HUF"
	ResellerBillCurrencyHUF string = "HUF"

	// ResellerBillCurrencyIDR captures enum value "IDR"
	ResellerBillCurrencyIDR string = "IDR"

	// ResellerBillCurrencyILS captures enum value "ILS"
	ResellerBillCurrencyILS string = "ILS"

	// ResellerBillCurrencyINR captures enum value "INR"
	ResellerBillCurrencyINR string = "INR"

	// ResellerBillCurrencyIQD captures enum value "IQD"
	ResellerBillCurrencyIQD string = "IQD"

	// ResellerBillCurrencyIRR captures enum value "IRR"
	ResellerBillCurrencyIRR string = "IRR"

	// ResellerBillCurrencyISK captures enum value "ISK"
	ResellerBillCurrencyISK string = "ISK"

	// ResellerBillCurrencyJMD captures enum value "JMD"
	ResellerBillCurrencyJMD string = "JMD"

	// ResellerBillCurrencyJOD captures enum value "JOD"
	ResellerBillCurrencyJOD string = "JOD"

	// ResellerBillCurrencyJPY captures enum value "JPY"
	ResellerBillCurrencyJPY string = "JPY"

	// ResellerBillCurrencyKES captures enum value "KES"
	ResellerBillCurrencyKES string = "KES"

	// ResellerBillCurrencyKGS captures enum value "KGS"
	ResellerBillCurrencyKGS string = "KGS"

	// ResellerBillCurrencyKHR captures enum value "KHR"
	ResellerBillCurrencyKHR string = "KHR"

	// ResellerBillCurrencyKMF captures enum value "KMF"
	ResellerBillCurrencyKMF string = "KMF"

	// ResellerBillCurrencyKPW captures enum value "KPW"
	ResellerBillCurrencyKPW string = "KPW"

	// ResellerBillCurrencyKRW captures enum value "KRW"
	ResellerBillCurrencyKRW string = "KRW"

	// ResellerBillCurrencyKWD captures enum value "KWD"
	ResellerBillCurrencyKWD string = "KWD"

	// ResellerBillCurrencyKYD captures enum value "KYD"
	ResellerBillCurrencyKYD string = "KYD"

	// ResellerBillCurrencyKZT captures enum value "KZT"
	ResellerBillCurrencyKZT string = "KZT"

	// ResellerBillCurrencyLAK captures enum value "LAK"
	ResellerBillCurrencyLAK string = "LAK"

	// ResellerBillCurrencyLBP captures enum value "LBP"
	ResellerBillCurrencyLBP string = "LBP"

	// ResellerBillCurrencyLKR captures enum value "LKR"
	ResellerBillCurrencyLKR string = "LKR"

	// ResellerBillCurrencyLRD captures enum value "LRD"
	ResellerBillCurrencyLRD string = "LRD"

	// ResellerBillCurrencyLSL captures enum value "LSL"
	ResellerBillCurrencyLSL string = "LSL"

	// ResellerBillCurrencyLYD captures enum value "LYD"
	ResellerBillCurrencyLYD string = "LYD"

	// ResellerBillCurrencyMAD captures enum value "MAD"
	ResellerBillCurrencyMAD string = "MAD"

	// ResellerBillCurrencyMDL captures enum value "MDL"
	ResellerBillCurrencyMDL string = "MDL"

	// ResellerBillCurrencyMGA captures enum value "MGA"
	ResellerBillCurrencyMGA string = "MGA"

	// ResellerBillCurrencyMKD captures enum value "MKD"
	ResellerBillCurrencyMKD string = "MKD"

	// ResellerBillCurrencyMMK captures enum value "MMK"
	ResellerBillCurrencyMMK string = "MMK"

	// ResellerBillCurrencyMNT captures enum value "MNT"
	ResellerBillCurrencyMNT string = "MNT"

	// ResellerBillCurrencyMOP captures enum value "MOP"
	ResellerBillCurrencyMOP string = "MOP"

	// ResellerBillCurrencyMRU captures enum value "MRU"
	ResellerBillCurrencyMRU string = "MRU"

	// ResellerBillCurrencyMUR captures enum value "MUR"
	ResellerBillCurrencyMUR string = "MUR"

	// ResellerBillCurrencyMVR captures enum value "MVR"
	ResellerBillCurrencyMVR string = "MVR"

	// ResellerBillCurrencyMWK captures enum value "MWK"
	ResellerBillCurrencyMWK string = "MWK"

	// ResellerBillCurrencyMXN captures enum value "MXN"
	ResellerBillCurrencyMXN string = "MXN"

	// ResellerBillCurrencyMXV captures enum value "MXV"
	ResellerBillCurrencyMXV string = "MXV"

	// ResellerBillCurrencyMYR captures enum value "MYR"
	ResellerBillCurrencyMYR string = "MYR"

	// ResellerBillCurrencyMZN captures enum value "MZN"
	ResellerBillCurrencyMZN string = "MZN"

	// ResellerBillCurrencyNAD captures enum value "NAD"
	ResellerBillCurrencyNAD string = "NAD"

	// ResellerBillCurrencyNGN captures enum value "NGN"
	ResellerBillCurrencyNGN string = "NGN"

	// ResellerBillCurrencyNIO captures enum value "NIO"
	ResellerBillCurrencyNIO string = "NIO"

	// ResellerBillCurrencyNOK captures enum value "NOK"
	ResellerBillCurrencyNOK string = "NOK"

	// ResellerBillCurrencyNPR captures enum value "NPR"
	ResellerBillCurrencyNPR string = "NPR"

	// ResellerBillCurrencyNZD captures enum value "NZD"
	ResellerBillCurrencyNZD string = "NZD"

	// ResellerBillCurrencyOMR captures enum value "OMR"
	ResellerBillCurrencyOMR string = "OMR"

	// ResellerBillCurrencyPAB captures enum value "PAB"
	ResellerBillCurrencyPAB string = "PAB"

	// ResellerBillCurrencyPEN captures enum value "PEN"
	ResellerBillCurrencyPEN string = "PEN"

	// ResellerBillCurrencyPGK captures enum value "PGK"
	ResellerBillCurrencyPGK string = "PGK"

	// ResellerBillCurrencyPHP captures enum value "PHP"
	ResellerBillCurrencyPHP string = "PHP"

	// ResellerBillCurrencyPKR captures enum value "PKR"
	ResellerBillCurrencyPKR string = "PKR"

	// ResellerBillCurrencyPLN captures enum value "PLN"
	ResellerBillCurrencyPLN string = "PLN"

	// ResellerBillCurrencyPYG captures enum value "PYG"
	ResellerBillCurrencyPYG string = "PYG"

	// ResellerBillCurrencyQAR captures enum value "QAR"
	ResellerBillCurrencyQAR string = "QAR"

	// ResellerBillCurrencyRON captures enum value "RON"
	ResellerBillCurrencyRON string = "RON"

	// ResellerBillCurrencyRSD captures enum value "RSD"
	ResellerBillCurrencyRSD string = "RSD"

	// ResellerBillCurrencyRUB captures enum value "RUB"
	ResellerBillCurrencyRUB string = "RUB"

	// ResellerBillCurrencyRWF captures enum value "RWF"
	ResellerBillCurrencyRWF string = "RWF"

	// ResellerBillCurrencySAR captures enum value "SAR"
	ResellerBillCurrencySAR string = "SAR"

	// ResellerBillCurrencySBD captures enum value "SBD"
	ResellerBillCurrencySBD string = "SBD"

	// ResellerBillCurrencySCR captures enum value "SCR"
	ResellerBillCurrencySCR string = "SCR"

	// ResellerBillCurrencySDG captures enum value "SDG"
	ResellerBillCurrencySDG string = "SDG"

	// ResellerBillCurrencySEK captures enum value "SEK"
	ResellerBillCurrencySEK string = "SEK"

	// ResellerBillCurrencySGD captures enum value "SGD"
	ResellerBillCurrencySGD string = "SGD"

	// ResellerBillCurrencySHP captures enum value "SHP"
	ResellerBillCurrencySHP string = "SHP"

	// ResellerBillCurrencySLL captures enum value "SLL"
	ResellerBillCurrencySLL string = "SLL"

	// ResellerBillCurrencySOS captures enum value "SOS"
	ResellerBillCurrencySOS string = "SOS"

	// ResellerBillCurrencySRD captures enum value "SRD"
	ResellerBillCurrencySRD string = "SRD"

	// ResellerBillCurrencySSP captures enum value "SSP"
	ResellerBillCurrencySSP string = "SSP"

	// ResellerBillCurrencySTN captures enum value "STN"
	ResellerBillCurrencySTN string = "STN"

	// ResellerBillCurrencySVC captures enum value "SVC"
	ResellerBillCurrencySVC string = "SVC"

	// ResellerBillCurrencySYP captures enum value "SYP"
	ResellerBillCurrencySYP string = "SYP"

	// ResellerBillCurrencySZL captures enum value "SZL"
	ResellerBillCurrencySZL string = "SZL"

	// ResellerBillCurrencyTHB captures enum value "THB"
	ResellerBillCurrencyTHB string = "THB"

	// ResellerBillCurrencyTJS captures enum value "TJS"
	ResellerBillCurrencyTJS string = "TJS"

	// ResellerBillCurrencyTMT captures enum value "TMT"
	ResellerBillCurrencyTMT string = "TMT"

	// ResellerBillCurrencyTND captures enum value "TND"
	ResellerBillCurrencyTND string = "TND"

	// ResellerBillCurrencyTOP captures enum value "TOP"
	ResellerBillCurrencyTOP string = "TOP"

	// ResellerBillCurrencyTRY captures enum value "TRY"
	ResellerBillCurrencyTRY string = "TRY"

	// ResellerBillCurrencyTTD captures enum value "TTD"
	ResellerBillCurrencyTTD string = "TTD"

	// ResellerBillCurrencyTWD captures enum value "TWD"
	ResellerBillCurrencyTWD string = "TWD"

	// ResellerBillCurrencyTZS captures enum value "TZS"
	ResellerBillCurrencyTZS string = "TZS"

	// ResellerBillCurrencyUAH captures enum value "UAH"
	ResellerBillCurrencyUAH string = "UAH"

	// ResellerBillCurrencyUGX captures enum value "UGX"
	ResellerBillCurrencyUGX string = "UGX"

	// ResellerBillCurrencyUSD captures enum value "USD"
	ResellerBillCurrencyUSD string = "USD"

	// ResellerBillCurrencyUSN captures enum value "USN"
	ResellerBillCurrencyUSN string = "USN"

	// ResellerBillCurrencyUYI captures enum value "UYI"
	ResellerBillCurrencyUYI string = "UYI"

	// ResellerBillCurrencyUYU captures enum value "UYU"
	ResellerBillCurrencyUYU string = "UYU"

	// ResellerBillCurrencyUYW captures enum value "UYW"
	ResellerBillCurrencyUYW string = "UYW"

	// ResellerBillCurrencyUZS captures enum value "UZS"
	ResellerBillCurrencyUZS string = "UZS"

	// ResellerBillCurrencyVES captures enum value "VES"
	ResellerBillCurrencyVES string = "VES"

	// ResellerBillCurrencyVND captures enum value "VND"
	ResellerBillCurrencyVND string = "VND"

	// ResellerBillCurrencyVUV captures enum value "VUV"
	ResellerBillCurrencyVUV string = "VUV"

	// ResellerBillCurrencyWST captures enum value "WST"
	ResellerBillCurrencyWST string = "WST"

	// ResellerBillCurrencyXAF captures enum value "XAF"
	ResellerBillCurrencyXAF string = "XAF"

	// ResellerBillCurrencyXAG captures enum value "XAG"
	ResellerBillCurrencyXAG string = "XAG"

	// ResellerBillCurrencyXAU captures enum value "XAU"
	ResellerBillCurrencyXAU string = "XAU"

	// ResellerBillCurrencyXBA captures enum value "XBA"
	ResellerBillCurrencyXBA string = "XBA"

	// ResellerBillCurrencyXBB captures enum value "XBB"
	ResellerBillCurrencyXBB string = "XBB"

	// ResellerBillCurrencyXBC captures enum value "XBC"
	ResellerBillCurrencyXBC string = "XBC"

	// ResellerBillCurrencyXBD captures enum value "XBD"
	ResellerBillCurrencyXBD string = "XBD"

	// ResellerBillCurrencyXCD captures enum value "XCD"
	ResellerBillCurrencyXCD string = "XCD"

	// ResellerBillCurrencyXDR captures enum value "XDR"
	ResellerBillCurrencyXDR string = "XDR"

	// ResellerBillCurrencyXOF captures enum value "XOF"
	ResellerBillCurrencyXOF string = "XOF"

	// ResellerBillCurrencyXPD captures enum value "XPD"
	ResellerBillCurrencyXPD string = "XPD"

	// ResellerBillCurrencyXPF captures enum value "XPF"
	ResellerBillCurrencyXPF string = "XPF"

	// ResellerBillCurrencyXPT captures enum value "XPT"
	ResellerBillCurrencyXPT string = "XPT"

	// ResellerBillCurrencyXSU captures enum value "XSU"
	ResellerBillCurrencyXSU string = "XSU"

	// ResellerBillCurrencyXTS captures enum value "XTS"
	ResellerBillCurrencyXTS string = "XTS"

	// ResellerBillCurrencyXUA captures enum value "XUA"
	ResellerBillCurrencyXUA string = "XUA"

	// ResellerBillCurrencyXXX captures enum value "XXX"
	ResellerBillCurrencyXXX string = "XXX"

	// ResellerBillCurrencyYER captures enum value "YER"
	ResellerBillCurrencyYER string = "YER"

	// ResellerBillCurrencyZAR captures enum value "ZAR"
	ResellerBillCurrencyZAR string = "ZAR"

	// ResellerBillCurrencyZMW captures enum value "ZMW"
	ResellerBillCurrencyZMW string = "ZMW"

	// ResellerBillCurrencyZWL captures enum value "ZWL"
	ResellerBillCurrencyZWL string = "ZWL"
)

// prop value enum
func (m *Reseller) validateBillCurrencyEnum(path, location string, value string) error {
	if err := validate.EnumCase(path, location, value, resellerTypeBillCurrencyPropEnum, true); err != nil {
		return err
	}
	return nil
}

func (m *Reseller) validateBillCurrency(formats strfmt.Registry) error {

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

	// value enum
	if err := m.validateBillCurrencyEnum("BillCurrency", "body", *m.BillCurrency); err != nil {
		return err
	}

	return nil
}

var resellerTypeBillPeriodPropEnum []interface{}

func init() {
	var res []string
	if err := json.Unmarshal([]byte(`["daily","weekly","bi-weekly","monthly","bi-monthly","quarterly","semi-annually","annually"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		resellerTypeBillPeriodPropEnum = append(resellerTypeBillPeriodPropEnum, v)
	}
}

const (

	// ResellerBillPeriodDaily captures enum value "daily"
	ResellerBillPeriodDaily string = "daily"

	// ResellerBillPeriodWeekly captures enum value "weekly"
	ResellerBillPeriodWeekly string = "weekly"

	// ResellerBillPeriodBiWeekly captures enum value "bi-weekly"
	ResellerBillPeriodBiWeekly string = "bi-weekly"

	// ResellerBillPeriodMonthly captures enum value "monthly"
	ResellerBillPeriodMonthly string = "monthly"

	// ResellerBillPeriodBiMonthly captures enum value "bi-monthly"
	ResellerBillPeriodBiMonthly string = "bi-monthly"

	// ResellerBillPeriodQuarterly captures enum value "quarterly"
	ResellerBillPeriodQuarterly string = "quarterly"

	// ResellerBillPeriodSemiAnnually captures enum value "semi-annually"
	ResellerBillPeriodSemiAnnually string = "semi-annually"

	// ResellerBillPeriodAnnually captures enum value "annually"
	ResellerBillPeriodAnnually string = "annually"
)

// prop value enum
func (m *Reseller) validateBillPeriodEnum(path, location string, value string) error {
	if err := validate.EnumCase(path, location, value, resellerTypeBillPeriodPropEnum, true); err != nil {
		return err
	}
	return nil
}

func (m *Reseller) validateBillPeriod(formats strfmt.Registry) error {

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

	// value enum
	if err := m.validateBillPeriodEnum("BillPeriod", "body", *m.BillPeriod); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateCancelDate(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("CancelDate", "body", "date", m.CancelDate.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateContractEnd(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("ContractEnd", "body", "date", m.ContractEnd.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateContractStart(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("ContractStart", "body", "date", m.ContractStart.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateCustomers(formats strfmt.Registry) error {

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

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

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

	}

	return nil
}

func (m *Reseller) validateDeletedAt(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("DeletedAt", "body", "datetime", m.DeletedAt.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateEmailBcc(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("EmailBcc", "body", "email", m.EmailBcc.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateEmailCc(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("EmailCc", "body", "email", m.EmailCc.String(), formats); err != nil {
		return err
	}

	return nil
}

func (m *Reseller) validateEmailTo(formats strfmt.Registry) error {

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

	if err := validate.FormatOf("EmailTo", "body", "email", m.EmailTo.String(), formats); err != nil {
		return err
	}

	return nil
}

var resellerTypeInvoiceModePropEnum []interface{}

func init() {
	var res []string
	if err := json.Unmarshal([]byte(`["email","post"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		resellerTypeInvoiceModePropEnum = append(resellerTypeInvoiceModePropEnum, v)
	}
}

const (

	// ResellerInvoiceModeEmail captures enum value "email"
	ResellerInvoiceModeEmail string = "email"

	// ResellerInvoiceModePost captures enum value "post"
	ResellerInvoiceModePost string = "post"
)

// prop value enum
func (m *Reseller) validateInvoiceModeEnum(path, location string, value string) error {
	if err := validate.EnumCase(path, location, value, resellerTypeInvoiceModePropEnum, true); err != nil {
		return err
	}
	return nil
}

func (m *Reseller) validateInvoiceMode(formats strfmt.Registry) error {

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

	// value enum
	if err := m.validateInvoiceModeEnum("InvoiceMode", "body", *m.InvoiceMode); err != nil {
		return err
	}

	return nil
}

var resellerTypeLanguagePropEnum []interface{}

func init() {
	var res []string
	if err := json.Unmarshal([]byte(`["AA","AB","AE","AF","AK","AM","AN","AR","AS","AV","AY","AZ","BA","BE","BG","BH","BI","BM","BN","BO","BR","BS","CA","CE","CH","CO","CR","CS","CU","CV","CY","DA","DE","DV","DZ","EE","EL","EN","EO","ES","ET","EU","FA","FF","FI","FJ","FO","FR","FY","GA","GD","GL","GN","GU","GV","HA","HE","HI","HO","HR","HT","HU","HY","HZ","IA","ID","IE","IG","II","IK","IO","IS","IT","IU","JA","JV","KA","KG","KI","KJ","KK","KL","KM","KN","KO","KR","KS","KU","KV","KW","KY","LA","LB","LG","LI","LN","LO","LT","LU","LV","MG","MH","MI","MK","ML","MN","MR","MS","MT","MY","NA","NB","ND","NE","NG","NL","NN","NO","NR","NV","NY","OC","OJ","OM","OR","OS","PA","PI","PL","PS","PT","QU","RM","RN","RO","RU","RW","SA","SC","SD","SE","SG","SI","SK","SL","SM","SN","SO","SQ","SR","SS","ST","SU","SV","SW","TA","TE","TG","TH","TI","TK","TL","TN","TO","TR","TS","TT","TW","TY","UG","UK","UR","UZ","VE","VI","VO","WA","WO","XH","YI","YO","ZA","ZH","ZU"]`), &res); err != nil {
		panic(err)
	}
	for _, v := range res {
		resellerTypeLanguagePropEnum = append(resellerTypeLanguagePropEnum, v)
	}
}

const (

	// ResellerLanguageAA captures enum value "AA"
	ResellerLanguageAA string = "AA"

	// ResellerLanguageAB captures enum value "AB"
	ResellerLanguageAB string = "AB"

	// ResellerLanguageAE captures enum value "AE"
	ResellerLanguageAE string = "AE"

	// ResellerLanguageAF captures enum value "AF"
	ResellerLanguageAF string = "AF"

	// ResellerLanguageAK captures enum value "AK"
	ResellerLanguageAK string = "AK"

	// ResellerLanguageAM captures enum value "AM"
	ResellerLanguageAM string = "AM"

	// ResellerLanguageAN captures enum value "AN"
	ResellerLanguageAN string = "AN"

	// ResellerLanguageAR captures enum value "AR"
	ResellerLanguageAR string = "AR"

	// ResellerLanguageAS captures enum value "AS"
	ResellerLanguageAS string = "AS"

	// ResellerLanguageAV captures enum value "AV"
	ResellerLanguageAV string = "AV"

	// ResellerLanguageAY captures enum value "AY"
	ResellerLanguageAY string = "AY"

	// ResellerLanguageAZ captures enum value "AZ"
	ResellerLanguageAZ string = "AZ"

	// ResellerLanguageBA captures enum value "BA"
	ResellerLanguageBA string = "BA"

	// ResellerLanguageBE captures enum value "BE"
	ResellerLanguageBE string = "BE"

	// ResellerLanguageBG captures enum value "BG"
	ResellerLanguageBG string = "BG"

	// ResellerLanguageBH captures enum value "BH"
	ResellerLanguageBH string = "BH"

	// ResellerLanguageBI captures enum value "BI"
	ResellerLanguageBI string = "BI"

	// ResellerLanguageBM captures enum value "BM"
	ResellerLanguageBM string = "BM"

	// ResellerLanguageBN captures enum value "BN"
	ResellerLanguageBN string = "BN"

	// ResellerLanguageBO captures enum value "BO"
	ResellerLanguageBO string = "BO"

	// ResellerLanguageBR captures enum value "BR"
	ResellerLanguageBR string = "BR"

	// ResellerLanguageBS captures enum value "BS"
	ResellerLanguageBS string = "BS"

	// ResellerLanguageCA captures enum value "CA"
	ResellerLanguageCA string = "CA"

	// ResellerLanguageCE captures enum value "CE"
	ResellerLanguageCE string = "CE"

	// ResellerLanguageCH captures enum value "CH"
	ResellerLanguageCH string = "CH"

	// ResellerLanguageCO captures enum value "CO"
	ResellerLanguageCO string = "CO"

	// ResellerLanguageCR captures enum value "CR"
	ResellerLanguageCR string = "CR"

	// ResellerLanguageCS captures enum value "CS"
	ResellerLanguageCS string = "CS"

	// ResellerLanguageCU captures enum value "CU"
	ResellerLanguageCU string = "CU"

	// ResellerLanguageCV captures enum value "CV"
	ResellerLanguageCV string = "CV"

	// ResellerLanguageCY captures enum value "CY"
	ResellerLanguageCY string = "CY"

	// ResellerLanguageDA captures enum value "DA"
	ResellerLanguageDA string = "DA"

	// ResellerLanguageDE captures enum value "DE"
	ResellerLanguageDE string = "DE"

	// ResellerLanguageDV captures enum value "DV"
	ResellerLanguageDV string = "DV"

	// ResellerLanguageDZ captures enum value "DZ"
	ResellerLanguageDZ string = "DZ"

	// ResellerLanguageEE captures enum value "EE"
	ResellerLanguageEE string = "EE"

	// ResellerLanguageEL captures enum value "EL"
	ResellerLanguageEL string = "EL"

	// ResellerLanguageEN captures enum value "EN"
	ResellerLanguageEN string = "EN"

	// ResellerLanguageEO captures enum value "EO"
	ResellerLanguageEO string = "EO"

	// ResellerLanguageES captures enum value "ES"
	ResellerLanguageES string = "ES"

	// ResellerLanguageET captures enum value "ET"
	ResellerLanguageET string = "ET"

	// ResellerLanguageEU captures enum value "EU"
	ResellerLanguageEU string = "EU"

	// ResellerLanguageFA captures enum value "FA"
	ResellerLanguageFA string = "FA"

	// ResellerLanguageFF captures enum value "FF"
	ResellerLanguageFF string = "FF"

	// ResellerLanguageFI captures enum value "FI"
	ResellerLanguageFI string = "FI"

	// ResellerLanguageFJ captures enum value "FJ"
	ResellerLanguageFJ string = "FJ"

	// ResellerLanguageFO captures enum value "FO"
	ResellerLanguageFO string = "FO"

	// ResellerLanguageFR captures enum value "FR"
	ResellerLanguageFR string = "FR"

	// ResellerLanguageFY captures enum value "FY"
	ResellerLanguageFY string = "FY"

	// ResellerLanguageGA captures enum value "GA"
	ResellerLanguageGA string = "GA"

	// ResellerLanguageGD captures enum value "GD"
	ResellerLanguageGD string = "GD"

	// ResellerLanguageGL captures enum value "GL"
	ResellerLanguageGL string = "GL"

	// ResellerLanguageGN captures enum value "GN"
	ResellerLanguageGN string = "GN"

	// ResellerLanguageGU captures enum value "GU"
	ResellerLanguageGU string = "GU"

	// ResellerLanguageGV captures enum value "GV"
	ResellerLanguageGV string = "GV"

	// ResellerLanguageHA captures enum value "HA"
	ResellerLanguageHA string = "HA"

	// ResellerLanguageHE captures enum value "HE"
	ResellerLanguageHE string = "HE"

	// ResellerLanguageHI captures enum value "HI"
	ResellerLanguageHI string = "HI"

	// ResellerLanguageHO captures enum value "HO"
	ResellerLanguageHO string = "HO"

	// ResellerLanguageHR captures enum value "HR"
	ResellerLanguageHR string = "HR"

	// ResellerLanguageHT captures enum value "HT"
	ResellerLanguageHT string = "HT"

	// ResellerLanguageHU captures enum value "HU"
	ResellerLanguageHU string = "HU"

	// ResellerLanguageHY captures enum value "HY"
	ResellerLanguageHY string = "HY"

	// ResellerLanguageHZ captures enum value "HZ"
	ResellerLanguageHZ string = "HZ"

	// ResellerLanguageIA captures enum value "IA"
	ResellerLanguageIA string = "IA"

	// ResellerLanguageID captures enum value "ID"
	ResellerLanguageID string = "ID"

	// ResellerLanguageIE captures enum value "IE"
	ResellerLanguageIE string = "IE"

	// ResellerLanguageIG captures enum value "IG"
	ResellerLanguageIG string = "IG"

	// ResellerLanguageII captures enum value "II"
	ResellerLanguageII string = "II"

	// ResellerLanguageIK captures enum value "IK"
	ResellerLanguageIK string = "IK"

	// ResellerLanguageIO captures enum value "IO"
	ResellerLanguageIO string = "IO"

	// ResellerLanguageIS captures enum value "IS"
	ResellerLanguageIS string = "IS"

	// ResellerLanguageIT captures enum value "IT"
	ResellerLanguageIT string = "IT"

	// ResellerLanguageIU captures enum value "IU"
	ResellerLanguageIU string = "IU"

	// ResellerLanguageJA captures enum value "JA"
	ResellerLanguageJA string = "JA"

	// ResellerLanguageJV captures enum value "JV"
	ResellerLanguageJV string = "JV"

	// ResellerLanguageKA captures enum value "KA"
	ResellerLanguageKA string = "KA"

	// ResellerLanguageKG captures enum value "KG"
	ResellerLanguageKG string = "KG"

	// ResellerLanguageKI captures enum value "KI"
	ResellerLanguageKI string = "KI"

	// ResellerLanguageKJ captures enum value "KJ"
	ResellerLanguageKJ string = "KJ"

	// ResellerLanguageKK captures enum value "KK"
	ResellerLanguageKK string = "KK"

	// ResellerLanguageKL captures enum value "KL"
	ResellerLanguageKL string = "KL"

	// ResellerLanguageKM captures enum value "KM"
	ResellerLanguageKM string = "KM"

	// ResellerLanguageKN captures enum value "KN"
	ResellerLanguageKN string = "KN"

	// ResellerLanguageKO captures enum value "KO"
	ResellerLanguageKO string = "KO"

	// ResellerLanguageKR captures enum value "KR"
	ResellerLanguageKR string = "KR"

	// ResellerLanguageKS captures enum value "KS"
	ResellerLanguageKS string = "KS"

	// ResellerLanguageKU captures enum value "KU"
	ResellerLanguageKU string = "KU"

	// ResellerLanguageKV captures enum value "KV"
	ResellerLanguageKV string = "KV"

	// ResellerLanguageKW captures enum value "KW"
	ResellerLanguageKW string = "KW"

	// ResellerLanguageKY captures enum value "KY"
	ResellerLanguageKY string = "KY"

	// ResellerLanguageLA captures enum value "LA"
	ResellerLanguageLA string = "LA"

	// ResellerLanguageLB captures enum value "LB"
	ResellerLanguageLB string = "LB"

	// ResellerLanguageLG captures enum value "LG"
	ResellerLanguageLG string = "LG"

	// ResellerLanguageLI captures enum value "LI"
	ResellerLanguageLI string = "LI"

	// ResellerLanguageLN captures enum value "LN"
	ResellerLanguageLN string = "LN"

	// ResellerLanguageLO captures enum value "LO"
	ResellerLanguageLO string = "LO"

	// ResellerLanguageLT captures enum value "LT"
	ResellerLanguageLT string = "LT"

	// ResellerLanguageLU captures enum value "LU"
	ResellerLanguageLU string = "LU"

	// ResellerLanguageLV captures enum value "LV"
	ResellerLanguageLV string = "LV"

	// ResellerLanguageMG captures enum value "MG"
	ResellerLanguageMG string = "MG"

	// ResellerLanguageMH captures enum value "MH"
	ResellerLanguageMH string = "MH"

	// ResellerLanguageMI captures enum value "MI"
	ResellerLanguageMI string = "MI"

	// ResellerLanguageMK captures enum value "MK"
	ResellerLanguageMK string = "MK"

	// ResellerLanguageML captures enum value "ML"
	ResellerLanguageML string = "ML"

	// ResellerLanguageMN captures enum value "MN"
	ResellerLanguageMN string = "MN"

	// ResellerLanguageMR captures enum value "MR"
	ResellerLanguageMR string = "MR"

	// ResellerLanguageMS captures enum value "MS"
	ResellerLanguageMS string = "MS"

	// ResellerLanguageMT captures enum value "MT"
	ResellerLanguageMT string = "MT"

	// ResellerLanguageMY captures enum value "MY"
	ResellerLanguageMY string = "MY"

	// ResellerLanguageNA captures enum value "NA"
	ResellerLanguageNA string = "NA"

	// ResellerLanguageNB captures enum value "NB"
	ResellerLanguageNB string = "NB"

	// ResellerLanguageND captures enum value "ND"
	ResellerLanguageND string = "ND"

	// ResellerLanguageNE captures enum value "NE"
	ResellerLanguageNE string = "NE"

	// ResellerLanguageNG captures enum value "NG"
	ResellerLanguageNG string = "NG"

	// ResellerLanguageNL captures enum value "NL"
	ResellerLanguageNL string = "NL"

	// ResellerLanguageNN captures enum value "NN"
	ResellerLanguageNN string = "NN"

	// ResellerLanguageNO captures enum value "NO"
	ResellerLanguageNO string = "NO"

	// ResellerLanguageNR captures enum value "NR"
	ResellerLanguageNR string = "NR"

	// ResellerLanguageNV captures enum value "NV"
	ResellerLanguageNV string = "NV"

	// ResellerLanguageNY captures enum value "NY"
	ResellerLanguageNY string = "NY"

	// ResellerLanguageOC captures enum value "OC"
	ResellerLanguageOC string = "OC"

	// ResellerLanguageOJ captures enum value "OJ"
	ResellerLanguageOJ string = "OJ"

	// ResellerLanguageOM captures enum value "OM"
	ResellerLanguageOM string = "OM"

	// ResellerLanguageOR captures enum value "OR"
	ResellerLanguageOR string = "OR"

	// ResellerLanguageOS captures enum value "OS"
	ResellerLanguageOS string = "OS"

	// ResellerLanguagePA captures enum value "PA"
	ResellerLanguagePA string = "PA"

	// ResellerLanguagePI captures enum value "PI"
	ResellerLanguagePI string = "PI"

	// ResellerLanguagePL captures enum value "PL"
	ResellerLanguagePL string = "PL"

	// ResellerLanguagePS captures enum value "PS"
	ResellerLanguagePS string = "PS"

	// ResellerLanguagePT captures enum value "PT"
	ResellerLanguagePT string = "PT"

	// ResellerLanguageQU captures enum value "QU"
	ResellerLanguageQU string = "QU"

	// ResellerLanguageRM captures enum value "RM"
	ResellerLanguageRM string = "RM"

	// ResellerLanguageRN captures enum value "RN"
	ResellerLanguageRN string = "RN"

	// ResellerLanguageRO captures enum value "RO"
	ResellerLanguageRO string = "RO"

	// ResellerLanguageRU captures enum value "RU"
	ResellerLanguageRU string = "RU"

	// ResellerLanguageRW captures enum value "RW"
	ResellerLanguageRW string = "RW"

	// ResellerLanguageSA captures enum value "SA"
	ResellerLanguageSA string = "SA"

	// ResellerLanguageSC captures enum value "SC"
	ResellerLanguageSC string = "SC"

	// ResellerLanguageSD captures enum value "SD"
	ResellerLanguageSD string = "SD"

	// ResellerLanguageSE captures enum value "SE"
	ResellerLanguageSE string = "SE"

	// ResellerLanguageSG captures enum value "SG"
	ResellerLanguageSG string = "SG"

	// ResellerLanguageSI captures enum value "SI"
	ResellerLanguageSI string = "SI"

	// ResellerLanguageSK captures enum value "SK"
	ResellerLanguageSK string = "SK"

	// ResellerLanguageSL captures enum value "SL"
	ResellerLanguageSL string = "SL"

	// ResellerLanguageSM captures enum value "SM"
	ResellerLanguageSM string = "SM"

	// ResellerLanguageSN captures enum value "SN"
	ResellerLanguageSN string = "SN"

	// ResellerLanguageSO captures enum value "SO"
	ResellerLanguageSO string = "SO"

	// ResellerLanguageSQ captures enum value "SQ"
	ResellerLanguageSQ string = "SQ"

	// ResellerLanguageSR captures enum value "SR"
	ResellerLanguageSR string = "SR"

	// ResellerLanguageSS captures enum value "SS"
	ResellerLanguageSS string = "SS"

	// ResellerLanguageST captures enum value "ST"
	ResellerLanguageST string = "ST"

	// ResellerLanguageSU captures enum value "SU"
	ResellerLanguageSU string = "SU"

	// ResellerLanguageSV captures enum value "SV"
	ResellerLanguageSV string = "SV"

	// ResellerLanguageSW captures enum value "SW"
	ResellerLanguageSW string = "SW"

	// ResellerLanguageTA captures enum value "TA"
	ResellerLanguageTA string = "TA"

	// ResellerLanguageTE captures enum value "TE"
	ResellerLanguageTE string = "TE"

	// ResellerLanguageTG captures enum value "TG"
	ResellerLanguageTG string = "TG"

	// ResellerLanguageTH captures enum value "TH"
	ResellerLanguageTH string = "TH"

	// ResellerLanguageTI captures enum value "TI"
	ResellerLanguageTI string = "TI"

	// ResellerLanguageTK captures enum value "TK"
	ResellerLanguageTK string = "TK"

	// ResellerLanguageTL captures enum value "TL"
	ResellerLanguageTL string = "TL"

	// ResellerLanguageTN captures enum value "TN"
	ResellerLanguageTN string = "TN"

	// ResellerLanguageTO captures enum value "TO"
	ResellerLanguageTO string = "TO"

	// ResellerLanguageTR captures enum value "TR"
	ResellerLanguageTR string = "TR"

	// ResellerLanguageTS captures enum value "TS"
	ResellerLanguageTS string = "TS"

	// ResellerLanguageTT captures enum value "TT"
	ResellerLanguageTT string = "TT"

	// ResellerLanguageTW captures enum value "TW"
	ResellerLanguageTW string = "TW"

	// ResellerLanguageTY captures enum value "TY"
	ResellerLanguageTY string = "TY"

	// ResellerLanguageUG captures enum value "UG"
	ResellerLanguageUG string = "UG"

	// ResellerLanguageUK captures enum value "UK"
	ResellerLanguageUK string = "UK"

	// ResellerLanguageUR captures enum value "UR"
	ResellerLanguageUR string = "UR"

	// ResellerLanguageUZ captures enum value "UZ"
	ResellerLanguageUZ string = "UZ"

	// ResellerLanguageVE captures enum value "VE"
	ResellerLanguageVE string = "VE"

	// ResellerLanguageVI captures enum value "VI"
	ResellerLanguageVI string = "VI"

	// ResellerLanguageVO captures enum value "VO"
	ResellerLanguageVO string = "VO"

	// ResellerLanguageWA captures enum value "WA"
	ResellerLanguageWA string = "WA"

	// ResellerLanguageWO captures enum value "WO"
	ResellerLanguageWO string = "WO"

	// ResellerLanguageXH captures enum value "XH"
	ResellerLanguageXH string = "XH"

	// ResellerLanguageYI captures enum value "YI"
	ResellerLanguageYI string = "YI"

	// ResellerLanguageYO captures enum value "YO"
	ResellerLanguageYO string = "YO"

	// ResellerLanguageZA captures enum value "ZA"
	ResellerLanguageZA string = "ZA"

	// ResellerLanguageZH captures enum value "ZH"
	ResellerLanguageZH string = "ZH"

	// ResellerLanguageZU captures enum value "ZU"
	ResellerLanguageZU string = "ZU"
)

// prop value enum
func (m *Reseller) validateLanguageEnum(path, location string, value string) error {
	if err := validate.EnumCase(path, location, value, resellerTypeLanguagePropEnum, true); err != nil {
		return err
	}
	return nil
}

func (m *Reseller) validateLanguage(formats strfmt.Registry) error {

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

	// value enum
	if err := m.validateLanguageEnum("Language", "body", *m.Language); err != nil {
		return err
	}

	return nil
}

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

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