/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the rds-2014-10-31.normal.json service model.
 */
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.RDS.Model
{
    /// 
    /// This data type is used as a response element in the DescribeReservedDBInstancesOfferings
    /// action.
    /// 
    public partial class ReservedDBInstancesOffering
    {
        private string _currencyCode;
        private string _dbInstanceClass;
        private int? _duration;
        private double? _fixedPrice;
        private bool? _multiAZ;
        private string _offeringType;
        private string _productDescription;
        private List _recurringCharges = new List();
        private string _reservedDBInstancesOfferingId;
        private double? _usagePrice;
        /// 
        /// Empty constructor used to set  properties independently even when a simple constructor is available
        /// 
        public ReservedDBInstancesOffering() { }
        /// 
        /// Gets and sets the property CurrencyCode. 
        /// 
        /// The currency code for the reserved DB instance offering.
        /// 
        /// 
        public string CurrencyCode
        {
            get { return this._currencyCode; }
            set { this._currencyCode = value; }
        }
        // Check to see if CurrencyCode property is set
        internal bool IsSetCurrencyCode()
        {
            return this._currencyCode != null;
        }
        /// 
        /// Gets and sets the property DBInstanceClass. 
        /// 
        /// The DB instance class for the reserved DB instance.
        /// 
        /// 
        public string DBInstanceClass
        {
            get { return this._dbInstanceClass; }
            set { this._dbInstanceClass = value; }
        }
        // Check to see if DBInstanceClass property is set
        internal bool IsSetDBInstanceClass()
        {
            return this._dbInstanceClass != null;
        }
        /// 
        /// Gets and sets the property Duration. 
        /// 
        /// The duration of the offering in seconds.
        /// 
        /// 
        public int Duration
        {
            get { return this._duration.GetValueOrDefault(); }
            set { this._duration = value; }
        }
        // Check to see if Duration property is set
        internal bool IsSetDuration()
        {
            return this._duration.HasValue; 
        }
        /// 
        /// Gets and sets the property FixedPrice. 
        /// 
        /// The fixed price charged for this offering.
        /// 
        /// 
        public double FixedPrice
        {
            get { return this._fixedPrice.GetValueOrDefault(); }
            set { this._fixedPrice = value; }
        }
        // Check to see if FixedPrice property is set
        internal bool IsSetFixedPrice()
        {
            return this._fixedPrice.HasValue; 
        }
        /// 
        /// Gets and sets the property MultiAZ. 
        /// 
        /// Indicates if the offering applies to Multi-AZ deployments.
        /// 
        /// 
        public bool MultiAZ
        {
            get { return this._multiAZ.GetValueOrDefault(); }
            set { this._multiAZ = value; }
        }
        // Check to see if MultiAZ property is set
        internal bool IsSetMultiAZ()
        {
            return this._multiAZ.HasValue; 
        }
        /// 
        /// Gets and sets the property OfferingType. 
        /// 
        /// The offering type.
        /// 
        /// 
        public string OfferingType
        {
            get { return this._offeringType; }
            set { this._offeringType = value; }
        }
        // Check to see if OfferingType property is set
        internal bool IsSetOfferingType()
        {
            return this._offeringType != null;
        }
        /// 
        /// Gets and sets the property ProductDescription. 
        /// 
        /// The database engine used by the offering.
        /// 
        /// 
        public string ProductDescription
        {
            get { return this._productDescription; }
            set { this._productDescription = value; }
        }
        // Check to see if ProductDescription property is set
        internal bool IsSetProductDescription()
        {
            return this._productDescription != null;
        }
        /// 
        /// Gets and sets the property RecurringCharges. 
        /// 
        /// The recurring price charged to run this reserved DB instance.
        /// 
        /// 
        public List RecurringCharges
        {
            get { return this._recurringCharges; }
            set { this._recurringCharges = value; }
        }
        // Check to see if RecurringCharges property is set
        internal bool IsSetRecurringCharges()
        {
            return this._recurringCharges != null && this._recurringCharges.Count > 0; 
        }
        /// 
        /// Gets and sets the property ReservedDBInstancesOfferingId. 
        /// 
        /// The offering identifier.
        /// 
        /// 
        public string ReservedDBInstancesOfferingId
        {
            get { return this._reservedDBInstancesOfferingId; }
            set { this._reservedDBInstancesOfferingId = value; }
        }
        // Check to see if ReservedDBInstancesOfferingId property is set
        internal bool IsSetReservedDBInstancesOfferingId()
        {
            return this._reservedDBInstancesOfferingId != null;
        }
        /// 
        /// Gets and sets the property UsagePrice. 
        /// 
        /// The hourly price charged for this offering.
        /// 
        /// 
        public double UsagePrice
        {
            get { return this._usagePrice.GetValueOrDefault(); }
            set { this._usagePrice = value; }
        }
        // Check to see if UsagePrice property is set
        internal bool IsSetUsagePrice()
        {
            return this._usagePrice.HasValue; 
        }
    }
}