'Profile', 'DatasetName' => 'users', 'Entity' => '\User\Entity\Profile', 'References' => array( 'company' => '\Company\Entity\Company', 'manager' => '\User\Entity\Profile', 'region' => '\Location\Entity\Region', 'group' => '\Company\Entity\Group', 'groupDivision' => '\Company\Entity\GroupDivision', 'permissions' => '\User\Entity\Permissions' ), 'Dependants' => array( 'sessions' => '\User\Entity\Session' ) ); /** * @var array */ protected $metaList = array( 'Type' => 'List', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Filter' => array( 'created' => 'Date', 'updated' => 'Date', 'email' => 'Email', 'password' => 'String40', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'Mobile', 'permissions' => 'Id', 'company' => 'Id', 'region' => 'Id', 'group' => 'Id', 'groupDivision' => 'Id', 'userType' => 'UserType', 'position' => 'Position', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'lastLogin' => 'DateTime', 'jobState' => 'String25', 'mainMemberPublicCentre' => 'Boolean' ) ), 'Filter' => array(), 'Fields' => array( 'firstName', 'familyName', 'email', 'mobile', 'company', 'userType', 'position' ), 'Expand' => array() ); /** * @var array */ protected $metaSelectList = array( 'Type' => 'SelectList', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Filter' => array( 'created' => 'Date', 'updated' => 'Date', 'email' => 'Email', 'password' => 'String40', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'Mobile', 'permissions' => 'Id', 'company' => 'Id', 'region' => 'Id', 'group' => 'Id', 'groupDivision' => 'Id', 'userType' => 'UserType', 'position' => 'Position', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'lastLogin' => 'DateTime', 'jobState' => 'String25', 'mainMemberPublicCentre' => 'Boolean' ) ), 'Filter' => array(), 'Label' => array( 'Format' => '[firstName] [familyName]', 'Fields' => array('firstName', 'familyName') ) ); /** * @var array */ protected $metaManagerList = array( 'Type' => 'SelectList', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Filter' => array( 'company' => 'Id' ) ), 'Filter' => array(), 'Label' => array( 'Format' => '[firstName] [familyName]', 'Fields' => array('firstName', 'familyName') ) ); /** * @var array */ protected $metaAdminManagerList = array( 'Type' => 'SelectList', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Filter' => array( 'company' => 'Id' ) ), 'Filter' => array(), 'Label' => array( 'Format' => '[firstName] [familyName]', 'Fields' => array('firstName', 'familyName') ) ); /** * @var array */ protected $metaSalesList = array( 'Type' => 'SelectList', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array(), 'Filter' => array(), 'Label' => array( 'Format' => '[firstName] [familyName]', 'Fields' => array('firstName', 'familyName') ) ); /** * @var array */ protected $metaValuatorList = array( 'Type' => 'SelectList', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array(), 'Filter' => array(), 'Label' => array( 'Format' => '[firstName] [familyName]', 'Fields' => array('firstName', 'familyName') ) ); /** * @var array */ protected $metaGrid = array( 'Type' => 'Grid', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Grid' => array( 'NumberOfRecords' => 'Integer', 'Page' => 'Integer', 'Filter' => 'Array', 'OrderBy' => 'Array', ) ), 'Base' => 'profile', 'NumberOfRecords' => 10, 'Query' => 'SELECT [SELECTION] FROM \User\Entity\Profile profile JOIN profile.permissions permissions LEFT JOIN profile.company company LEFT JOIN profile.manager manager [WHERE] [ORDER]', 'Selection' => 'profile, permissions, manager', 'Filter' => array( 'profile.archived' => false ), 'OrderBy' => array( 'profile.firstName' => 'ASC', 'profile.familyName' => 'ASC' ), 'Fields' => array( 'id', 'firstName', 'familyName', 'email', 'mobile', 'created' => 'DateTime', 'jobState', 'manager' => array( 'firstName', 'familyName' ), 'permissions' => array( 'name' ) ) ); /** * @var array */ protected $metaAdminGrid = array( 'Type' => 'Grid', 'Contract' => 'Recurring', 'Export' => true, 'Builder' => '\User\Report\ProfileGrid', 'Writer' => '\Utility\Export\ExcelReport', 'Output' => 'Download', 'Options' => array( 'Boolean' => array( 'ExportToExcel' => false ) ), 'RequiredInput' => array(), 'OptionalInput' => array( 'Grid' => array( 'NumberOfRecords' => 'Integer', 'Page' => 'Integer', 'Filter' => 'Array', 'OrderBy' => 'Array', ) ), 'Base' => 'profile', 'NumberOfRecords' => 10, 'Query' => 'SELECT [SELECTION] FROM \User\Entity\Profile profile JOIN profile.permissions permissions LEFT JOIN profile.company company LEFT JOIN company.group companyGroup LEFT JOIN company.groupDivision groupDivision LEFT JOIN company.city city LEFT JOIN company.region region LEFT JOIN profile.manager manager [WHERE] [ORDER]', 'Selection' => 'profile, permissions, company, manager, companyGroup, groupDivision, city, region', 'Filter' => array( 'profile.archived' => false ), 'OrderBy' => array( 'profile.firstName' => 'ASC', 'profile.familyName' => 'ASC' ), 'Fields' => array( 'id', 'firstName', 'familyName', 'email', 'mobile', 'created' => 'DateTime', 'jobState', 'manager' => array( 'firstName', 'familyName' ), 'permissions' => array( 'name' ), 'company' => array( 'name', 'street', 'city' => array( 'region' => array('name') ), 'group' => array('name'), 'groupDivision' => array('name') ) ) ); /** * @var array */ protected $metaCreate = array( 'Type' => 'Create', 'Contract' => 'Recurring', 'ExecuteAfter' => array( 'sendWelcomeNotification' ), 'RequiredInput' => array( 'Profile' => array( 'email' => 'Email', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'String20', 'permissions' => 'Id' ) ), 'OptionalInput' => array( 'Profile' => array( 'manager' => 'Id', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'mainMemberPublicCentre' => 'Boolean' ) ) ); /** * @var array */ protected $metaUpdate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'updateAuthSession' ), 'RequiredInput' => array( 'Profile' => array( 'email' => 'Email', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'String20', 'permissions' => 'Id' ) ), 'OptionalInput' => array( 'Profile' => array( 'company' => 'Id', 'manager' => 'Id', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'mainMemberPublicCentre' => 'Boolean' ) ) ); /** * @var array */ protected $metaUnsubscribe = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array(), 'RequiredInput' => array(), 'OptionalInput' => array( 'Profile' => array( 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean' ) ) ); /** * @var array */ protected $metaChangePassword = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'RequiredInput' => array( 'Profile' => array( 'oldPassword' => 'String40', 'newPassword' => 'String40' ) ), 'OptionalInput' => array() ); /** * @var array */ protected $metaAdminCreate = array( 'Type' => 'Create', 'Contract' => 'Recurring', 'RequiredInput' => array( 'Profile' => array( 'email' => 'Email', 'password' => 'String40', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'Mobile', 'permissions' => 'Id' ) ), 'OptionalInput' => array( 'Profile' => array( 'company' => 'Id', 'region' => 'Id', 'group' => 'Id', 'groupDivision' => 'Id', 'userType' => 'UserType', 'position' => 'Position', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'lastLogin' => 'DateTime', 'mainMemberPublicCentre' => 'Boolean' ) ) ); /** * @var array */ protected $metaAdminUpdate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'RequiredInput' => array( 'Profile' => array( 'email' => 'Email', 'password' => 'String40', 'firstName' => 'String100', 'familyName' => 'String100', 'idNumber' => 'IdNumber', 'dateOfBirth' => 'Date', 'mobile' => 'Mobile', 'permissions' => 'Id' ) ), 'OptionalInput' => array( 'Profile' => array( 'company' => 'Id', 'region' => 'Id', 'group' => 'Id', 'groupDivision' => 'Id', 'userType' => 'UserType', 'position' => 'Position', 'subscribeNewsletter' => 'Boolean', 'subscribeReminders' => 'Boolean', 'mainMemberPublicCentre' => 'Boolean' ) ) ); /** * Dynamic filtering. */ public function __construct() { if (!\Utility\Registry::isAuthenticated()) { return; } $authData = \Utility\Registry::getAuthData(); $companyFilter = false; $companyId = 0; switch (\Utility\Registry::getUserType()) { case 'B4C User': $groupFilter = \Utility\Registry::getSudo('Group', false); $groupFilter && $this->metaGrid['Filter']['IDENTITY(company.group)'] = $groupFilter; $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->metaGrid['Filter']['company.id'] = $companyFilter; $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager() ->getReference( '\Company\Entity\Company', $companyFilter ); $this->metaManagerList['Filter']['company'] = $companyFilter; $this->metaSalesList['Filter']['company'] = $companyFilter; $this->metaValuatorList['Filter']['company'] = $companyFilter; $companyId = $companyFilter; } else { $this->metaManagerList['Filter']['company'] = 0; $this->metaSalesList['Filter']['company'] = 0; $this->metaValuatorList['Filter']['company'] = 0; } break; case 'Group User': $this->metaGrid['Filter']['IDENTITY(company.group)'] = $authData['company']['group']['id']; $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->metaGrid['Filter']['company.id'] = $companyFilter; $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager() ->getReference( '\Company\Entity\Company', $companyFilter ); $this->metaManagerList['Filter']['company'] = $companyFilter; $this->metaSalesList['Filter']['company'] = $companyFilter; $this->metaValuatorList['Filter']['company'] = $companyFilter; $companyId = $companyFilter; } else { $this->metaManagerList['Filter']['company'] = 0; $this->metaSalesList['Filter']['company'] = 0; $this->metaValuatorList['Filter']['company'] = 0; } break; case 'Dealer Principle': $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $authData['company']['groupDivision']['id']; $companyFilter = \Utility\Registry::getSudo('Company', false); if ($companyFilter) { $this->metaGrid['Filter']['company.id'] = $companyFilter; $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager() ->getReference( '\Company\Entity\Company', $companyFilter ); $this->metaManagerList['Filter']['company'] = $companyFilter; $this->metaSalesList['Filter']['company'] = $companyFilter; $this->metaValuatorList['Filter']['company'] = $companyFilter; $companyId = $companyFilter; } else { $this->metaManagerList['Filter']['company'] = 0; $this->metaSalesList['Filter']['company'] = 0; $this->metaValuatorList['Filter']['company'] = 0; } break; default: $this->metaGrid['Filter']['company.id'] = $authData['company']['id']; $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager() ->getReference( '\Company\Entity\Company', $authData['company']['id'] ); $this->metaManagerList['Filter']['company'] = $authData['company']['id']; $this->metaSalesList['Filter']['company'] = $authData['company']['id']; $this->metaValuatorList['Filter']['company'] = $authData['company']['id']; $companyId = $authData['company']['id']; break; } //\Utility\Debug::errorLog('FILTERS', $this->metaGrid['Filter']); $em = \Utility\Registry::getEntityManager(); $profiles = array(); if (0 == $companyId) { return; } if (!is_null($companyId) && is_numeric($companyId)) { $managerNew = $em ->getRepository('\User\Entity\Permissions') ->findOneBy(array('name' => 'Dealership Manager (New)')) ->id; $managerUsed = $em ->getRepository('\User\Entity\Permissions') ->findOneBy(array('name' => 'Dealership Manager (Used)')) ->id; $profs = $em->getRepository('\User\Entity\Profile') ->findBy(array('company' => $companyId)); foreach ($profs as $prof) { $profiles[] = $prof->id; } } $sales = array(0); $valuators = array(0); if (!empty($profiles)) { $perms = $em->getRepository('\User\Entity\Override') ->findBy(array('valuationIsSales' => true, 'profile' => $profiles)); foreach ($perms as $permission) { $sales[] = $permission->id; } $perms = $em->getRepository('\User\Entity\Override') ->findBy(array('valuationIsValuator' => true, 'profile' => $profiles)); foreach ($perms as $permission) { $valuators[] = $permission->id; } } $this->metaAdminManagerList['Filter']['permissions'] = array($managerNew, $managerUsed); $this->metaManagerList['Filter']['permissions'] = array($managerNew, $managerUsed); $this->metaSalesList['Filter']['override'] = $sales; $this->metaValuatorList['Filter']['override'] = $valuators; } public function getValuationFilters() { return $this->metaValuatorList['Filter']; } }