'Member', 'DatasetName' => 'models', 'Entity' => '\PriceGuide\Entity\Member', 'References' => array( 'allowedMember' => '\PriceGuide\Entity\AllowedMember', 'company' => '\Company\Entity\Company', 'profile' => '\User\Entity\Profile', 'club' => '\PriceGuide\Entity\Club', '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 club.company company JOIN mmbr.company allowedCompany JOIN allowedCompany.contact contact [WHERE] [ORDER]', 'Selection' => 'mmbr, club, allowedCompany, contact', 'Filter' => array( 'club.archived' => false, 'mmbr.archived' => false ), 'OrderBy' => array( 'contact.firstName' => 'ASC', 'contact.familyName' => 'ASC', ), 'Fields' => array( 'id', 'status', 'created' => 'DateTime', 'club' => array( 'id' ), 'company' => array( 'name', 'contact' => array( 'firstName', 'familyName', 'email' ) ) ) ); /** * @var array */ protected $metaMembershipGrid = 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 club.company company JOIN mmbr.company memberCompany JOIN memberCompany.contact contact [WHERE] [ORDER]', 'Selection' => 'mmbr, memberCompany, club, contact, company', 'Filter' => array( 'club.archived' => false, 'mmbr.archived' => false ), 'OrderBy' => array( 'club.name' => 'ASC' ), 'Fields' => array( 'id', 'status', 'allMakes', 'emailNotification', 'smsNotification', 'status', 'created' => 'DateTime', 'club' => array( 'name' ), 'memberCompany' => array( 'name' ), 'contact' => array( 'firstName', 'familyName', 'email' ) ) ); /** * @var array */ protected $metaInvite = array( 'Type' => 'Create', 'Contract' => 'Recurring', 'RequiredInput' => array( 'Member' => array( 'club' => 'Id', 'company' => 'Id' ) ), 'OptionalInput' => 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 $metaActivate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'activateMembership' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaDeactivate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'deactivateMembership' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * @var array */ protected $metaUpdate = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'checkApplyAll' ), 'RequiredInput' => array(), 'OptionalInput' => array( 'Member' => array( 'makes' => 'Array', 'allMakes' => 'Boolean', 'fromYear' => 'Id', 'toYear' => 'Id', 'fromKm' => 'Integer', 'toKm' => 'Integer', 'emailNotification' => 'Boolean', 'smsNotification' => 'Boolean', 'status' => 'String25', 'applyToAll' => 'Boolean' ) ) ); /** * @var array */ protected $metaUpdateStatus = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'Expand' => array( 'company', 'profile' ), 'RequiredInput' => array(), 'OptionalInput' => array( 'Member' => array( 'status' => 'String25' ) ) ); /** * @var array */ protected $metaArchive = array( 'Type' => 'Update', 'Contract' => 'UseOnce', 'ExecuteAfter' => array( 'archiveMember' ), 'RequiredInput' => array(), 'OptionalInput' => array() ); /** * Add some dynamic filtering to our grids. */ public function __construct() { $authData = \Utility\Registry::getAuthData(); 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->metaMembershipGrid['Filter']['memberCompany.id'] = $companyFilter; } 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->metaMembershipGrid['Filter']['memberCompany.id'] = $companyFilter; } 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->metaMembershipGrid['Filter']['memberCompany.id'] = $companyFilter; } break; default: $this->metaGrid['Filter']['company.id'] = $authData['company']['id']; $this->metaMembershipGrid['Filter']['memberCompany.id'] = $authData['company']['id']; break; } } }