/* 
 * 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>
    /// UpdateParametersCODTO
    /// </summary>
    [DataContract]
        public partial class UpdateParametersCODTO :  IEquatable<UpdateParametersCODTO>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="UpdateParametersCODTO" /> class.
        /// </summary>
        /// <param name="mg28IdsToUpdate">mg28IdsToUpdate.</param>
        /// <param name="idIntermediario">idIntermediario.</param>
        /// <param name="tipoPlafond">tipoPlafond.</param>
        /// <param name="flgDichivapres">flgDichivapres.</param>
        /// <param name="flgEsport">flgEsport.</param>
        /// <param name="flgCessintra">flgCessintra.</param>
        /// <param name="flgCessanmarino">flgCessanmarino.</param>
        /// <param name="flgOperassim">flgOperassim.</param>
        /// <param name="flgOperstraord">flgOperstraord.</param>
        /// <param name="impeData">impeData.</param>
        /// <param name="mgflId">mgflId.</param>
        /// <param name="additionalData">additionalData.</param>
        /// <param name="pluginData">pluginData.</param>
        public UpdateParametersCODTO(List<int?> mg28IdsToUpdate = default(List<int?>), double? idIntermediario = default(double?), double? tipoPlafond = default(double?), int? flgDichivapres = default(int?), int? flgEsport = default(int?), int? flgCessintra = default(int?), int? flgCessanmarino = default(int?), int? flgOperassim = default(int?), int? flgOperstraord = default(int?), DateTime? impeData = default(DateTime?), int? mgflId = default(int?), Dictionary<string, Object> additionalData = default(Dictionary<string, Object>), Dictionary<string, Object> pluginData = default(Dictionary<string, Object>))
        {
            this.Mg28IdsToUpdate = mg28IdsToUpdate;
            this.IdIntermediario = idIntermediario;
            this.TipoPlafond = tipoPlafond;
            this.FlgDichivapres = flgDichivapres;
            this.FlgEsport = flgEsport;
            this.FlgCessintra = flgCessintra;
            this.FlgCessanmarino = flgCessanmarino;
            this.FlgOperassim = flgOperassim;
            this.FlgOperstraord = flgOperstraord;
            this.ImpeData = impeData;
            this.MgflId = mgflId;
            this.AdditionalData = additionalData;
            this.PluginData = pluginData;
        }
        
        /// <summary>
        /// Gets or Sets Mg28IdsToUpdate
        /// </summary>
        [DataMember(Name="mg28IdsToUpdate", EmitDefaultValue=false)]
        public List<int?> Mg28IdsToUpdate { get; set; }

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

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

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

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

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

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

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

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

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

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

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

        /// <summary>
        /// Gets or Sets PluginData
        /// </summary>
        [DataMember(Name="pluginData", EmitDefaultValue=false)]
        public Dictionary<string, Object> PluginData { 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 UpdateParametersCODTO {\n");
            sb.Append("  Mg28IdsToUpdate: ").Append(Mg28IdsToUpdate).Append("\n");
            sb.Append("  IdIntermediario: ").Append(IdIntermediario).Append("\n");
            sb.Append("  TipoPlafond: ").Append(TipoPlafond).Append("\n");
            sb.Append("  FlgDichivapres: ").Append(FlgDichivapres).Append("\n");
            sb.Append("  FlgEsport: ").Append(FlgEsport).Append("\n");
            sb.Append("  FlgCessintra: ").Append(FlgCessintra).Append("\n");
            sb.Append("  FlgCessanmarino: ").Append(FlgCessanmarino).Append("\n");
            sb.Append("  FlgOperassim: ").Append(FlgOperassim).Append("\n");
            sb.Append("  FlgOperstraord: ").Append(FlgOperstraord).Append("\n");
            sb.Append("  ImpeData: ").Append(ImpeData).Append("\n");
            sb.Append("  MgflId: ").Append(MgflId).Append("\n");
            sb.Append("  AdditionalData: ").Append(AdditionalData).Append("\n");
            sb.Append("  PluginData: ").Append(PluginData).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 UpdateParametersCODTO);
        }

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

            return 
                (
                    this.Mg28IdsToUpdate == input.Mg28IdsToUpdate ||
                    this.Mg28IdsToUpdate != null &&
                    input.Mg28IdsToUpdate != null &&
                    this.Mg28IdsToUpdate.SequenceEqual(input.Mg28IdsToUpdate)
                ) && 
                (
                    this.IdIntermediario == input.IdIntermediario ||
                    (this.IdIntermediario != null &&
                    this.IdIntermediario.Equals(input.IdIntermediario))
                ) && 
                (
                    this.TipoPlafond == input.TipoPlafond ||
                    (this.TipoPlafond != null &&
                    this.TipoPlafond.Equals(input.TipoPlafond))
                ) && 
                (
                    this.FlgDichivapres == input.FlgDichivapres ||
                    (this.FlgDichivapres != null &&
                    this.FlgDichivapres.Equals(input.FlgDichivapres))
                ) && 
                (
                    this.FlgEsport == input.FlgEsport ||
                    (this.FlgEsport != null &&
                    this.FlgEsport.Equals(input.FlgEsport))
                ) && 
                (
                    this.FlgCessintra == input.FlgCessintra ||
                    (this.FlgCessintra != null &&
                    this.FlgCessintra.Equals(input.FlgCessintra))
                ) && 
                (
                    this.FlgCessanmarino == input.FlgCessanmarino ||
                    (this.FlgCessanmarino != null &&
                    this.FlgCessanmarino.Equals(input.FlgCessanmarino))
                ) && 
                (
                    this.FlgOperassim == input.FlgOperassim ||
                    (this.FlgOperassim != null &&
                    this.FlgOperassim.Equals(input.FlgOperassim))
                ) && 
                (
                    this.FlgOperstraord == input.FlgOperstraord ||
                    (this.FlgOperstraord != null &&
                    this.FlgOperstraord.Equals(input.FlgOperstraord))
                ) && 
                (
                    this.ImpeData == input.ImpeData ||
                    (this.ImpeData != null &&
                    this.ImpeData.Equals(input.ImpeData))
                ) && 
                (
                    this.MgflId == input.MgflId ||
                    (this.MgflId != null &&
                    this.MgflId.Equals(input.MgflId))
                ) && 
                (
                    this.AdditionalData == input.AdditionalData ||
                    this.AdditionalData != null &&
                    input.AdditionalData != null &&
                    this.AdditionalData.SequenceEqual(input.AdditionalData)
                ) && 
                (
                    this.PluginData == input.PluginData ||
                    this.PluginData != null &&
                    input.PluginData != null &&
                    this.PluginData.SequenceEqual(input.PluginData)
                );
        }

        /// <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.Mg28IdsToUpdate != null)
                    hashCode = hashCode * 59 + this.Mg28IdsToUpdate.GetHashCode();
                if (this.IdIntermediario != null)
                    hashCode = hashCode * 59 + this.IdIntermediario.GetHashCode();
                if (this.TipoPlafond != null)
                    hashCode = hashCode * 59 + this.TipoPlafond.GetHashCode();
                if (this.FlgDichivapres != null)
                    hashCode = hashCode * 59 + this.FlgDichivapres.GetHashCode();
                if (this.FlgEsport != null)
                    hashCode = hashCode * 59 + this.FlgEsport.GetHashCode();
                if (this.FlgCessintra != null)
                    hashCode = hashCode * 59 + this.FlgCessintra.GetHashCode();
                if (this.FlgCessanmarino != null)
                    hashCode = hashCode * 59 + this.FlgCessanmarino.GetHashCode();
                if (this.FlgOperassim != null)
                    hashCode = hashCode * 59 + this.FlgOperassim.GetHashCode();
                if (this.FlgOperstraord != null)
                    hashCode = hashCode * 59 + this.FlgOperstraord.GetHashCode();
                if (this.ImpeData != null)
                    hashCode = hashCode * 59 + this.ImpeData.GetHashCode();
                if (this.MgflId != null)
                    hashCode = hashCode * 59 + this.MgflId.GetHashCode();
                if (this.AdditionalData != null)
                    hashCode = hashCode * 59 + this.AdditionalData.GetHashCode();
                if (this.PluginData != null)
                    hashCode = hashCode * 59 + this.PluginData.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;
        }
    }
}
