/*
Daytona

Daytona AI platform API Docs

API version: 1.0
Contact: support@daytona.com
*/

// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

package apiclient

import (
	"encoding/json"
)

// checks if the CreateOrganizationQuota type satisfies the MappedNullable interface at compile time
var _ MappedNullable = &CreateOrganizationQuota{}

// CreateOrganizationQuota struct for CreateOrganizationQuota
type CreateOrganizationQuota struct {
	TotalCpuQuota *float32 `json:"totalCpuQuota,omitempty"`
	TotalMemoryQuota *float32 `json:"totalMemoryQuota,omitempty"`
	TotalDiskQuota *float32 `json:"totalDiskQuota,omitempty"`
	MaxCpuPerSandbox *float32 `json:"maxCpuPerSandbox,omitempty"`
	MaxMemoryPerSandbox *float32 `json:"maxMemoryPerSandbox,omitempty"`
	MaxDiskPerSandbox *float32 `json:"maxDiskPerSandbox,omitempty"`
	SnapshotQuota *float32 `json:"snapshotQuota,omitempty"`
	MaxSnapshotSize *float32 `json:"maxSnapshotSize,omitempty"`
	VolumeQuota *float32 `json:"volumeQuota,omitempty"`
	AdditionalProperties map[string]interface{}
}

type _CreateOrganizationQuota CreateOrganizationQuota

// NewCreateOrganizationQuota instantiates a new CreateOrganizationQuota object
// This constructor will assign default values to properties that have it defined,
// and makes sure properties required by API are set, but the set of arguments
// will change when the set of required properties is changed
func NewCreateOrganizationQuota() *CreateOrganizationQuota {
	this := CreateOrganizationQuota{}
	return &this
}

// NewCreateOrganizationQuotaWithDefaults instantiates a new CreateOrganizationQuota object
// This constructor will only assign default values to properties that have it defined,
// but it doesn't guarantee that properties required by API are set
func NewCreateOrganizationQuotaWithDefaults() *CreateOrganizationQuota {
	this := CreateOrganizationQuota{}
	return &this
}

// GetTotalCpuQuota returns the TotalCpuQuota field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetTotalCpuQuota() float32 {
	if o == nil || IsNil(o.TotalCpuQuota) {
		var ret float32
		return ret
	}
	return *o.TotalCpuQuota
}

// GetTotalCpuQuotaOk returns a tuple with the TotalCpuQuota field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetTotalCpuQuotaOk() (*float32, bool) {
	if o == nil || IsNil(o.TotalCpuQuota) {
		return nil, false
	}
	return o.TotalCpuQuota, true
}

// HasTotalCpuQuota returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasTotalCpuQuota() bool {
	if o != nil && !IsNil(o.TotalCpuQuota) {
		return true
	}

	return false
}

// SetTotalCpuQuota gets a reference to the given float32 and assigns it to the TotalCpuQuota field.
func (o *CreateOrganizationQuota) SetTotalCpuQuota(v float32) {
	o.TotalCpuQuota = &v
}

// GetTotalMemoryQuota returns the TotalMemoryQuota field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetTotalMemoryQuota() float32 {
	if o == nil || IsNil(o.TotalMemoryQuota) {
		var ret float32
		return ret
	}
	return *o.TotalMemoryQuota
}

// GetTotalMemoryQuotaOk returns a tuple with the TotalMemoryQuota field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetTotalMemoryQuotaOk() (*float32, bool) {
	if o == nil || IsNil(o.TotalMemoryQuota) {
		return nil, false
	}
	return o.TotalMemoryQuota, true
}

// HasTotalMemoryQuota returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasTotalMemoryQuota() bool {
	if o != nil && !IsNil(o.TotalMemoryQuota) {
		return true
	}

	return false
}

// SetTotalMemoryQuota gets a reference to the given float32 and assigns it to the TotalMemoryQuota field.
func (o *CreateOrganizationQuota) SetTotalMemoryQuota(v float32) {
	o.TotalMemoryQuota = &v
}

// GetTotalDiskQuota returns the TotalDiskQuota field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetTotalDiskQuota() float32 {
	if o == nil || IsNil(o.TotalDiskQuota) {
		var ret float32
		return ret
	}
	return *o.TotalDiskQuota
}

// GetTotalDiskQuotaOk returns a tuple with the TotalDiskQuota field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetTotalDiskQuotaOk() (*float32, bool) {
	if o == nil || IsNil(o.TotalDiskQuota) {
		return nil, false
	}
	return o.TotalDiskQuota, true
}

// HasTotalDiskQuota returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasTotalDiskQuota() bool {
	if o != nil && !IsNil(o.TotalDiskQuota) {
		return true
	}

	return false
}

// SetTotalDiskQuota gets a reference to the given float32 and assigns it to the TotalDiskQuota field.
func (o *CreateOrganizationQuota) SetTotalDiskQuota(v float32) {
	o.TotalDiskQuota = &v
}

// GetMaxCpuPerSandbox returns the MaxCpuPerSandbox field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetMaxCpuPerSandbox() float32 {
	if o == nil || IsNil(o.MaxCpuPerSandbox) {
		var ret float32
		return ret
	}
	return *o.MaxCpuPerSandbox
}

// GetMaxCpuPerSandboxOk returns a tuple with the MaxCpuPerSandbox field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetMaxCpuPerSandboxOk() (*float32, bool) {
	if o == nil || IsNil(o.MaxCpuPerSandbox) {
		return nil, false
	}
	return o.MaxCpuPerSandbox, true
}

// HasMaxCpuPerSandbox returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasMaxCpuPerSandbox() bool {
	if o != nil && !IsNil(o.MaxCpuPerSandbox) {
		return true
	}

	return false
}

// SetMaxCpuPerSandbox gets a reference to the given float32 and assigns it to the MaxCpuPerSandbox field.
func (o *CreateOrganizationQuota) SetMaxCpuPerSandbox(v float32) {
	o.MaxCpuPerSandbox = &v
}

// GetMaxMemoryPerSandbox returns the MaxMemoryPerSandbox field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetMaxMemoryPerSandbox() float32 {
	if o == nil || IsNil(o.MaxMemoryPerSandbox) {
		var ret float32
		return ret
	}
	return *o.MaxMemoryPerSandbox
}

// GetMaxMemoryPerSandboxOk returns a tuple with the MaxMemoryPerSandbox field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetMaxMemoryPerSandboxOk() (*float32, bool) {
	if o == nil || IsNil(o.MaxMemoryPerSandbox) {
		return nil, false
	}
	return o.MaxMemoryPerSandbox, true
}

// HasMaxMemoryPerSandbox returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasMaxMemoryPerSandbox() bool {
	if o != nil && !IsNil(o.MaxMemoryPerSandbox) {
		return true
	}

	return false
}

// SetMaxMemoryPerSandbox gets a reference to the given float32 and assigns it to the MaxMemoryPerSandbox field.
func (o *CreateOrganizationQuota) SetMaxMemoryPerSandbox(v float32) {
	o.MaxMemoryPerSandbox = &v
}

// GetMaxDiskPerSandbox returns the MaxDiskPerSandbox field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetMaxDiskPerSandbox() float32 {
	if o == nil || IsNil(o.MaxDiskPerSandbox) {
		var ret float32
		return ret
	}
	return *o.MaxDiskPerSandbox
}

// GetMaxDiskPerSandboxOk returns a tuple with the MaxDiskPerSandbox field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetMaxDiskPerSandboxOk() (*float32, bool) {
	if o == nil || IsNil(o.MaxDiskPerSandbox) {
		return nil, false
	}
	return o.MaxDiskPerSandbox, true
}

// HasMaxDiskPerSandbox returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasMaxDiskPerSandbox() bool {
	if o != nil && !IsNil(o.MaxDiskPerSandbox) {
		return true
	}

	return false
}

// SetMaxDiskPerSandbox gets a reference to the given float32 and assigns it to the MaxDiskPerSandbox field.
func (o *CreateOrganizationQuota) SetMaxDiskPerSandbox(v float32) {
	o.MaxDiskPerSandbox = &v
}

// GetSnapshotQuota returns the SnapshotQuota field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetSnapshotQuota() float32 {
	if o == nil || IsNil(o.SnapshotQuota) {
		var ret float32
		return ret
	}
	return *o.SnapshotQuota
}

// GetSnapshotQuotaOk returns a tuple with the SnapshotQuota field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetSnapshotQuotaOk() (*float32, bool) {
	if o == nil || IsNil(o.SnapshotQuota) {
		return nil, false
	}
	return o.SnapshotQuota, true
}

// HasSnapshotQuota returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasSnapshotQuota() bool {
	if o != nil && !IsNil(o.SnapshotQuota) {
		return true
	}

	return false
}

// SetSnapshotQuota gets a reference to the given float32 and assigns it to the SnapshotQuota field.
func (o *CreateOrganizationQuota) SetSnapshotQuota(v float32) {
	o.SnapshotQuota = &v
}

// GetMaxSnapshotSize returns the MaxSnapshotSize field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetMaxSnapshotSize() float32 {
	if o == nil || IsNil(o.MaxSnapshotSize) {
		var ret float32
		return ret
	}
	return *o.MaxSnapshotSize
}

// GetMaxSnapshotSizeOk returns a tuple with the MaxSnapshotSize field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetMaxSnapshotSizeOk() (*float32, bool) {
	if o == nil || IsNil(o.MaxSnapshotSize) {
		return nil, false
	}
	return o.MaxSnapshotSize, true
}

// HasMaxSnapshotSize returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasMaxSnapshotSize() bool {
	if o != nil && !IsNil(o.MaxSnapshotSize) {
		return true
	}

	return false
}

// SetMaxSnapshotSize gets a reference to the given float32 and assigns it to the MaxSnapshotSize field.
func (o *CreateOrganizationQuota) SetMaxSnapshotSize(v float32) {
	o.MaxSnapshotSize = &v
}

// GetVolumeQuota returns the VolumeQuota field value if set, zero value otherwise.
func (o *CreateOrganizationQuota) GetVolumeQuota() float32 {
	if o == nil || IsNil(o.VolumeQuota) {
		var ret float32
		return ret
	}
	return *o.VolumeQuota
}

// GetVolumeQuotaOk returns a tuple with the VolumeQuota field value if set, nil otherwise
// and a boolean to check if the value has been set.
func (o *CreateOrganizationQuota) GetVolumeQuotaOk() (*float32, bool) {
	if o == nil || IsNil(o.VolumeQuota) {
		return nil, false
	}
	return o.VolumeQuota, true
}

// HasVolumeQuota returns a boolean if a field has been set.
func (o *CreateOrganizationQuota) HasVolumeQuota() bool {
	if o != nil && !IsNil(o.VolumeQuota) {
		return true
	}

	return false
}

// SetVolumeQuota gets a reference to the given float32 and assigns it to the VolumeQuota field.
func (o *CreateOrganizationQuota) SetVolumeQuota(v float32) {
	o.VolumeQuota = &v
}

func (o CreateOrganizationQuota) MarshalJSON() ([]byte, error) {
	toSerialize,err := o.ToMap()
	if err != nil {
		return []byte{}, err
	}
	return json.Marshal(toSerialize)
}

func (o CreateOrganizationQuota) ToMap() (map[string]interface{}, error) {
	toSerialize := map[string]interface{}{}
	if !IsNil(o.TotalCpuQuota) {
		toSerialize["totalCpuQuota"] = o.TotalCpuQuota
	}
	if !IsNil(o.TotalMemoryQuota) {
		toSerialize["totalMemoryQuota"] = o.TotalMemoryQuota
	}
	if !IsNil(o.TotalDiskQuota) {
		toSerialize["totalDiskQuota"] = o.TotalDiskQuota
	}
	if !IsNil(o.MaxCpuPerSandbox) {
		toSerialize["maxCpuPerSandbox"] = o.MaxCpuPerSandbox
	}
	if !IsNil(o.MaxMemoryPerSandbox) {
		toSerialize["maxMemoryPerSandbox"] = o.MaxMemoryPerSandbox
	}
	if !IsNil(o.MaxDiskPerSandbox) {
		toSerialize["maxDiskPerSandbox"] = o.MaxDiskPerSandbox
	}
	if !IsNil(o.SnapshotQuota) {
		toSerialize["snapshotQuota"] = o.SnapshotQuota
	}
	if !IsNil(o.MaxSnapshotSize) {
		toSerialize["maxSnapshotSize"] = o.MaxSnapshotSize
	}
	if !IsNil(o.VolumeQuota) {
		toSerialize["volumeQuota"] = o.VolumeQuota
	}

	for key, value := range o.AdditionalProperties {
		toSerialize[key] = value
	}

	return toSerialize, nil
}

func (o *CreateOrganizationQuota) UnmarshalJSON(data []byte) (err error) {
	varCreateOrganizationQuota := _CreateOrganizationQuota{}

	err = json.Unmarshal(data, &varCreateOrganizationQuota)

	if err != nil {
		return err
	}

	*o = CreateOrganizationQuota(varCreateOrganizationQuota)

	additionalProperties := make(map[string]interface{})

	if err = json.Unmarshal(data, &additionalProperties); err == nil {
		delete(additionalProperties, "totalCpuQuota")
		delete(additionalProperties, "totalMemoryQuota")
		delete(additionalProperties, "totalDiskQuota")
		delete(additionalProperties, "maxCpuPerSandbox")
		delete(additionalProperties, "maxMemoryPerSandbox")
		delete(additionalProperties, "maxDiskPerSandbox")
		delete(additionalProperties, "snapshotQuota")
		delete(additionalProperties, "maxSnapshotSize")
		delete(additionalProperties, "volumeQuota")
		o.AdditionalProperties = additionalProperties
	}

	return err
}

type NullableCreateOrganizationQuota struct {
	value *CreateOrganizationQuota
	isSet bool
}

func (v NullableCreateOrganizationQuota) Get() *CreateOrganizationQuota {
	return v.value
}

func (v *NullableCreateOrganizationQuota) Set(val *CreateOrganizationQuota) {
	v.value = val
	v.isSet = true
}

func (v NullableCreateOrganizationQuota) IsSet() bool {
	return v.isSet
}

func (v *NullableCreateOrganizationQuota) Unset() {
	v.value = nil
	v.isSet = false
}

func NewNullableCreateOrganizationQuota(val *CreateOrganizationQuota) *NullableCreateOrganizationQuota {
	return &NullableCreateOrganizationQuota{value: val, isSet: true}
}

func (v NullableCreateOrganizationQuota) MarshalJSON() ([]byte, error) {
	return json.Marshal(v.value)
}

func (v *NullableCreateOrganizationQuota) UnmarshalJSON(src []byte) error {
	v.isSet = true
	return json.Unmarshal(src, &v.value)
}


