'Invite', 'Base' => 'Member', 'DatasetName' => 'models', 'Entity' => '\PriceGuide\Entity\Member', 'References' => array( 'allowedMember' => '\PriceGuide\Entity\AllowedMember', 'company' => '\Company\Entity\Company', 'profile' => '\User\Entity\Profile', 'club' => '\Company\Entity\Company', 'fromYear' => '\Stock\Entity\Year', 'toYear' => '\Stock\Entity\Year' ), 'Dependants' => array( 'makes' => '\Stock\Entity\Make' ) ); /** * @var array */ protected $metaGrid = array( 'Type' => 'Grid', 'Contract' => 'Recurring', 'RequiredInput' => array(), 'OptionalInput' => array( 'Grid' => array( 'NumberOfRecords' => 'Integer', 'Page' => 'Integer', 'Filter' => 'Array', 'OrderBy' => 'Array', ) ), 'Base' => 'mmbr', 'NumberOfRecords' => 10, 'Query' => 'SELECT [SELECTION] FROM \PriceGuide\Entity\Member mmbr JOIN mmbr.club club JOIN mmbr.allowedMember allowedMember LEFT JOIN mmbr.company company LEFT JOIN mmbr.profile profile [WHERE] [ORDER]', 'Selection' => 'mmbr, club, allowedMember, company', 'Filter' => array( 'club.archived' => false, 'mmbr.archived' => false ), 'OrderBy' => array( 'company.name' => 'ASC', 'club.name' => 'ASC', ), 'Fields' => array( 'id', 'status', 'created' => 'DateTime', 'club' => array( 'name' ), 'allowedMember' => array( 'email' ), 'company' => array( 'name' ) ) ); /** * @var array */ protected $metaView = array( 'Type' => 'View', 'Expand' => array( 'makes', 'fromYear', 'toYear' ), 'Intersect' => array() ); /** * @var array */ protected $metaAccept = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'acceptInvite' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaDecline = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'declineInvite' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaArchive = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'archiveMember' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaUpdate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'Options' => array( 'Boolean' => array( 'ApplyToAll' => false ) ), 'ExecuteAfter' => array( 'applyFilterToAll' ), 'RequiredInput' => array(), 'OptionalInput' => array( 'Member' => array( 'makes' => 'Array', 'allMakes' => 'Boolean', 'fromYear' => 'Id', 'toYear' => 'Id', 'emailNotification' => 'Boolean', 'smsNotification' => 'Boolean' ) ) ); /** * Add some dynamic filtering to our grids. */ public function __construct() { $authData = \Utility\Registry::getAuthData(); $this->metaGrid['Filter']['ownership'] = array( 'allowedMember.email' => $authData['email'] ); switch (\Utility\Registry::getUserType()) { case 'B4C User': $groupFilter = \Utility\Registry::getSudo('Group', false); $groupFilter && $this->metaGrid['Filter']['ownership']['IDENTITY(company.group)'] = $groupFilter; $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && !$groupFilter && $this->metaGrid['Filter']['ownership']['IDENTITY(company.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); $companyFilter && !$groupFilter && !$divisionFilter && $this->metaGrid['Filter']['ownership']['company.id'] = $companyFilter; break; case 'Group User': $divisionFilter = \Utility\Registry::getSudo('Division', false); $divisionFilter && $this->metaGrid['Filter']['ownership']['IDENTITY(company.groupDivision)'] = $divisionFilter; $companyFilter = \Utility\Registry::getSudo('Company', false); $companyFilter && !$divisionFilter && $this->metaGrid['Filter']['ownership']['company.id'] = $companyFilter; !$companyFilter && !$divisionFilter && $this->metaGrid['Filter']['ownership']['IDENTITY(company.group)'] = $authData['company']['group']['id']; break; case 'Dealer Principle': $companyFilter = \Utility\Registry::getSudo('Company', false); $companyFilter && $this->metaGrid['Filter']['ownership']['company.id'] = $companyFilter; !$companyFilter && $this->metaGrid['Filter']['ownership']['IDENTITY(company.groupDivision)'] = $authData['company']['groupDivision']['id']; break; default: $this->metaGrid['Filter']['ownership']['company.id'] = $authData['company']['id']; break; } } }