/* 
 * 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>
    /// ImportExportRowResultDTO
    /// </summary>
    [DataContract]
        public partial class ImportExportRowResultDTO :  IEquatable<ImportExportRowResultDTO>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ImportExportRowResultDTO" /> class.
        /// </summary>
        /// <param name="typeResult">Type Result.</param>
        /// <param name="typeResultDescription">Type Result Description.</param>
        /// <param name="description">Description.</param>
        /// <param name="isDone">Is Done.</param>
        /// <param name="isImportance">Is Importance.</param>
        /// <param name="isError">Is Error.</param>
        /// <param name="isWarning">Is Warning.</param>
        /// <param name="isInformation">Is Information.</param>
        /// <param name="isCreate">Is Create.</param>
        /// <param name="isUpdate">Is Update.</param>
        /// <param name="isDelete">Is Delete.</param>
        public ImportExportRowResultDTO(int? typeResult = default(int?), string typeResultDescription = default(string), string description = default(string), bool? isDone = default(bool?), bool? isImportance = default(bool?), bool? isError = default(bool?), bool? isWarning = default(bool?), bool? isInformation = default(bool?), bool? isCreate = default(bool?), bool? isUpdate = default(bool?), bool? isDelete = default(bool?))
        {
            this.TypeResult = typeResult;
            this.TypeResultDescription = typeResultDescription;
            this.Description = description;
            this.IsDone = isDone;
            this.IsImportance = isImportance;
            this.IsError = isError;
            this.IsWarning = isWarning;
            this.IsInformation = isInformation;
            this.IsCreate = isCreate;
            this.IsUpdate = isUpdate;
            this.IsDelete = isDelete;
        }
        
        /// <summary>
        /// Type Result
        /// </summary>
        /// <value>Type Result</value>
        [DataMember(Name="typeResult", EmitDefaultValue=false)]
        public int? TypeResult { get; set; }

        /// <summary>
        /// Type Result Description
        /// </summary>
        /// <value>Type Result Description</value>
        [DataMember(Name="typeResultDescription", EmitDefaultValue=false)]
        public string TypeResultDescription { get; set; }

        /// <summary>
        /// Description
        /// </summary>
        /// <value>Description</value>
        [DataMember(Name="description", EmitDefaultValue=false)]
        public string Description { get; set; }

        /// <summary>
        /// Is Done
        /// </summary>
        /// <value>Is Done</value>
        [DataMember(Name="isDone", EmitDefaultValue=false)]
        public bool? IsDone { get; set; }

        /// <summary>
        /// Is Importance
        /// </summary>
        /// <value>Is Importance</value>
        [DataMember(Name="isImportance", EmitDefaultValue=false)]
        public bool? IsImportance { get; set; }

        /// <summary>
        /// Is Error
        /// </summary>
        /// <value>Is Error</value>
        [DataMember(Name="isError", EmitDefaultValue=false)]
        public bool? IsError { get; set; }

        /// <summary>
        /// Is Warning
        /// </summary>
        /// <value>Is Warning</value>
        [DataMember(Name="isWarning", EmitDefaultValue=false)]
        public bool? IsWarning { get; set; }

        /// <summary>
        /// Is Information
        /// </summary>
        /// <value>Is Information</value>
        [DataMember(Name="isInformation", EmitDefaultValue=false)]
        public bool? IsInformation { get; set; }

        /// <summary>
        /// Is Create
        /// </summary>
        /// <value>Is Create</value>
        [DataMember(Name="isCreate", EmitDefaultValue=false)]
        public bool? IsCreate { get; set; }

        /// <summary>
        /// Is Update
        /// </summary>
        /// <value>Is Update</value>
        [DataMember(Name="isUpdate", EmitDefaultValue=false)]
        public bool? IsUpdate { get; set; }

        /// <summary>
        /// Is Delete
        /// </summary>
        /// <value>Is Delete</value>
        [DataMember(Name="isDelete", EmitDefaultValue=false)]
        public bool? IsDelete { 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 ImportExportRowResultDTO {\n");
            sb.Append("  TypeResult: ").Append(TypeResult).Append("\n");
            sb.Append("  TypeResultDescription: ").Append(TypeResultDescription).Append("\n");
            sb.Append("  Description: ").Append(Description).Append("\n");
            sb.Append("  IsDone: ").Append(IsDone).Append("\n");
            sb.Append("  IsImportance: ").Append(IsImportance).Append("\n");
            sb.Append("  IsError: ").Append(IsError).Append("\n");
            sb.Append("  IsWarning: ").Append(IsWarning).Append("\n");
            sb.Append("  IsInformation: ").Append(IsInformation).Append("\n");
            sb.Append("  IsCreate: ").Append(IsCreate).Append("\n");
            sb.Append("  IsUpdate: ").Append(IsUpdate).Append("\n");
            sb.Append("  IsDelete: ").Append(IsDelete).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 ImportExportRowResultDTO);
        }

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

            return 
                (
                    this.TypeResult == input.TypeResult ||
                    (this.TypeResult != null &&
                    this.TypeResult.Equals(input.TypeResult))
                ) && 
                (
                    this.TypeResultDescription == input.TypeResultDescription ||
                    (this.TypeResultDescription != null &&
                    this.TypeResultDescription.Equals(input.TypeResultDescription))
                ) && 
                (
                    this.Description == input.Description ||
                    (this.Description != null &&
                    this.Description.Equals(input.Description))
                ) && 
                (
                    this.IsDone == input.IsDone ||
                    (this.IsDone != null &&
                    this.IsDone.Equals(input.IsDone))
                ) && 
                (
                    this.IsImportance == input.IsImportance ||
                    (this.IsImportance != null &&
                    this.IsImportance.Equals(input.IsImportance))
                ) && 
                (
                    this.IsError == input.IsError ||
                    (this.IsError != null &&
                    this.IsError.Equals(input.IsError))
                ) && 
                (
                    this.IsWarning == input.IsWarning ||
                    (this.IsWarning != null &&
                    this.IsWarning.Equals(input.IsWarning))
                ) && 
                (
                    this.IsInformation == input.IsInformation ||
                    (this.IsInformation != null &&
                    this.IsInformation.Equals(input.IsInformation))
                ) && 
                (
                    this.IsCreate == input.IsCreate ||
                    (this.IsCreate != null &&
                    this.IsCreate.Equals(input.IsCreate))
                ) && 
                (
                    this.IsUpdate == input.IsUpdate ||
                    (this.IsUpdate != null &&
                    this.IsUpdate.Equals(input.IsUpdate))
                ) && 
                (
                    this.IsDelete == input.IsDelete ||
                    (this.IsDelete != null &&
                    this.IsDelete.Equals(input.IsDelete))
                );
        }

        /// <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.TypeResult != null)
                    hashCode = hashCode * 59 + this.TypeResult.GetHashCode();
                if (this.TypeResultDescription != null)
                    hashCode = hashCode * 59 + this.TypeResultDescription.GetHashCode();
                if (this.Description != null)
                    hashCode = hashCode * 59 + this.Description.GetHashCode();
                if (this.IsDone != null)
                    hashCode = hashCode * 59 + this.IsDone.GetHashCode();
                if (this.IsImportance != null)
                    hashCode = hashCode * 59 + this.IsImportance.GetHashCode();
                if (this.IsError != null)
                    hashCode = hashCode * 59 + this.IsError.GetHashCode();
                if (this.IsWarning != null)
                    hashCode = hashCode * 59 + this.IsWarning.GetHashCode();
                if (this.IsInformation != null)
                    hashCode = hashCode * 59 + this.IsInformation.GetHashCode();
                if (this.IsCreate != null)
                    hashCode = hashCode * 59 + this.IsCreate.GetHashCode();
                if (this.IsUpdate != null)
                    hashCode = hashCode * 59 + this.IsUpdate.GetHashCode();
                if (this.IsDelete != null)
                    hashCode = hashCode * 59 + this.IsDelete.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;
        }
    }
}
