// 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 (
	"github.com/go-openapi/errors"
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/swag"
	"github.com/go-openapi/validate"
)

// CentralTenant central tenant
//
// swagger:model centralTenant
type CentralTenant struct {

	// bind credit at
	// Required: true
	// Format: date-time
	BindCreditAt *strfmt.DateTime `json:"bind_credit_at"`

	// country
	// Required: true
	Country *string `json:"country"`

	// discount
	// Required: true
	Discount *string `json:"discount"`

	// discount description
	// Required: true
	DiscountDescription *string `json:"discount_description"`

	// email
	// Required: true
	Email *string `json:"email"`

	// has discount
	// Required: true
	HasDiscount bool `json:"has_discount"`

	// id
	// Required: true
	ID *string `json:"id"`

	// name
	// Required: true
	Name *string `json:"name"`

	// plan
	// Required: true
	Plan *string `json:"plan"`

	// status
	// Required: true
	Status *string `json:"status"`

	// timezone
	// Required: true
	Timezone *int32 `json:"timezone"`
}

// Validate validates this central tenant
func (m *CentralTenant) Validate(formats strfmt.Registry) error {
	var res []error

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

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

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

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

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

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

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

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

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

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

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

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

func (m *CentralTenant) validateBindCreditAt(formats strfmt.Registry) error {

	if err := validate.Required("bind_credit_at", "body", m.BindCreditAt); err != nil {
		return err
	}

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

	return nil
}

func (m *CentralTenant) validateCountry(formats strfmt.Registry) error {

	if err := validate.Required("country", "body", m.Country); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateDiscount(formats strfmt.Registry) error {

	if err := validate.Required("discount", "body", m.Discount); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateDiscountDescription(formats strfmt.Registry) error {

	if err := validate.Required("discount_description", "body", m.DiscountDescription); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateEmail(formats strfmt.Registry) error {

	if err := validate.Required("email", "body", m.Email); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateHasDiscount(formats strfmt.Registry) error {

	if err := validate.Required("has_discount", "body", bool(m.HasDiscount)); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateID(formats strfmt.Registry) error {

	if err := validate.Required("id", "body", m.ID); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateName(formats strfmt.Registry) error {

	if err := validate.Required("name", "body", m.Name); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validatePlan(formats strfmt.Registry) error {

	if err := validate.Required("plan", "body", m.Plan); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateStatus(formats strfmt.Registry) error {

	if err := validate.Required("status", "body", m.Status); err != nil {
		return err
	}

	return nil
}

func (m *CentralTenant) validateTimezone(formats strfmt.Registry) error {

	if err := validate.Required("timezone", "body", m.Timezone); err != nil {
		return err
	}

	return nil
}

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

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