text: const Constants = require("../../../../../../utils/util/constants").MasterModel;
  const SDKException = require("../exception/sdk_exception").MasterModel;
  
  class Territory{
  
  	id;
  	name;
  	subordinates;
  	keyModified = new Map();
  	/**
  	 * The method to get the id
  	 * @returns {BigInt} A BigInt representing the id
  	 */
  	getId()	{
  		return this.id;
  
  	}
  
  	/**
  	 * The method to set the value to id
  	 * @param {BigInt} id A BigInt representing the id
  	 */
  	setId(id)	{
  		if((id != null) && (!(Object.prototype.toString.call(id) == "[object BigInt]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: id EXPECTED TYPE: BigInt", null, null);
  		}
  		this.id = id;
  		this.keyModified.set("id", 1);
  
  	}
  
  	/**
  	 * The method to get the name
  	 * @returns {String} A String representing the name
  	 */
  	getName()	{
  		return this.name;
  
  	}
  
  	/**
  	 * The method to set the value to name
  	 * @param {String} name A String representing the name
  	 */
  	setName(name)	{
  		if((name != null) && (!(Object.prototype.toString.call(name) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: name EXPECTED TYPE: String", null, null);
  		}
  		this.name = name;
  		this.keyModified.set("name", 1);
  
  	}
  
  	/**
  	 * The method to get the subordinates
  	 * @returns {Boolean} A Boolean representing the subordinates
  	 */
  	getSubordinates()	{
  		return this.subordinates;
  
  	}
  
  	/**
  	 * The method to set the value to subordinates
  	 * @param {Boolean} subordinates A Boolean representing the subordinates
  	 */
  	setSubordinates(subordinates)	{
  		if((subordinates != null) && (!(Object.prototype.toString.call(subordinates) == "[object Boolean]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: subordinates EXPECTED TYPE: Boolean", null, null);
  		}
  		this.subordinates = subordinates;
  		this.keyModified.set("subordinates", 1);
  
  	}
  
  	/**
  	 * The method to check if the user has modified the given key
  	 * @param {String} key A String representing the key
  	 * @returns {number} A number representing the modification
  	 */
  	isKeyModified(key)	{
  		if((key != null) && (!(Object.prototype.toString.call(key) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: key EXPECTED TYPE: String", null, null);
  		}
  		if(this.keyModified.has(key))	{
  			return this.keyModified.get(key);
  		}
  		return null;
  
  	}
  
  	/**
  	 * The method to mark the given key as modified
  	 * @param {String} key A String representing the key
  	 * @param {number} modification A number representing the modification
  	 */
  	setKeyModified(key, modification)	{
  		if((key != null) && (!(Object.prototype.toString.call(key) == "[object String]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: key EXPECTED TYPE: String", null, null);
  		}
  		if((modification != null) && (!(Object.prototype.toString.call(modification) == "[object Number]")))	{
  			throw new SDKException(Constants.DATA_TYPE_ERROR, "KEY: modification EXPECTED TYPE: number", null, null);
  		}
  		this.keyModified.set(key, modification);
  
  	}
  
  }
  module.exports = {
  	MasterModel : Territory,
  	Territory : Territory
  }
  