<filename>csharp/src/Dojah.Net/Model/GetDocumentAnalysisResponseEntityData.cs<gh_stars>0/*
 * DOJAH APIs
 *
 * Use Dojah to verify, onboard and manage user identity across Africa!
 *
 * The version of the OpenAPI document: 1.0.0
 * Generated by: https://konfigthis.com
 */


using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System.ComponentModel.DataAnnotations;
using OpenAPIDateConverter = Dojah.Net.Client.OpenAPIDateConverter;

namespace Dojah.Net.Model
{
    /// <summary>
    /// GetDocumentAnalysisResponseEntityData
    /// </summary>
    [DataContract(Name = "GetDocumentAnalysisResponse_entity_data")]
    public partial class GetDocumentAnalysisResponseEntityData : IEquatable<GetDocumentAnalysisResponseEntityData>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GetDocumentAnalysisResponseEntityData" /> class.
        /// </summary>
        /// <param name="aDDRESS">aDDRESS.</param>
        /// <param name="cITYINADDRESS">cITYINADDRESS.</param>
        /// <param name="cLASS">cLASS.</param>
        /// <param name="cOUNTY">cOUNTY.</param>
        /// <param name="dATEOFBIRTH">dATEOFBIRTH.</param>
        /// <param name="dATEOFISSUE">dATEOFISSUE.</param>
        /// <param name="dOCUMENTNUMBER">dOCUMENTNUMBER.</param>
        /// <param name="eNDORSEMENTS">eNDORSEMENTS.</param>
        /// <param name="eXPIRATIONDATE">eXPIRATIONDATE.</param>
        /// <param name="fIRSTNAME">fIRSTNAME.</param>
        /// <param name="iDTYPE">iDTYPE.</param>
        /// <param name="lASTNAME">lASTNAME.</param>
        /// <param name="mIDDLENAME">mIDDLENAME.</param>
        /// <param name="pLACEOFBIRTH">pLACEOFBIRTH.</param>
        /// <param name="rESTRICTIONS">rESTRICTIONS.</param>
        /// <param name="sTATEINADDRESS">sTATEINADDRESS.</param>
        /// <param name="sTATENAME">sTATENAME.</param>
        /// <param name="sUFFIX">sUFFIX.</param>
        /// <param name="vETERAN">vETERAN.</param>
        /// <param name="zIPCODEINADDRESS">zIPCODEINADDRESS.</param>
        public GetDocumentAnalysisResponseEntityData(string aDDRESS = default(string), string cITYINADDRESS = default(string), string cLASS = default(string), string cOUNTY = default(string), string dATEOFBIRTH = default(string), string dATEOFISSUE = default(string), string dOCUMENTNUMBER = default(string), string eNDORSEMENTS = default(string), string eXPIRATIONDATE = default(string), string fIRSTNAME = default(string), string iDTYPE = default(string), string lASTNAME = default(string), string mIDDLENAME = default(string), string pLACEOFBIRTH = default(string), string rESTRICTIONS = default(string), string sTATEINADDRESS = default(string), string sTATENAME = default(string), string sUFFIX = default(string), string vETERAN = default(string), string zIPCODEINADDRESS = default(string))
        {
            this.ADDRESS = aDDRESS;
            this.CITY_IN_ADDRESS = cITYINADDRESS;
            this.CLASS = cLASS;
            this.COUNTY = cOUNTY;
            this.DATE_OF_BIRTH = dATEOFBIRTH;
            this.DATE_OF_ISSUE = dATEOFISSUE;
            this.DOCUMENT_NUMBER = dOCUMENTNUMBER;
            this.ENDORSEMENTS = eNDORSEMENTS;
            this.EXPIRATION_DATE = eXPIRATIONDATE;
            this.FIRST_NAME = fIRSTNAME;
            this.ID_TYPE = iDTYPE;
            this.LAST_NAME = lASTNAME;
            this.MIDDLE_NAME = mIDDLENAME;
            this.PLACE_OF_BIRTH = pLACEOFBIRTH;
            this.RESTRICTIONS = rESTRICTIONS;
            this.STATE_IN_ADDRESS = sTATEINADDRESS;
            this.STATE_NAME = sTATENAME;
            this.SUFFIX = sUFFIX;
            this.VETERAN = vETERAN;
            this.ZIP_CODE_IN_ADDRESS = zIPCODEINADDRESS;
        }

        /// <summary>
        /// Gets or Sets ADDRESS
        /// </summary>
        [DataMember(Name = "ADDRESS", EmitDefaultValue = false)]
        public string ADDRESS { get; set; }

        /// <summary>
        /// Gets or Sets CITY_IN_ADDRESS
        /// </summary>
        [DataMember(Name = "CITY_IN_ADDRESS", EmitDefaultValue = false)]
        public string CITY_IN_ADDRESS { get; set; }

        /// <summary>
        /// Gets or Sets CLASS
        /// </summary>
        [DataMember(Name = "CLASS", EmitDefaultValue = false)]
        public string CLASS { get; set; }

        /// <summary>
        /// Gets or Sets COUNTY
        /// </summary>
        [DataMember(Name = "COUNTY", EmitDefaultValue = false)]
        public string COUNTY { get; set; }

        /// <summary>
        /// Gets or Sets DATE_OF_BIRTH
        /// </summary>
        [DataMember(Name = "DATE_OF_BIRTH", EmitDefaultValue = false)]
        public string DATE_OF_BIRTH { get; set; }

        /// <summary>
        /// Gets or Sets DATE_OF_ISSUE
        /// </summary>
        [DataMember(Name = "DATE_OF_ISSUE", EmitDefaultValue = false)]
        public string DATE_OF_ISSUE { get; set; }

        /// <summary>
        /// Gets or Sets DOCUMENT_NUMBER
        /// </summary>
        [DataMember(Name = "DOCUMENT_NUMBER", EmitDefaultValue = false)]
        public string DOCUMENT_NUMBER { get; set; }

        /// <summary>
        /// Gets or Sets ENDORSEMENTS
        /// </summary>
        [DataMember(Name = "ENDORSEMENTS", EmitDefaultValue = false)]
        public string ENDORSEMENTS { get; set; }

        /// <summary>
        /// Gets or Sets EXPIRATION_DATE
        /// </summary>
        [DataMember(Name = "EXPIRATION_DATE", EmitDefaultValue = false)]
        public string EXPIRATION_DATE { get; set; }

        /// <summary>
        /// Gets or Sets FIRST_NAME
        /// </summary>
        [DataMember(Name = "FIRST_NAME", EmitDefaultValue = false)]
        public string FIRST_NAME { get; set; }

        /// <summary>
        /// Gets or Sets ID_TYPE
        /// </summary>
        [DataMember(Name = "ID_TYPE", EmitDefaultValue = false)]
        public string ID_TYPE { get; set; }

        /// <summary>
        /// Gets or Sets LAST_NAME
        /// </summary>
        [DataMember(Name = "LAST_NAME", EmitDefaultValue = false)]
        public string LAST_NAME { get; set; }

        /// <summary>
        /// Gets or Sets MIDDLE_NAME
        /// </summary>
        [DataMember(Name = "MIDDLE_NAME", EmitDefaultValue = false)]
        public string MIDDLE_NAME { get; set; }

        /// <summary>
        /// Gets or Sets PLACE_OF_BIRTH
        /// </summary>
        [DataMember(Name = "PLACE_OF_BIRTH", EmitDefaultValue = false)]
        public string PLACE_OF_BIRTH { get; set; }

        /// <summary>
        /// Gets or Sets RESTRICTIONS
        /// </summary>
        [DataMember(Name = "RESTRICTIONS", EmitDefaultValue = false)]
        public string RESTRICTIONS { get; set; }

        /// <summary>
        /// Gets or Sets STATE_IN_ADDRESS
        /// </summary>
        [DataMember(Name = "STATE_IN_ADDRESS", EmitDefaultValue = false)]
        public string STATE_IN_ADDRESS { get; set; }

        /// <summary>
        /// Gets or Sets STATE_NAME
        /// </summary>
        [DataMember(Name = "STATE_NAME", EmitDefaultValue = false)]
        public string STATE_NAME { get; set; }

        /// <summary>
        /// Gets or Sets SUFFIX
        /// </summary>
        [DataMember(Name = "SUFFIX", EmitDefaultValue = false)]
        public string SUFFIX { get; set; }

        /// <summary>
        /// Gets or Sets VETERAN
        /// </summary>
        [DataMember(Name = "VETERAN", EmitDefaultValue = false)]
        public string VETERAN { get; set; }

        /// <summary>
        /// Gets or Sets ZIP_CODE_IN_ADDRESS
        /// </summary>
        [DataMember(Name = "ZIP_CODE_IN_ADDRESS", EmitDefaultValue = false)]
        public string ZIP_CODE_IN_ADDRESS { get; set; }

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("class GetDocumentAnalysisResponseEntityData {\n");
            sb.Append("  ADDRESS: ").Append(ADDRESS).Append("\n");
            sb.Append("  CITY_IN_ADDRESS: ").Append(CITY_IN_ADDRESS).Append("\n");
            sb.Append("  CLASS: ").Append(CLASS).Append("\n");
            sb.Append("  COUNTY: ").Append(COUNTY).Append("\n");
            sb.Append("  DATE_OF_BIRTH: ").Append(DATE_OF_BIRTH).Append("\n");
            sb.Append("  DATE_OF_ISSUE: ").Append(DATE_OF_ISSUE).Append("\n");
            sb.Append("  DOCUMENT_NUMBER: ").Append(DOCUMENT_NUMBER).Append("\n");
            sb.Append("  ENDORSEMENTS: ").Append(ENDORSEMENTS).Append("\n");
            sb.Append("  EXPIRATION_DATE: ").Append(EXPIRATION_DATE).Append("\n");
            sb.Append("  FIRST_NAME: ").Append(FIRST_NAME).Append("\n");
            sb.Append("  ID_TYPE: ").Append(ID_TYPE).Append("\n");
            sb.Append("  LAST_NAME: ").Append(LAST_NAME).Append("\n");
            sb.Append("  MIDDLE_NAME: ").Append(MIDDLE_NAME).Append("\n");
            sb.Append("  PLACE_OF_BIRTH: ").Append(PLACE_OF_BIRTH).Append("\n");
            sb.Append("  RESTRICTIONS: ").Append(RESTRICTIONS).Append("\n");
            sb.Append("  STATE_IN_ADDRESS: ").Append(STATE_IN_ADDRESS).Append("\n");
            sb.Append("  STATE_NAME: ").Append(STATE_NAME).Append("\n");
            sb.Append("  SUFFIX: ").Append(SUFFIX).Append("\n");
            sb.Append("  VETERAN: ").Append(VETERAN).Append("\n");
            sb.Append("  ZIP_CODE_IN_ADDRESS: ").Append(ZIP_CODE_IN_ADDRESS).Append("\n");
            sb.Append("}\n");
            return sb.ToString();
        }

        /// <summary>
        /// Returns the JSON string presentation of the object
        /// </summary>
        /// <returns>JSON string presentation of the object</returns>
        public virtual string ToJson()
        {
            return Newtonsoft.Json.JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.Indented);
        }

        /// <summary>
        /// Returns true if objects are equal
        /// </summary>
        /// <param name="input">Object to be compared</param>
        /// <returns>Boolean</returns>
        public override bool Equals(object input)
        {
            return this.Equals(input as GetDocumentAnalysisResponseEntityData);
        }

        /// <summary>
        /// Returns true if GetDocumentAnalysisResponseEntityData instances are equal
        /// </summary>
        /// <param name="input">Instance of GetDocumentAnalysisResponseEntityData to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(GetDocumentAnalysisResponseEntityData input)
        {
            if (input == null)
            {
                return false;
            }
            return 
                (
                    this.ADDRESS == input.ADDRESS ||
                    (this.ADDRESS != null &&
                    this.ADDRESS.Equals(input.ADDRESS))
                ) && 
                (
                    this.CITY_IN_ADDRESS == input.CITY_IN_ADDRESS ||
                    (this.CITY_IN_ADDRESS != null &&
                    this.CITY_IN_ADDRESS.Equals(input.CITY_IN_ADDRESS))
                ) && 
                (
                    this.CLASS == input.CLASS ||
                    (this.CLASS != null &&
                    this.CLASS.Equals(input.CLASS))
                ) && 
                (
                    this.COUNTY == input.COUNTY ||
                    (this.COUNTY != null &&
                    this.COUNTY.Equals(input.COUNTY))
                ) && 
                (
                    this.DATE_OF_BIRTH == input.DATE_OF_BIRTH ||
                    (this.DATE_OF_BIRTH != null &&
                    this.DATE_OF_BIRTH.Equals(input.DATE_OF_BIRTH))
                ) && 
                (
                    this.DATE_OF_ISSUE == input.DATE_OF_ISSUE ||
                    (this.DATE_OF_ISSUE != null &&
                    this.DATE_OF_ISSUE.Equals(input.DATE_OF_ISSUE))
                ) && 
                (
                    this.DOCUMENT_NUMBER == input.DOCUMENT_NUMBER ||
                    (this.DOCUMENT_NUMBER != null &&
                    this.DOCUMENT_NUMBER.Equals(input.DOCUMENT_NUMBER))
                ) && 
                (
                    this.ENDORSEMENTS == input.ENDORSEMENTS ||
                    (this.ENDORSEMENTS != null &&
                    this.ENDORSEMENTS.Equals(input.ENDORSEMENTS))
                ) && 
                (
                    this.EXPIRATION_DATE == input.EXPIRATION_DATE ||
                    (this.EXPIRATION_DATE != null &&
                    this.EXPIRATION_DATE.Equals(input.EXPIRATION_DATE))
                ) && 
                (
                    this.FIRST_NAME == input.FIRST_NAME ||
                    (this.FIRST_NAME != null &&
                    this.FIRST_NAME.Equals(input.FIRST_NAME))
                ) && 
                (
                    this.ID_TYPE == input.ID_TYPE ||
                    (this.ID_TYPE != null &&
                    this.ID_TYPE.Equals(input.ID_TYPE))
                ) && 
                (
                    this.LAST_NAME == input.LAST_NAME ||
                    (this.LAST_NAME != null &&
                    this.LAST_NAME.Equals(input.LAST_NAME))
                ) && 
                (
                    this.MIDDLE_NAME == input.MIDDLE_NAME ||
                    (this.MIDDLE_NAME != null &&
                    this.MIDDLE_NAME.Equals(input.MIDDLE_NAME))
                ) && 
                (
                    this.PLACE_OF_BIRTH == input.PLACE_OF_BIRTH ||
                    (this.PLACE_OF_BIRTH != null &&
                    this.PLACE_OF_BIRTH.Equals(input.PLACE_OF_BIRTH))
                ) && 
                (
                    this.RESTRICTIONS == input.RESTRICTIONS ||
                    (this.RESTRICTIONS != null &&
                    this.RESTRICTIONS.Equals(input.RESTRICTIONS))
                ) && 
                (
                    this.STATE_IN_ADDRESS == input.STATE_IN_ADDRESS ||
                    (this.STATE_IN_ADDRESS != null &&
                    this.STATE_IN_ADDRESS.Equals(input.STATE_IN_ADDRESS))
                ) && 
                (
                    this.STATE_NAME == input.STATE_NAME ||
                    (this.STATE_NAME != null &&
                    this.STATE_NAME.Equals(input.STATE_NAME))
                ) && 
                (
                    this.SUFFIX == input.SUFFIX ||
                    (this.SUFFIX != null &&
                    this.SUFFIX.Equals(input.SUFFIX))
                ) && 
                (
                    this.VETERAN == input.VETERAN ||
                    (this.VETERAN != null &&
                    this.VETERAN.Equals(input.VETERAN))
                ) && 
                (
                    this.ZIP_CODE_IN_ADDRESS == input.ZIP_CODE_IN_ADDRESS ||
                    (this.ZIP_CODE_IN_ADDRESS != null &&
                    this.ZIP_CODE_IN_ADDRESS.Equals(input.ZIP_CODE_IN_ADDRESS))
                );
        }

        /// <summary>
        /// Gets the hash code
        /// </summary>
        /// <returns>Hash code</returns>
        public override int GetHashCode()
        {
            unchecked // Overflow is fine, just wrap
            {
                int hashCode = 41;
                if (this.ADDRESS != null)
                {
                    hashCode = (hashCode * 59) + this.ADDRESS.GetHashCode();
                }
                if (this.CITY_IN_ADDRESS != null)
                {
                    hashCode = (hashCode * 59) + this.CITY_IN_ADDRESS.GetHashCode();
                }
                if (this.CLASS != null)
                {
                    hashCode = (hashCode * 59) + this.CLASS.GetHashCode();
                }
                if (this.COUNTY != null)
                {
                    hashCode = (hashCode * 59) + this.COUNTY.GetHashCode();
                }
                if (this.DATE_OF_BIRTH != null)
                {
                    hashCode = (hashCode * 59) + this.DATE_OF_BIRTH.GetHashCode();
                }
                if (this.DATE_OF_ISSUE != null)
                {
                    hashCode = (hashCode * 59) + this.DATE_OF_ISSUE.GetHashCode();
                }
                if (this.DOCUMENT_NUMBER != null)
                {
                    hashCode = (hashCode * 59) + this.DOCUMENT_NUMBER.GetHashCode();
                }
                if (this.ENDORSEMENTS != null)
                {
                    hashCode = (hashCode * 59) + this.ENDORSEMENTS.GetHashCode();
                }
                if (this.EXPIRATION_DATE != null)
                {
                    hashCode = (hashCode * 59) + this.EXPIRATION_DATE.GetHashCode();
                }
                if (this.FIRST_NAME != null)
                {
                    hashCode = (hashCode * 59) + this.FIRST_NAME.GetHashCode();
                }
                if (this.ID_TYPE != null)
                {
                    hashCode = (hashCode * 59) + this.ID_TYPE.GetHashCode();
                }
                if (this.LAST_NAME != null)
                {
                    hashCode = (hashCode * 59) + this.LAST_NAME.GetHashCode();
                }
                if (this.MIDDLE_NAME != null)
                {
                    hashCode = (hashCode * 59) + this.MIDDLE_NAME.GetHashCode();
                }
                if (this.PLACE_OF_BIRTH != null)
                {
                    hashCode = (hashCode * 59) + this.PLACE_OF_BIRTH.GetHashCode();
                }
                if (this.RESTRICTIONS != null)
                {
                    hashCode = (hashCode * 59) + this.RESTRICTIONS.GetHashCode();
                }
                if (this.STATE_IN_ADDRESS != null)
                {
                    hashCode = (hashCode * 59) + this.STATE_IN_ADDRESS.GetHashCode();
                }
                if (this.STATE_NAME != null)
                {
                    hashCode = (hashCode * 59) + this.STATE_NAME.GetHashCode();
                }
                if (this.SUFFIX != null)
                {
                    hashCode = (hashCode * 59) + this.SUFFIX.GetHashCode();
                }
                if (this.VETERAN != null)
                {
                    hashCode = (hashCode * 59) + this.VETERAN.GetHashCode();
                }
                if (this.ZIP_CODE_IN_ADDRESS != null)
                {
                    hashCode = (hashCode * 59) + this.ZIP_CODE_IN_ADDRESS.GetHashCode();
                }
                return hashCode;
            }
        }

        /// <summary>
        /// To validate all properties of the instance
        /// </summary>
        /// <param name="validationContext">Validation context</param>
        /// <returns>Validation Result</returns>
        public IEnumerable<System.ComponentModel.DataAnnotations.ValidationResult> Validate(ValidationContext validationContext)
        {
            yield break;
        }
    }

}
