/*
 * 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 amplifyuibuilder-2021-08-11.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.AmplifyUIBuilder.Model
{
    /// 
    /// Updates and saves all of the information about a form, based on form ID.
    /// 
    public partial class UpdateFormData
    {
        private FormCTA _cta;
        private FormDataTypeConfig _dataType;
        private Dictionary _fields = new Dictionary();
        private FormActionType _formActionType;
        private LabelDecorator _labelDecorator;
        private string _name;
        private string _schemaVersion;
        private Dictionary _sectionalElements = new Dictionary();
        private FormStyle _style;
        /// 
        /// Gets and sets the property Cta. 
        /// 
        /// The FormCTA object that stores the call to action configuration for the
        /// form.
        /// 
        /// 
        public FormCTA Cta
        {
            get { return this._cta; }
            set { this._cta = value; }
        }
        // Check to see if Cta property is set
        internal bool IsSetCta()
        {
            return this._cta != null;
        }
        /// 
        /// Gets and sets the property DataType. 
        /// 
        /// The type of data source to use to create the form.
        /// 
        /// 
        public FormDataTypeConfig DataType
        {
            get { return this._dataType; }
            set { this._dataType = value; }
        }
        // Check to see if DataType property is set
        internal bool IsSetDataType()
        {
            return this._dataType != null;
        }
        /// 
        /// Gets and sets the property Fields. 
        /// 
        /// The configuration information for the form's fields.
        /// 
        /// 
        public Dictionary Fields
        {
            get { return this._fields; }
            set { this._fields = value; }
        }
        // Check to see if Fields property is set
        internal bool IsSetFields()
        {
            return this._fields != null && this._fields.Count > 0; 
        }
        /// 
        /// Gets and sets the property FormActionType. 
        /// 
        /// Specifies whether to perform a create or update action on the form.
        /// 
        /// 
        public FormActionType FormActionType
        {
            get { return this._formActionType; }
            set { this._formActionType = value; }
        }
        // Check to see if FormActionType property is set
        internal bool IsSetFormActionType()
        {
            return this._formActionType != null;
        }
        /// 
        /// Gets and sets the property LabelDecorator. 
        /// 
        /// Specifies an icon or decoration to display on the form.
        /// 
        /// 
        public LabelDecorator LabelDecorator
        {
            get { return this._labelDecorator; }
            set { this._labelDecorator = value; }
        }
        // Check to see if LabelDecorator property is set
        internal bool IsSetLabelDecorator()
        {
            return this._labelDecorator != null;
        }
        /// 
        /// Gets and sets the property Name. 
        /// 
        /// The name of the form.
        /// 
        /// 
        [AWSProperty(Min=1, Max=255)]
        public string Name
        {
            get { return this._name; }
            set { this._name = value; }
        }
        // Check to see if Name property is set
        internal bool IsSetName()
        {
            return this._name != null;
        }
        /// 
        /// Gets and sets the property SchemaVersion. 
        /// 
        /// The schema version of the form.
        /// 
        /// 
        public string SchemaVersion
        {
            get { return this._schemaVersion; }
            set { this._schemaVersion = value; }
        }
        // Check to see if SchemaVersion property is set
        internal bool IsSetSchemaVersion()
        {
            return this._schemaVersion != null;
        }
        /// 
        /// Gets and sets the property SectionalElements. 
        /// 
        /// The configuration information for the visual helper elements for the form. These elements
        /// are not associated with any data.
        /// 
        /// 
        public Dictionary SectionalElements
        {
            get { return this._sectionalElements; }
            set { this._sectionalElements = value; }
        }
        // Check to see if SectionalElements property is set
        internal bool IsSetSectionalElements()
        {
            return this._sectionalElements != null && this._sectionalElements.Count > 0; 
        }
        /// 
        /// Gets and sets the property Style. 
        /// 
        /// The configuration for the form's style.
        /// 
        /// 
        public FormStyle Style
        {
            get { return this._style; }
            set { this._style = value; }
        }
        // Check to see if Style property is set
        internal bool IsSetStyle()
        {
            return this._style != null;
        }
    }
}