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

// CentralOrganization central organization
//
// swagger:model centralOrganization
type CentralOrganization struct {

	// acknowledge cn policy
	// Required: true
	AcknowledgeCnPolicy bool `json:"acknowledge_cn_policy"`

	// active clusters count
	// Required: true
	ActiveClustersCount *int64 `json:"active_clusters_count"`

	// can replication
	// Required: true
	CanReplication bool `json:"can_replication"`

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

	// created at
	// Required: true
	// Format: date-time
	CreatedAt *strfmt.DateTime `json:"created_at"`

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

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

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

	// free clusters count
	// Required: true
	FreeClustersCount *int64 `json:"free_clusters_count"`

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

	// has tried dev tier
	// Required: true
	HasTriedDevTier bool `json:"has_tried_dev_tier"`

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

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

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

	// remaining credit
	// Required: true
	RemainingCredit *string `json:"remaining_credit"`

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

	// third party account code
	ThirdPartyAccountCode string `json:"third_party_account_code,omitempty"`

	// third party account provider
	ThirdPartyAccountProvider string `json:"third_party_account_provider,omitempty"`

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

	// total credit
	// Required: true
	TotalCredit *string `json:"total_credit"`

	// whitelist flag
	WhitelistFlag int64 `json:"whitelist_flag,omitempty"`
}

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

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

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

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

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

	if err := m.validateCreatedAt(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.validateFreeClustersCount(formats); err != nil {
		res = append(res, err)
	}

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

	if err := m.validateHasTriedDevTier(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.validateRemainingCredit(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 err := m.validateTotalCredit(formats); err != nil {
		res = append(res, err)
	}

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

func (m *CentralOrganization) validateAcknowledgeCnPolicy(formats strfmt.Registry) error {

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

	return nil
}

func (m *CentralOrganization) validateActiveClustersCount(formats strfmt.Registry) error {

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

	return nil
}

func (m *CentralOrganization) validateCanReplication(formats strfmt.Registry) error {

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

	return nil
}

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

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

	return nil
}

func (m *CentralOrganization) validateCreatedAt(formats strfmt.Registry) error {

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

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

	return nil
}

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

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

	return nil
}

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

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

	return nil
}

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

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

	return nil
}

func (m *CentralOrganization) validateFreeClustersCount(formats strfmt.Registry) error {

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

	return nil
}

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

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

	return nil
}

func (m *CentralOrganization) validateHasTriedDevTier(formats strfmt.Registry) error {

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

	return nil
}

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

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

	return nil
}

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

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

	return nil
}

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

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

	return nil
}

func (m *CentralOrganization) validateRemainingCredit(formats strfmt.Registry) error {

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

	return nil
}

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

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

	return nil
}

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

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

	return nil
}

func (m *CentralOrganization) validateTotalCredit(formats strfmt.Registry) error {

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

	return nil
}

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

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