<?php

namespace App\Reports\Sources\SupplierContactPersons;

class ColumnsManager extends \App\Reports\Sources\ColumnsManagerAbstract
{

	/**
	 * The definition of report source columns.
	 * @var array
	 */
	protected array $columnsCfg = [
		'contact_id' 				=> [ 'type' => 'numeric',	'dbDef' => "INT UNSIGNED NOT NULL",				'cat' => "general"],
		'contact_titleCode' 		=> [ 'type' => 'string',	'dbDef' => "CHAR(1) NOT NULL DEFAULT ''",		'cat' => "general"],
		'contact_titleName'			=> ['type' => 'string', 	'dbDef' => "VARCHAR(10) NOT NULL DEFAULT ''", 	'cat' => "general"],
		'contact_firstName' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",	'cat' => "general"],
		'contact_lastName' 			=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",	'cat' => "general"],
		'contact_department' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",	'cat' => "general"],
		'contact_job' 				=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",	'cat' => "general"],
		'contact_role' 				=> [ 'type' => 'string',	'dbDef' => "VARCHAR(30) NOT NULL DEFAULT ''",	'cat' => "general"],
		'contact_comments' 			=> [ 'type' => 'string',	'dbDef' => "TEXT NOT NULL",						'cat' => "general"],
		'contact_remarks' 			=> [ 'type' => 'string',	'dbDef' => "TEXT NOT NULL",						'cat' => "general"],
		'contact_processedRemarks' 	=> [ 'type' => 'string',	'dbDef' => "TEXT NOT NULL",						'cat' => "general", 'disabled' => true, 'content' => 'remarks'],

		'contact_birthday'			=> [ 'type' => 'date',		'dbDef' => "DATE NULL DEFAULT NULL",			'cat' => "personal"],
		'contact_email' 			=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",	'cat' => "personal"],
		'contact_telephone' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(50) NOT NULL DEFAULT ''",	'cat' => "personal"],
		'contact_telephoneMobile' 	=> [ 'type' => 'string',	'dbDef' => "VARCHAR(50) NOT NULL DEFAULT ''",	'cat' => "personal"],
		'contact_fax' 				=> [ 'type' => 'string',	'dbDef' => "VARCHAR(50) NOT NULL DEFAULT ''",	'cat' => "personal"],

		'contact_addTime' 			=> [ 'type' => 'datetime',	'dbDef' => "DATETIME NULL",							'cat' => "admin"],
		'contact_idAddUser' 		=> [ 'type' => 'numeric',	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT 0", 	'cat' => "admin"],
		'contact_addUserName' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(101) NOT NULL DEFAULT ''",		'cat' => "admin"],
		'contact_addOfficeId' 		=> [ 'type' => 'numeric',	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT 0",	'cat' => "admin"],
		'contact_addOfficeName' 	=> [ 'type' => 'string',	'dbDef' => "VARCHAR(150) NOT NULL DEFAULT ''",		'cat' => "admin"],
		'contact_lastUpdateTime' 	=> [ 'type' => 'datetime',	'dbDef' => "DATETIME NULL DEFAULT NULL",			'cat' => "admin"],
		'contact_idUpdateUser'		=> [ 'type' => 'numeric',	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT 0",	'cat' => "admin"],
		'contact_updateUserName' 	=> [ 'type' => 'string',	'dbDef' => "VARCHAR(101) NOT NULL DEFAULT ''",		'cat' => "admin"],
		'contact_updatesCount' 		=> [ 'type' => 'numeric',	'dbDef' => "SMALLINT UNSIGNED NOT NULL DEFAULT 0",	'cat' => "admin"],

		'supp_id' 					=> [ 'type' => 'numeric',	'dbDef' => "INT UNSIGNED NOT NULL DEFAULT 0",		'cat' => "supplier"],
		'supp_alias' 				=> [ 'type' => 'string',	'dbDef' => "VARCHAR(100) NOT NULL DEFAULT ''",		'cat' => "supplier"],
		'supp_companyName' 			=> [ 'type' => 'string',	'dbDef' => "VARCHAR(170) NOT NULL DEFAULT ''",		'cat' => "supplier"],
		'supp_companyPrefix' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(20) NOT NULL DEFAULT ''",		'cat' => "supplier"],
		'supp_companySuffix' 		=> [ 'type' => 'string',	'dbDef' => "VARCHAR(20) NOT NULL DEFAULT ''",		'cat' => "supplier"],
		'supp_companyFull' 			=> [ 'type' => 'string',	'dbDef' => "VARCHAR(212) NOT NULL DEFAULT ''",		'cat' => "supplier"],
		'supp_duplicated'			=> [ 'type' => 'boolean', 	'dbDef' => "TINYINT UNSIGNED NOT NULL DEFAULT 0",	'cat' => "supplier"],
		'supp_idOriginal'			=> [ 'type' => 'numeric',	'dbDef' => "INT UNSIGNED NOT NULL DEFAULT 0",		'cat' => "supplier"],
	];

	/**
	 * The primary key column.
	 * @var string
	 */
	protected string $primaryKeyColumn = 'contact_id';

	/**
	 * The columns that are forced into the report.
	 * @var array
	 */
	protected array $forcedColumns = [];

	/**
	 * The columns dependencies list.
	 * @var array
	 */
	protected array $columnsDependencies = [
		'contact_titleName'			=> ['contact_titleCode'],
		'contact_addOfficeName' 	=> ['contact_addOfficeId'],
		'contact_updateUserName' 	=> ['contact_idUpdateUser'],

		'supp_alias'				=> ['supp_id'],
		'supp_companyName'			=> ['supp_id'],
		'supp_companyPrefix'		=> ['supp_id'],
		'supp_companySuffix'		=> ['supp_id'],
		'supp_companyFull'			=> ['supp_id'],
	];

}
