context: // ===================================================================================================
  //                           _  __     _ _
  //                          | |/ /__ _| | |_ _  _ _ _ __ _
  //                          | ' </ _` | |  _| || | '_/ _` |
  //                          |_|\_\__,_|_|\__|\_,_|_| \__,_|
  //
  // This file is part of the Kaltura Collaborative Media Suite which allows users
  // to do with audio, video, and animation what Wiki platforms allow them to do with
  // text.
  //
  // Copyright (C) 2006-2022  Kaltura Inc.
  //
  // This program is free software: you can redistribute it and/or modify
  // it under the terms of the GNU Affero General Public License as
  // published by the Free Software Foundation, either version 3 of the
  // License, or (at your option) any later version.
  //
  // This program is distributed in the hope that it will be useful,
  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  // GNU Affero General Public License for more details.
  //
  // You should have received a copy of the GNU Affero General Public License
  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
  //
  // @ignore
  // ===================================================================================================
  using System;
  using System.Xml;
  using System.Collections.Generic;
  using Kaltura.Enums;
  using Kaltura.Request;
  using Newtonsoft.Json;
  using Newtonsoft.Json.Linq;
  
  namespace Kaltura.Types
  {
  	public class ReachProfileBaseFilter : RelatedFilter
  	{
  		#region Constants
  		public const string ID_EQUAL = "idEqual";
  		public const string ID_IN = "idIn";
  		public const string CREATED_AT_GREATER_THAN_OR_EQUAL = "createdAtGreaterThanOrEqual";
  		public const string CREATED_AT_LESS_THAN_OR_EQUAL = "createdAtLessThanOrEqual";
  		public const string UPDATED_AT_GREATER_THAN_OR_EQUAL = "updatedAtGreaterThanOrEqual";
  		public const string UPDATED_AT_LESS_THAN_OR_EQUAL = "updatedAtLessThanOrEqual";
  		public const string STATUS_EQUAL = "statusEqual";
  		public const string STATUS_IN = "statusIn";
  		public const string PROFILE_TYPE_EQUAL = "profileTypeEqual";
  		public const string PROFILE_TYPE_IN = "profileTypeIn";
  		#endregion
  
  		#region Private Fields
  		private int _IdEqual = Int32.MinValue;
  		private string _IdIn = null;
  		private int _CreatedAtGreaterThanOrEqual = Int32.MinValue;
  		private int _CreatedAtLessThanOrEqual = Int32.MinValue;
  		private int _UpdatedAtGreaterThanOrEqual = Int32.MinValue;
  		private int _UpdatedAtLessThanOrEqual = Int32.MinValue;
  		private ReachProfileStatus _StatusEqual = (ReachProfileStatus)Int32.MinValue;
  		private string _StatusIn = null;
  		private ReachProfileType _ProfileTypeEqual = (ReachProfileType)Int32.MinValue;
  		private string _ProfileTypeIn = null;
  		#endregion
  
  		#region Properties
  		/// <summary>
  		/// Use IdEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int IdEqual
  		{
  			get { return _IdEqual; }
  			set 
  			{ 
  				_IdEqual = value;
  				OnPropertyChanged("IdEqual");
  			}
  		}
  		/// <summary>
  		/// Use IdInAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string IdIn
  		{
  			get { return _IdIn; }
  			set 
  			{ 
  				_IdIn = value;
  				OnPropertyChanged("IdIn");
  			}
  		}
  		/// <summary>
  		/// Use CreatedAtGreaterThanOrEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int CreatedAtGreaterThanOrEqual
  		{
  			get { return _CreatedAtGreaterThanOrEqual; }
  			set 
  			{ 
  				_CreatedAtGreaterThanOrEqual = value;
  				OnPropertyChanged("CreatedAtGreaterThanOrEqual");
  			}
  		}
  		/// <summary>
  		/// Use CreatedAtLessThanOrEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int CreatedAtLessThanOrEqual
  		{
  			get { return _CreatedAtLessThanOrEqual; }
  			set 
  			{ 
  				_CreatedAtLessThanOrEqual = value;
  				OnPropertyChanged("CreatedAtLessThanOrEqual");
  			}
  		}
  		/// <summary>
  		/// Use UpdatedAtGreaterThanOrEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int UpdatedAtGreaterThanOrEqual
  		{
  			get { return _UpdatedAtGreaterThanOrEqual; }
  			set 
  			{ 
  				_UpdatedAtGreaterThanOrEqual = value;
  				OnPropertyChanged("UpdatedAtGreaterThanOrEqual");
  			}
  		}
  		/// <summary>
  		/// Use UpdatedAtLessThanOrEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public int UpdatedAtLessThanOrEqual
  		{
  			get { return _UpdatedAtLessThanOrEqual; }
  			set 
  			{ 
  				_UpdatedAtLessThanOrEqual = value;
  				OnPropertyChanged("UpdatedAtLessThanOrEqual");
  			}
  		}
  		/// <summary>
  		/// Use StatusEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public ReachProfileStatus StatusEqual
  		{
  			get { return _StatusEqual; }
  			set 
  			{ 
  				_StatusEqual = value;
  				OnPropertyChanged("StatusEqual");
  			}
  		}
  		/// <summary>
  		/// Use StatusInAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string StatusIn
  		{
  			get { return _StatusIn; }
  			set 
  			{ 
  				_StatusIn = value;
  				OnPropertyChanged("StatusIn");
  			}
  		}
  		/// <summary>
  		/// Use ProfileTypeEqualAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public ReachProfileType ProfileTypeEqual
  		{
  			get { return _ProfileTypeEqual; }
  			set 
  			{ 
  				_ProfileTypeEqual = value;
  				OnPropertyChanged("ProfileTypeEqual");
  			}
  		}
  		/// <summary>
  		/// Use ProfileTypeInAsDouble property instead
  		/// </summary>
  		[JsonProperty]
  		public string ProfileTypeIn
  		{
  			get { return _ProfileTypeIn; }
  			set 
  			{ 
  				_ProfileTypeIn = value;
  				OnPropertyChanged("ProfileTypeIn");
  			}
  		}
  		#endregion
  
  		#region CTor
  		public ReachProfileBaseFilter()
  		{
  		}
  
  		public ReachProfileBaseFilter(JToken node) : base(node)
  		{
  			if(node["idEqual"] != null)
  			{
  
gt: 				this._IdEqual = ParseInt(node["idEqual"].Value<string>());