/* 
 * TSE Cloud - CO
 *
 * This is Swagger Docs for Document WebApi Teamsystemn Enterprise Cloud, more detail at [https://swagger.io](https://swagger.io).
 *
 * OpenAPI spec version: v2025.3000
 * 
 * Generated by: https://github.com/swagger-api/swagger-codegen.git
 */
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System.ComponentModel.DataAnnotations;
using SwaggerDateConverter = IO.Swagger.Client.SwaggerDateConverter;
namespace IO.Swagger.Model
{
    /// <summary>
    /// Parametri per scrittura dati General Master Data
    /// </summary>
    [DataContract]
        public partial class GMDUpdateAdditionalParametersDTO :  IEquatable<GMDUpdateAdditionalParametersDTO>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="GMDUpdateAdditionalParametersDTO" /> class.
        /// </summary>
        /// <param name="codice">codice.</param>
        /// <param name="ragSoAnag">ragSoAnag.</param>
        /// <param name="indirizzo">indirizzo.</param>
        /// <param name="numCiv">numCiv.</param>
        /// <param name="cap">cap.</param>
        /// <param name="citta">citta.</param>
        /// <param name="prov">prov.</param>
        /// <param name="codiceCg07">codiceCg07.</param>
        /// <param name="partiva">partiva.</param>
        /// <param name="codFiscale">codFiscale.</param>
        /// <param name="tel1Num">tel1Num.</param>
        /// <param name="fax">fax.</param>
        /// <param name="tipologia">tipologia.</param>
        /// <param name="codLegCg01">codLegCg01.</param>
        /// <param name="descrCg07">descrCg07.</param>
        /// <param name="nationIso">nationIso.</param>
        public GMDUpdateAdditionalParametersDTO(int? codice = default(int?), string ragSoAnag = default(string), string indirizzo = default(string), string numCiv = default(string), string cap = default(string), string citta = default(string), string prov = default(string), double? codiceCg07 = default(double?), string partiva = default(string), string codFiscale = default(string), string tel1Num = default(string), string fax = default(string), string tipologia = default(string), string codLegCg01 = default(string), string descrCg07 = default(string), string nationIso = default(string))
        {
            this.Codice = codice;
            this.RagSoAnag = ragSoAnag;
            this.Indirizzo = indirizzo;
            this.NumCiv = numCiv;
            this.Cap = cap;
            this.Citta = citta;
            this.Prov = prov;
            this.CodiceCg07 = codiceCg07;
            this.Partiva = partiva;
            this.CodFiscale = codFiscale;
            this.Tel1Num = tel1Num;
            this.Fax = fax;
            this.Tipologia = tipologia;
            this.CodLegCg01 = codLegCg01;
            this.DescrCg07 = descrCg07;
            this.NationIso = nationIso;
        }
        
        /// <summary>
        /// Gets or Sets Codice
        /// </summary>
        [DataMember(Name="codice", EmitDefaultValue=false)]
        public int? Codice { get; set; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        /// <summary>
        /// Returns the string presentation of the object
        /// </summary>
        /// <returns>String presentation of the object</returns>
        public override string ToString()
        {
            var sb = new StringBuilder();
            sb.Append("class GMDUpdateAdditionalParametersDTO {\n");
            sb.Append("  Codice: ").Append(Codice).Append("\n");
            sb.Append("  RagSoAnag: ").Append(RagSoAnag).Append("\n");
            sb.Append("  Indirizzo: ").Append(Indirizzo).Append("\n");
            sb.Append("  NumCiv: ").Append(NumCiv).Append("\n");
            sb.Append("  Cap: ").Append(Cap).Append("\n");
            sb.Append("  Citta: ").Append(Citta).Append("\n");
            sb.Append("  Prov: ").Append(Prov).Append("\n");
            sb.Append("  CodiceCg07: ").Append(CodiceCg07).Append("\n");
            sb.Append("  Partiva: ").Append(Partiva).Append("\n");
            sb.Append("  CodFiscale: ").Append(CodFiscale).Append("\n");
            sb.Append("  Tel1Num: ").Append(Tel1Num).Append("\n");
            sb.Append("  Fax: ").Append(Fax).Append("\n");
            sb.Append("  Tipologia: ").Append(Tipologia).Append("\n");
            sb.Append("  CodLegCg01: ").Append(CodLegCg01).Append("\n");
            sb.Append("  DescrCg07: ").Append(DescrCg07).Append("\n");
            sb.Append("  NationIso: ").Append(NationIso).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 JsonConvert.SerializeObject(this, 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 GMDUpdateAdditionalParametersDTO);
        }

        /// <summary>
        /// Returns true if GMDUpdateAdditionalParametersDTO instances are equal
        /// </summary>
        /// <param name="input">Instance of GMDUpdateAdditionalParametersDTO to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(GMDUpdateAdditionalParametersDTO input)
        {
            if (input == null)
                return false;

            return 
                (
                    this.Codice == input.Codice ||
                    (this.Codice != null &&
                    this.Codice.Equals(input.Codice))
                ) && 
                (
                    this.RagSoAnag == input.RagSoAnag ||
                    (this.RagSoAnag != null &&
                    this.RagSoAnag.Equals(input.RagSoAnag))
                ) && 
                (
                    this.Indirizzo == input.Indirizzo ||
                    (this.Indirizzo != null &&
                    this.Indirizzo.Equals(input.Indirizzo))
                ) && 
                (
                    this.NumCiv == input.NumCiv ||
                    (this.NumCiv != null &&
                    this.NumCiv.Equals(input.NumCiv))
                ) && 
                (
                    this.Cap == input.Cap ||
                    (this.Cap != null &&
                    this.Cap.Equals(input.Cap))
                ) && 
                (
                    this.Citta == input.Citta ||
                    (this.Citta != null &&
                    this.Citta.Equals(input.Citta))
                ) && 
                (
                    this.Prov == input.Prov ||
                    (this.Prov != null &&
                    this.Prov.Equals(input.Prov))
                ) && 
                (
                    this.CodiceCg07 == input.CodiceCg07 ||
                    (this.CodiceCg07 != null &&
                    this.CodiceCg07.Equals(input.CodiceCg07))
                ) && 
                (
                    this.Partiva == input.Partiva ||
                    (this.Partiva != null &&
                    this.Partiva.Equals(input.Partiva))
                ) && 
                (
                    this.CodFiscale == input.CodFiscale ||
                    (this.CodFiscale != null &&
                    this.CodFiscale.Equals(input.CodFiscale))
                ) && 
                (
                    this.Tel1Num == input.Tel1Num ||
                    (this.Tel1Num != null &&
                    this.Tel1Num.Equals(input.Tel1Num))
                ) && 
                (
                    this.Fax == input.Fax ||
                    (this.Fax != null &&
                    this.Fax.Equals(input.Fax))
                ) && 
                (
                    this.Tipologia == input.Tipologia ||
                    (this.Tipologia != null &&
                    this.Tipologia.Equals(input.Tipologia))
                ) && 
                (
                    this.CodLegCg01 == input.CodLegCg01 ||
                    (this.CodLegCg01 != null &&
                    this.CodLegCg01.Equals(input.CodLegCg01))
                ) && 
                (
                    this.DescrCg07 == input.DescrCg07 ||
                    (this.DescrCg07 != null &&
                    this.DescrCg07.Equals(input.DescrCg07))
                ) && 
                (
                    this.NationIso == input.NationIso ||
                    (this.NationIso != null &&
                    this.NationIso.Equals(input.NationIso))
                );
        }

        /// <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.Codice != null)
                    hashCode = hashCode * 59 + this.Codice.GetHashCode();
                if (this.RagSoAnag != null)
                    hashCode = hashCode * 59 + this.RagSoAnag.GetHashCode();
                if (this.Indirizzo != null)
                    hashCode = hashCode * 59 + this.Indirizzo.GetHashCode();
                if (this.NumCiv != null)
                    hashCode = hashCode * 59 + this.NumCiv.GetHashCode();
                if (this.Cap != null)
                    hashCode = hashCode * 59 + this.Cap.GetHashCode();
                if (this.Citta != null)
                    hashCode = hashCode * 59 + this.Citta.GetHashCode();
                if (this.Prov != null)
                    hashCode = hashCode * 59 + this.Prov.GetHashCode();
                if (this.CodiceCg07 != null)
                    hashCode = hashCode * 59 + this.CodiceCg07.GetHashCode();
                if (this.Partiva != null)
                    hashCode = hashCode * 59 + this.Partiva.GetHashCode();
                if (this.CodFiscale != null)
                    hashCode = hashCode * 59 + this.CodFiscale.GetHashCode();
                if (this.Tel1Num != null)
                    hashCode = hashCode * 59 + this.Tel1Num.GetHashCode();
                if (this.Fax != null)
                    hashCode = hashCode * 59 + this.Fax.GetHashCode();
                if (this.Tipologia != null)
                    hashCode = hashCode * 59 + this.Tipologia.GetHashCode();
                if (this.CodLegCg01 != null)
                    hashCode = hashCode * 59 + this.CodLegCg01.GetHashCode();
                if (this.DescrCg07 != null)
                    hashCode = hashCode * 59 + this.DescrCg07.GetHashCode();
                if (this.NationIso != null)
                    hashCode = hashCode * 59 + this.NationIso.GetHashCode();
                return hashCode;
            }
        }

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