/* 
 * GK application - OmniPOS Service API
 *
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 * OpenAPI spec version: 5.21.1-b03
 * 
 * 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>
    /// EventLogMessageSearchCriteria
    /// </summary>
    [DataContract]
    public partial class EventLogMessageSearchCriteria :  IEquatable<EventLogMessageSearchCriteria>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="EventLogMessageSearchCriteria" /> class.
        /// </summary>
        /// <param name="createdFrom">createdFrom.</param>
        /// <param name="createdTo">createdTo.</param>
        /// <param name="type">type.</param>
        /// <param name="subType">subType.</param>
        /// <param name="application">application.</param>
        /// <param name="level">level.</param>
        /// <param name="retailStoreID">retailStoreID.</param>
        /// <param name="retailStoreIDList">retailStoreIDList.</param>
        /// <param name="businessUnitGroupID">businessUnitGroupID.</param>
        /// <param name="businessUnitGroupIDList">businessUnitGroupIDList.</param>
        /// <param name="stationID">stationID.</param>
        /// <param name="nodeID">nodeID.</param>
        /// <param name="operatorID">operatorID.</param>
        /// <param name="workstationID">workstationID.</param>
        /// <param name="payloadDataID">payloadDataID.</param>
        /// <param name="processData01">processData01.</param>
        /// <param name="processData02">processData02.</param>
        /// <param name="processData03">processData03.</param>
        /// <param name="processData04">processData04.</param>
        /// <param name="processData05">processData05.</param>
        /// <param name="processData06">processData06.</param>
        /// <param name="processData07">processData07.</param>
        /// <param name="processData08">processData08.</param>
        /// <param name="processData09">processData09.</param>
        /// <param name="processData10">processData10.</param>
        /// <param name="processData01List">processData01List.</param>
        /// <param name="processData02List">processData02List.</param>
        /// <param name="processData03List">processData03List.</param>
        /// <param name="processData04List">processData04List.</param>
        /// <param name="processData05List">processData05List.</param>
        /// <param name="processData06List">processData06List.</param>
        /// <param name="processData07List">processData07List.</param>
        /// <param name="processData08List">processData08List.</param>
        /// <param name="processData09List">processData09List.</param>
        /// <param name="processData10List">processData10List.</param>
        /// <param name="isLastEventLog">isLastEventLog.</param>
        /// <param name="distance">distance.</param>
        /// <param name="xxcustom08">xxcustom08.</param>
        /// <param name="xxcustom10">xxcustom10.</param>
        /// <param name="xxcustom09">xxcustom09.</param>
        /// <param name="xxcustom07">xxcustom07.</param>
        /// <param name="xxcustom05">xxcustom05.</param>
        /// <param name="xxcustom06">xxcustom06.</param>
        /// <param name="xxcustom03">xxcustom03.</param>
        /// <param name="xxcustom02">xxcustom02.</param>
        /// <param name="xxcustom04">xxcustom04.</param>
        /// <param name="xxcustom01List">xxcustom01List.</param>
        /// <param name="xxcustom02List">xxcustom02List.</param>
        /// <param name="xxcustom03List">xxcustom03List.</param>
        /// <param name="xxcustom04List">xxcustom04List.</param>
        /// <param name="xxcustom05List">xxcustom05List.</param>
        /// <param name="xxcustom06List">xxcustom06List.</param>
        /// <param name="xxcustom07List">xxcustom07List.</param>
        /// <param name="xxcustom08List">xxcustom08List.</param>
        /// <param name="xxcustom09List">xxcustom09List.</param>
        /// <param name="xxcustom10List">xxcustom10List.</param>
        /// <param name="xxcustom01">xxcustom01.</param>
        public EventLogMessageSearchCriteria(DateTime? createdFrom = default(DateTime?), DateTime? createdTo = default(DateTime?), string type = default(string), string subType = default(string), string application = default(string), string level = default(string), string retailStoreID = default(string), List<string> retailStoreIDList = default(List<string>), long? businessUnitGroupID = default(long?), List<long?> businessUnitGroupIDList = default(List<long?>), string stationID = default(string), string nodeID = default(string), string operatorID = default(string), string workstationID = default(string), string payloadDataID = default(string), string processData01 = default(string), string processData02 = default(string), string processData03 = default(string), string processData04 = default(string), string processData05 = default(string), string processData06 = default(string), string processData07 = default(string), string processData08 = default(string), string processData09 = default(string), string processData10 = default(string), List<string> processData01List = default(List<string>), List<string> processData02List = default(List<string>), List<string> processData03List = default(List<string>), List<string> processData04List = default(List<string>), List<string> processData05List = default(List<string>), List<string> processData06List = default(List<string>), List<string> processData07List = default(List<string>), List<string> processData08List = default(List<string>), List<string> processData09List = default(List<string>), List<string> processData10List = default(List<string>), bool? isLastEventLog = default(bool?), int? distance = default(int?), string xxcustom08 = default(string), string xxcustom10 = default(string), string xxcustom09 = default(string), string xxcustom07 = default(string), string xxcustom05 = default(string), string xxcustom06 = default(string), string xxcustom03 = default(string), string xxcustom02 = default(string), string xxcustom04 = default(string), List<string> xxcustom01List = default(List<string>), List<string> xxcustom02List = default(List<string>), List<string> xxcustom03List = default(List<string>), List<string> xxcustom04List = default(List<string>), List<string> xxcustom05List = default(List<string>), List<string> xxcustom06List = default(List<string>), List<string> xxcustom07List = default(List<string>), List<string> xxcustom08List = default(List<string>), List<string> xxcustom09List = default(List<string>), List<string> xxcustom10List = default(List<string>), string xxcustom01 = default(string))
        {
            this.CreatedFrom = createdFrom;
            this.CreatedTo = createdTo;
            this.Type = type;
            this.SubType = subType;
            this.Application = application;
            this.Level = level;
            this.RetailStoreID = retailStoreID;
            this.RetailStoreIDList = retailStoreIDList;
            this.BusinessUnitGroupID = businessUnitGroupID;
            this.BusinessUnitGroupIDList = businessUnitGroupIDList;
            this.StationID = stationID;
            this.NodeID = nodeID;
            this.OperatorID = operatorID;
            this.WorkstationID = workstationID;
            this.PayloadDataID = payloadDataID;
            this.ProcessData01 = processData01;
            this.ProcessData02 = processData02;
            this.ProcessData03 = processData03;
            this.ProcessData04 = processData04;
            this.ProcessData05 = processData05;
            this.ProcessData06 = processData06;
            this.ProcessData07 = processData07;
            this.ProcessData08 = processData08;
            this.ProcessData09 = processData09;
            this.ProcessData10 = processData10;
            this.ProcessData01List = processData01List;
            this.ProcessData02List = processData02List;
            this.ProcessData03List = processData03List;
            this.ProcessData04List = processData04List;
            this.ProcessData05List = processData05List;
            this.ProcessData06List = processData06List;
            this.ProcessData07List = processData07List;
            this.ProcessData08List = processData08List;
            this.ProcessData09List = processData09List;
            this.ProcessData10List = processData10List;
            this.IsLastEventLog = isLastEventLog;
            this.Distance = distance;
            this.Xxcustom08 = xxcustom08;
            this.Xxcustom10 = xxcustom10;
            this.Xxcustom09 = xxcustom09;
            this.Xxcustom07 = xxcustom07;
            this.Xxcustom05 = xxcustom05;
            this.Xxcustom06 = xxcustom06;
            this.Xxcustom03 = xxcustom03;
            this.Xxcustom02 = xxcustom02;
            this.Xxcustom04 = xxcustom04;
            this.Xxcustom01List = xxcustom01List;
            this.Xxcustom02List = xxcustom02List;
            this.Xxcustom03List = xxcustom03List;
            this.Xxcustom04List = xxcustom04List;
            this.Xxcustom05List = xxcustom05List;
            this.Xxcustom06List = xxcustom06List;
            this.Xxcustom07List = xxcustom07List;
            this.Xxcustom08List = xxcustom08List;
            this.Xxcustom09List = xxcustom09List;
            this.Xxcustom10List = xxcustom10List;
            this.Xxcustom01 = xxcustom01;
        }
        
        /// <summary>
        /// Gets or Sets CreatedFrom
        /// </summary>
        [DataMember(Name="createdFrom", EmitDefaultValue=false)]
        public DateTime? CreatedFrom { get; set; }

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

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

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

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

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

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

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

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

        /// <summary>
        /// Gets or Sets BusinessUnitGroupIDList
        /// </summary>
        [DataMember(Name="businessUnitGroupIDList", EmitDefaultValue=false)]
        public List<long?> BusinessUnitGroupIDList { get; set; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        /// <summary>
        /// Gets or Sets Xxcustom01
        /// </summary>
        [DataMember(Name="xxcustom01", EmitDefaultValue=false)]
        public string Xxcustom01 { 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 EventLogMessageSearchCriteria {\n");
            sb.Append("  CreatedFrom: ").Append(CreatedFrom).Append("\n");
            sb.Append("  CreatedTo: ").Append(CreatedTo).Append("\n");
            sb.Append("  Type: ").Append(Type).Append("\n");
            sb.Append("  SubType: ").Append(SubType).Append("\n");
            sb.Append("  Application: ").Append(Application).Append("\n");
            sb.Append("  Level: ").Append(Level).Append("\n");
            sb.Append("  RetailStoreID: ").Append(RetailStoreID).Append("\n");
            sb.Append("  RetailStoreIDList: ").Append(RetailStoreIDList).Append("\n");
            sb.Append("  BusinessUnitGroupID: ").Append(BusinessUnitGroupID).Append("\n");
            sb.Append("  BusinessUnitGroupIDList: ").Append(BusinessUnitGroupIDList).Append("\n");
            sb.Append("  StationID: ").Append(StationID).Append("\n");
            sb.Append("  NodeID: ").Append(NodeID).Append("\n");
            sb.Append("  OperatorID: ").Append(OperatorID).Append("\n");
            sb.Append("  WorkstationID: ").Append(WorkstationID).Append("\n");
            sb.Append("  PayloadDataID: ").Append(PayloadDataID).Append("\n");
            sb.Append("  ProcessData01: ").Append(ProcessData01).Append("\n");
            sb.Append("  ProcessData02: ").Append(ProcessData02).Append("\n");
            sb.Append("  ProcessData03: ").Append(ProcessData03).Append("\n");
            sb.Append("  ProcessData04: ").Append(ProcessData04).Append("\n");
            sb.Append("  ProcessData05: ").Append(ProcessData05).Append("\n");
            sb.Append("  ProcessData06: ").Append(ProcessData06).Append("\n");
            sb.Append("  ProcessData07: ").Append(ProcessData07).Append("\n");
            sb.Append("  ProcessData08: ").Append(ProcessData08).Append("\n");
            sb.Append("  ProcessData09: ").Append(ProcessData09).Append("\n");
            sb.Append("  ProcessData10: ").Append(ProcessData10).Append("\n");
            sb.Append("  ProcessData01List: ").Append(ProcessData01List).Append("\n");
            sb.Append("  ProcessData02List: ").Append(ProcessData02List).Append("\n");
            sb.Append("  ProcessData03List: ").Append(ProcessData03List).Append("\n");
            sb.Append("  ProcessData04List: ").Append(ProcessData04List).Append("\n");
            sb.Append("  ProcessData05List: ").Append(ProcessData05List).Append("\n");
            sb.Append("  ProcessData06List: ").Append(ProcessData06List).Append("\n");
            sb.Append("  ProcessData07List: ").Append(ProcessData07List).Append("\n");
            sb.Append("  ProcessData08List: ").Append(ProcessData08List).Append("\n");
            sb.Append("  ProcessData09List: ").Append(ProcessData09List).Append("\n");
            sb.Append("  ProcessData10List: ").Append(ProcessData10List).Append("\n");
            sb.Append("  IsLastEventLog: ").Append(IsLastEventLog).Append("\n");
            sb.Append("  Distance: ").Append(Distance).Append("\n");
            sb.Append("  Xxcustom08: ").Append(Xxcustom08).Append("\n");
            sb.Append("  Xxcustom10: ").Append(Xxcustom10).Append("\n");
            sb.Append("  Xxcustom09: ").Append(Xxcustom09).Append("\n");
            sb.Append("  Xxcustom07: ").Append(Xxcustom07).Append("\n");
            sb.Append("  Xxcustom05: ").Append(Xxcustom05).Append("\n");
            sb.Append("  Xxcustom06: ").Append(Xxcustom06).Append("\n");
            sb.Append("  Xxcustom03: ").Append(Xxcustom03).Append("\n");
            sb.Append("  Xxcustom02: ").Append(Xxcustom02).Append("\n");
            sb.Append("  Xxcustom04: ").Append(Xxcustom04).Append("\n");
            sb.Append("  Xxcustom01List: ").Append(Xxcustom01List).Append("\n");
            sb.Append("  Xxcustom02List: ").Append(Xxcustom02List).Append("\n");
            sb.Append("  Xxcustom03List: ").Append(Xxcustom03List).Append("\n");
            sb.Append("  Xxcustom04List: ").Append(Xxcustom04List).Append("\n");
            sb.Append("  Xxcustom05List: ").Append(Xxcustom05List).Append("\n");
            sb.Append("  Xxcustom06List: ").Append(Xxcustom06List).Append("\n");
            sb.Append("  Xxcustom07List: ").Append(Xxcustom07List).Append("\n");
            sb.Append("  Xxcustom08List: ").Append(Xxcustom08List).Append("\n");
            sb.Append("  Xxcustom09List: ").Append(Xxcustom09List).Append("\n");
            sb.Append("  Xxcustom10List: ").Append(Xxcustom10List).Append("\n");
            sb.Append("  Xxcustom01: ").Append(Xxcustom01).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 EventLogMessageSearchCriteria);
        }

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

            return 
                (
                    this.CreatedFrom == input.CreatedFrom ||
                    (this.CreatedFrom != null &&
                    this.CreatedFrom.Equals(input.CreatedFrom))
                ) && 
                (
                    this.CreatedTo == input.CreatedTo ||
                    (this.CreatedTo != null &&
                    this.CreatedTo.Equals(input.CreatedTo))
                ) && 
                (
                    this.Type == input.Type ||
                    (this.Type != null &&
                    this.Type.Equals(input.Type))
                ) && 
                (
                    this.SubType == input.SubType ||
                    (this.SubType != null &&
                    this.SubType.Equals(input.SubType))
                ) && 
                (
                    this.Application == input.Application ||
                    (this.Application != null &&
                    this.Application.Equals(input.Application))
                ) && 
                (
                    this.Level == input.Level ||
                    (this.Level != null &&
                    this.Level.Equals(input.Level))
                ) && 
                (
                    this.RetailStoreID == input.RetailStoreID ||
                    (this.RetailStoreID != null &&
                    this.RetailStoreID.Equals(input.RetailStoreID))
                ) && 
                (
                    this.RetailStoreIDList == input.RetailStoreIDList ||
                    this.RetailStoreIDList != null &&
                    this.RetailStoreIDList.SequenceEqual(input.RetailStoreIDList)
                ) && 
                (
                    this.BusinessUnitGroupID == input.BusinessUnitGroupID ||
                    (this.BusinessUnitGroupID != null &&
                    this.BusinessUnitGroupID.Equals(input.BusinessUnitGroupID))
                ) && 
                (
                    this.BusinessUnitGroupIDList == input.BusinessUnitGroupIDList ||
                    this.BusinessUnitGroupIDList != null &&
                    this.BusinessUnitGroupIDList.SequenceEqual(input.BusinessUnitGroupIDList)
                ) && 
                (
                    this.StationID == input.StationID ||
                    (this.StationID != null &&
                    this.StationID.Equals(input.StationID))
                ) && 
                (
                    this.NodeID == input.NodeID ||
                    (this.NodeID != null &&
                    this.NodeID.Equals(input.NodeID))
                ) && 
                (
                    this.OperatorID == input.OperatorID ||
                    (this.OperatorID != null &&
                    this.OperatorID.Equals(input.OperatorID))
                ) && 
                (
                    this.WorkstationID == input.WorkstationID ||
                    (this.WorkstationID != null &&
                    this.WorkstationID.Equals(input.WorkstationID))
                ) && 
                (
                    this.PayloadDataID == input.PayloadDataID ||
                    (this.PayloadDataID != null &&
                    this.PayloadDataID.Equals(input.PayloadDataID))
                ) && 
                (
                    this.ProcessData01 == input.ProcessData01 ||
                    (this.ProcessData01 != null &&
                    this.ProcessData01.Equals(input.ProcessData01))
                ) && 
                (
                    this.ProcessData02 == input.ProcessData02 ||
                    (this.ProcessData02 != null &&
                    this.ProcessData02.Equals(input.ProcessData02))
                ) && 
                (
                    this.ProcessData03 == input.ProcessData03 ||
                    (this.ProcessData03 != null &&
                    this.ProcessData03.Equals(input.ProcessData03))
                ) && 
                (
                    this.ProcessData04 == input.ProcessData04 ||
                    (this.ProcessData04 != null &&
                    this.ProcessData04.Equals(input.ProcessData04))
                ) && 
                (
                    this.ProcessData05 == input.ProcessData05 ||
                    (this.ProcessData05 != null &&
                    this.ProcessData05.Equals(input.ProcessData05))
                ) && 
                (
                    this.ProcessData06 == input.ProcessData06 ||
                    (this.ProcessData06 != null &&
                    this.ProcessData06.Equals(input.ProcessData06))
                ) && 
                (
                    this.ProcessData07 == input.ProcessData07 ||
                    (this.ProcessData07 != null &&
                    this.ProcessData07.Equals(input.ProcessData07))
                ) && 
                (
                    this.ProcessData08 == input.ProcessData08 ||
                    (this.ProcessData08 != null &&
                    this.ProcessData08.Equals(input.ProcessData08))
                ) && 
                (
                    this.ProcessData09 == input.ProcessData09 ||
                    (this.ProcessData09 != null &&
                    this.ProcessData09.Equals(input.ProcessData09))
                ) && 
                (
                    this.ProcessData10 == input.ProcessData10 ||
                    (this.ProcessData10 != null &&
                    this.ProcessData10.Equals(input.ProcessData10))
                ) && 
                (
                    this.ProcessData01List == input.ProcessData01List ||
                    this.ProcessData01List != null &&
                    this.ProcessData01List.SequenceEqual(input.ProcessData01List)
                ) && 
                (
                    this.ProcessData02List == input.ProcessData02List ||
                    this.ProcessData02List != null &&
                    this.ProcessData02List.SequenceEqual(input.ProcessData02List)
                ) && 
                (
                    this.ProcessData03List == input.ProcessData03List ||
                    this.ProcessData03List != null &&
                    this.ProcessData03List.SequenceEqual(input.ProcessData03List)
                ) && 
                (
                    this.ProcessData04List == input.ProcessData04List ||
                    this.ProcessData04List != null &&
                    this.ProcessData04List.SequenceEqual(input.ProcessData04List)
                ) && 
                (
                    this.ProcessData05List == input.ProcessData05List ||
                    this.ProcessData05List != null &&
                    this.ProcessData05List.SequenceEqual(input.ProcessData05List)
                ) && 
                (
                    this.ProcessData06List == input.ProcessData06List ||
                    this.ProcessData06List != null &&
                    this.ProcessData06List.SequenceEqual(input.ProcessData06List)
                ) && 
                (
                    this.ProcessData07List == input.ProcessData07List ||
                    this.ProcessData07List != null &&
                    this.ProcessData07List.SequenceEqual(input.ProcessData07List)
                ) && 
                (
                    this.ProcessData08List == input.ProcessData08List ||
                    this.ProcessData08List != null &&
                    this.ProcessData08List.SequenceEqual(input.ProcessData08List)
                ) && 
                (
                    this.ProcessData09List == input.ProcessData09List ||
                    this.ProcessData09List != null &&
                    this.ProcessData09List.SequenceEqual(input.ProcessData09List)
                ) && 
                (
                    this.ProcessData10List == input.ProcessData10List ||
                    this.ProcessData10List != null &&
                    this.ProcessData10List.SequenceEqual(input.ProcessData10List)
                ) && 
                (
                    this.IsLastEventLog == input.IsLastEventLog ||
                    (this.IsLastEventLog != null &&
                    this.IsLastEventLog.Equals(input.IsLastEventLog))
                ) && 
                (
                    this.Distance == input.Distance ||
                    (this.Distance != null &&
                    this.Distance.Equals(input.Distance))
                ) && 
                (
                    this.Xxcustom08 == input.Xxcustom08 ||
                    (this.Xxcustom08 != null &&
                    this.Xxcustom08.Equals(input.Xxcustom08))
                ) && 
                (
                    this.Xxcustom10 == input.Xxcustom10 ||
                    (this.Xxcustom10 != null &&
                    this.Xxcustom10.Equals(input.Xxcustom10))
                ) && 
                (
                    this.Xxcustom09 == input.Xxcustom09 ||
                    (this.Xxcustom09 != null &&
                    this.Xxcustom09.Equals(input.Xxcustom09))
                ) && 
                (
                    this.Xxcustom07 == input.Xxcustom07 ||
                    (this.Xxcustom07 != null &&
                    this.Xxcustom07.Equals(input.Xxcustom07))
                ) && 
                (
                    this.Xxcustom05 == input.Xxcustom05 ||
                    (this.Xxcustom05 != null &&
                    this.Xxcustom05.Equals(input.Xxcustom05))
                ) && 
                (
                    this.Xxcustom06 == input.Xxcustom06 ||
                    (this.Xxcustom06 != null &&
                    this.Xxcustom06.Equals(input.Xxcustom06))
                ) && 
                (
                    this.Xxcustom03 == input.Xxcustom03 ||
                    (this.Xxcustom03 != null &&
                    this.Xxcustom03.Equals(input.Xxcustom03))
                ) && 
                (
                    this.Xxcustom02 == input.Xxcustom02 ||
                    (this.Xxcustom02 != null &&
                    this.Xxcustom02.Equals(input.Xxcustom02))
                ) && 
                (
                    this.Xxcustom04 == input.Xxcustom04 ||
                    (this.Xxcustom04 != null &&
                    this.Xxcustom04.Equals(input.Xxcustom04))
                ) && 
                (
                    this.Xxcustom01List == input.Xxcustom01List ||
                    this.Xxcustom01List != null &&
                    this.Xxcustom01List.SequenceEqual(input.Xxcustom01List)
                ) && 
                (
                    this.Xxcustom02List == input.Xxcustom02List ||
                    this.Xxcustom02List != null &&
                    this.Xxcustom02List.SequenceEqual(input.Xxcustom02List)
                ) && 
                (
                    this.Xxcustom03List == input.Xxcustom03List ||
                    this.Xxcustom03List != null &&
                    this.Xxcustom03List.SequenceEqual(input.Xxcustom03List)
                ) && 
                (
                    this.Xxcustom04List == input.Xxcustom04List ||
                    this.Xxcustom04List != null &&
                    this.Xxcustom04List.SequenceEqual(input.Xxcustom04List)
                ) && 
                (
                    this.Xxcustom05List == input.Xxcustom05List ||
                    this.Xxcustom05List != null &&
                    this.Xxcustom05List.SequenceEqual(input.Xxcustom05List)
                ) && 
                (
                    this.Xxcustom06List == input.Xxcustom06List ||
                    this.Xxcustom06List != null &&
                    this.Xxcustom06List.SequenceEqual(input.Xxcustom06List)
                ) && 
                (
                    this.Xxcustom07List == input.Xxcustom07List ||
                    this.Xxcustom07List != null &&
                    this.Xxcustom07List.SequenceEqual(input.Xxcustom07List)
                ) && 
                (
                    this.Xxcustom08List == input.Xxcustom08List ||
                    this.Xxcustom08List != null &&
                    this.Xxcustom08List.SequenceEqual(input.Xxcustom08List)
                ) && 
                (
                    this.Xxcustom09List == input.Xxcustom09List ||
                    this.Xxcustom09List != null &&
                    this.Xxcustom09List.SequenceEqual(input.Xxcustom09List)
                ) && 
                (
                    this.Xxcustom10List == input.Xxcustom10List ||
                    this.Xxcustom10List != null &&
                    this.Xxcustom10List.SequenceEqual(input.Xxcustom10List)
                ) && 
                (
                    this.Xxcustom01 == input.Xxcustom01 ||
                    (this.Xxcustom01 != null &&
                    this.Xxcustom01.Equals(input.Xxcustom01))
                );
        }

        /// <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.CreatedFrom != null)
                    hashCode = hashCode * 59 + this.CreatedFrom.GetHashCode();
                if (this.CreatedTo != null)
                    hashCode = hashCode * 59 + this.CreatedTo.GetHashCode();
                if (this.Type != null)
                    hashCode = hashCode * 59 + this.Type.GetHashCode();
                if (this.SubType != null)
                    hashCode = hashCode * 59 + this.SubType.GetHashCode();
                if (this.Application != null)
                    hashCode = hashCode * 59 + this.Application.GetHashCode();
                if (this.Level != null)
                    hashCode = hashCode * 59 + this.Level.GetHashCode();
                if (this.RetailStoreID != null)
                    hashCode = hashCode * 59 + this.RetailStoreID.GetHashCode();
                if (this.RetailStoreIDList != null)
                    hashCode = hashCode * 59 + this.RetailStoreIDList.GetHashCode();
                if (this.BusinessUnitGroupID != null)
                    hashCode = hashCode * 59 + this.BusinessUnitGroupID.GetHashCode();
                if (this.BusinessUnitGroupIDList != null)
                    hashCode = hashCode * 59 + this.BusinessUnitGroupIDList.GetHashCode();
                if (this.StationID != null)
                    hashCode = hashCode * 59 + this.StationID.GetHashCode();
                if (this.NodeID != null)
                    hashCode = hashCode * 59 + this.NodeID.GetHashCode();
                if (this.OperatorID != null)
                    hashCode = hashCode * 59 + this.OperatorID.GetHashCode();
                if (this.WorkstationID != null)
                    hashCode = hashCode * 59 + this.WorkstationID.GetHashCode();
                if (this.PayloadDataID != null)
                    hashCode = hashCode * 59 + this.PayloadDataID.GetHashCode();
                if (this.ProcessData01 != null)
                    hashCode = hashCode * 59 + this.ProcessData01.GetHashCode();
                if (this.ProcessData02 != null)
                    hashCode = hashCode * 59 + this.ProcessData02.GetHashCode();
                if (this.ProcessData03 != null)
                    hashCode = hashCode * 59 + this.ProcessData03.GetHashCode();
                if (this.ProcessData04 != null)
                    hashCode = hashCode * 59 + this.ProcessData04.GetHashCode();
                if (this.ProcessData05 != null)
                    hashCode = hashCode * 59 + this.ProcessData05.GetHashCode();
                if (this.ProcessData06 != null)
                    hashCode = hashCode * 59 + this.ProcessData06.GetHashCode();
                if (this.ProcessData07 != null)
                    hashCode = hashCode * 59 + this.ProcessData07.GetHashCode();
                if (this.ProcessData08 != null)
                    hashCode = hashCode * 59 + this.ProcessData08.GetHashCode();
                if (this.ProcessData09 != null)
                    hashCode = hashCode * 59 + this.ProcessData09.GetHashCode();
                if (this.ProcessData10 != null)
                    hashCode = hashCode * 59 + this.ProcessData10.GetHashCode();
                if (this.ProcessData01List != null)
                    hashCode = hashCode * 59 + this.ProcessData01List.GetHashCode();
                if (this.ProcessData02List != null)
                    hashCode = hashCode * 59 + this.ProcessData02List.GetHashCode();
                if (this.ProcessData03List != null)
                    hashCode = hashCode * 59 + this.ProcessData03List.GetHashCode();
                if (this.ProcessData04List != null)
                    hashCode = hashCode * 59 + this.ProcessData04List.GetHashCode();
                if (this.ProcessData05List != null)
                    hashCode = hashCode * 59 + this.ProcessData05List.GetHashCode();
                if (this.ProcessData06List != null)
                    hashCode = hashCode * 59 + this.ProcessData06List.GetHashCode();
                if (this.ProcessData07List != null)
                    hashCode = hashCode * 59 + this.ProcessData07List.GetHashCode();
                if (this.ProcessData08List != null)
                    hashCode = hashCode * 59 + this.ProcessData08List.GetHashCode();
                if (this.ProcessData09List != null)
                    hashCode = hashCode * 59 + this.ProcessData09List.GetHashCode();
                if (this.ProcessData10List != null)
                    hashCode = hashCode * 59 + this.ProcessData10List.GetHashCode();
                if (this.IsLastEventLog != null)
                    hashCode = hashCode * 59 + this.IsLastEventLog.GetHashCode();
                if (this.Distance != null)
                    hashCode = hashCode * 59 + this.Distance.GetHashCode();
                if (this.Xxcustom08 != null)
                    hashCode = hashCode * 59 + this.Xxcustom08.GetHashCode();
                if (this.Xxcustom10 != null)
                    hashCode = hashCode * 59 + this.Xxcustom10.GetHashCode();
                if (this.Xxcustom09 != null)
                    hashCode = hashCode * 59 + this.Xxcustom09.GetHashCode();
                if (this.Xxcustom07 != null)
                    hashCode = hashCode * 59 + this.Xxcustom07.GetHashCode();
                if (this.Xxcustom05 != null)
                    hashCode = hashCode * 59 + this.Xxcustom05.GetHashCode();
                if (this.Xxcustom06 != null)
                    hashCode = hashCode * 59 + this.Xxcustom06.GetHashCode();
                if (this.Xxcustom03 != null)
                    hashCode = hashCode * 59 + this.Xxcustom03.GetHashCode();
                if (this.Xxcustom02 != null)
                    hashCode = hashCode * 59 + this.Xxcustom02.GetHashCode();
                if (this.Xxcustom04 != null)
                    hashCode = hashCode * 59 + this.Xxcustom04.GetHashCode();
                if (this.Xxcustom01List != null)
                    hashCode = hashCode * 59 + this.Xxcustom01List.GetHashCode();
                if (this.Xxcustom02List != null)
                    hashCode = hashCode * 59 + this.Xxcustom02List.GetHashCode();
                if (this.Xxcustom03List != null)
                    hashCode = hashCode * 59 + this.Xxcustom03List.GetHashCode();
                if (this.Xxcustom04List != null)
                    hashCode = hashCode * 59 + this.Xxcustom04List.GetHashCode();
                if (this.Xxcustom05List != null)
                    hashCode = hashCode * 59 + this.Xxcustom05List.GetHashCode();
                if (this.Xxcustom06List != null)
                    hashCode = hashCode * 59 + this.Xxcustom06List.GetHashCode();
                if (this.Xxcustom07List != null)
                    hashCode = hashCode * 59 + this.Xxcustom07List.GetHashCode();
                if (this.Xxcustom08List != null)
                    hashCode = hashCode * 59 + this.Xxcustom08List.GetHashCode();
                if (this.Xxcustom09List != null)
                    hashCode = hashCode * 59 + this.Xxcustom09List.GetHashCode();
                if (this.Xxcustom10List != null)
                    hashCode = hashCode * 59 + this.Xxcustom10List.GetHashCode();
                if (this.Xxcustom01 != null)
                    hashCode = hashCode * 59 + this.Xxcustom01.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;
        }
    }

}
