2 namespace User\DataBin;
10 class Profile extends \Workspace\Service\DataBin
16 protected $meta = array(
18 'DatasetName' => 'users',
19 'Entity' => '\User\Entity\Profile',
20 'References' => array(
21 'company' => '\Company\Entity\Company',
22 'manager' => '\User\Entity\Profile',
23 'region' => '\Location\Entity\Region',
24 'group' => '\Company\Entity\Group',
25 'groupDivision' => '\Company\Entity\GroupDivision',
26 'permissions' => '\User\Entity\Permissions'
28 'Dependants' => array(
29 'sessions' => '\User\Entity\Session'
35 protected $metaList = array(
37 'Contract' => 'Recurring',
38 'RequiredInput' => array(),
39 'OptionalInput' => array(
44 'password' => 'String40',
45 'firstName' => 'String100',
46 'familyName' => 'String100',
47 'idNumber' => 'IdNumber',
48 'dateOfBirth' => 'Date',
50 'permissions' => 'Id',
54 'groupDivision' => 'Id',
55 'userType' => 'UserType',
56 'position' => 'Position',
57 'subscribeNewsletter' => 'Boolean',
58 'subscribeReminders' => 'Boolean',
59 'lastLogin' => 'DateTime',
60 'jobState' => 'String25',
61 'mainMemberPublicCentre' => 'Boolean'
79 protected $metaSelectList = array(
80 'Type' => 'SelectList',
81 'Contract' => 'Recurring',
82 'RequiredInput' => array(),
83 'OptionalInput' => array(
88 'password' => 'String40',
89 'firstName' => 'String100',
90 'familyName' => 'String100',
91 'idNumber' => 'IdNumber',
92 'dateOfBirth' => 'Date',
94 'permissions' => 'Id',
98 'groupDivision' => 'Id',
99 'userType' => 'UserType',
100 'position' => 'Position',
101 'subscribeNewsletter' => 'Boolean',
102 'subscribeReminders' => 'Boolean',
103 'lastLogin' => 'DateTime',
104 'jobState' => 'String25',
105 'mainMemberPublicCentre' => 'Boolean'
110 'Format' => '[firstName] [familyName]',
111 'Fields' => array('firstName', 'familyName')
117 protected $metaManagerList = array(
118 'Type' => 'SelectList',
119 'Contract' => 'Recurring',
120 'RequiredInput' => array(),
121 'OptionalInput' => array(
128 'Format' => '[firstName] [familyName]',
129 'Fields' => array('firstName', 'familyName')
135 protected $metaAdminManagerList = array(
136 'Type' => 'SelectList',
137 'Contract' => 'Recurring',
138 'RequiredInput' => array(),
139 'OptionalInput' => array(
146 'Format' => '[firstName] [familyName]',
147 'Fields' => array('firstName', 'familyName')
153 protected $metaSalesList = array(
154 'Type' => 'SelectList',
155 'Contract' => 'Recurring',
156 'RequiredInput' => array(),
157 'OptionalInput' => array(),
160 'Format' => '[firstName] [familyName]',
161 'Fields' => array('firstName', 'familyName')
167 protected $metaValuatorList = array(
168 'Type' => 'SelectList',
169 'Contract' => 'Recurring',
170 'RequiredInput' => array(),
171 'OptionalInput' => array(),
174 'Format' => '[firstName] [familyName]',
175 'Fields' => array('firstName', 'familyName')
181 protected $metaGrid = array(
183 'Contract' => 'Recurring',
184 'RequiredInput' => array(),
185 'OptionalInput' => array(
187 'NumberOfRecords' => 'Integer',
190 'OrderBy' => 'Array',
194 'NumberOfRecords' => 10,
195 'Query' => 'SELECT [SELECTION]
196 FROM \User\Entity\Profile profile
197 JOIN profile.permissions permissions
198 LEFT JOIN profile.company company
199 LEFT JOIN profile.manager manager
201 'Selection' => 'profile, permissions, manager',
203 'profile.archived' => false
206 'profile.firstName' => 'ASC',
207 'profile.familyName' => 'ASC'
215 'created' => 'DateTime',
221 'permissions' => array(
229 protected $metaAdminGrid = array(
231 'Contract' => 'Recurring',
233 'Builder' => '\User\Report\ProfileGrid',
234 'Writer' => '\Utility\Export\ExcelReport',
235 'Output' => 'Download',
238 'ExportToExcel' => false
241 'RequiredInput' => array(),
242 'OptionalInput' => array(
244 'NumberOfRecords' => 'Integer',
247 'OrderBy' => 'Array',
251 'NumberOfRecords' => 10,
252 'Query' => 'SELECT [SELECTION]
253 FROM \User\Entity\Profile profile
254 JOIN profile.permissions permissions
255 LEFT JOIN profile.company company
256 LEFT JOIN company.group companyGroup
257 LEFT JOIN company.groupDivision groupDivision
258 LEFT JOIN company.city city
259 LEFT JOIN company.region region
260 LEFT JOIN profile.manager manager
262 'Selection' => 'profile, permissions, company, manager, companyGroup, groupDivision, city, region',
264 'profile.archived' => false
267 'profile.firstName' => 'ASC',
268 'profile.familyName' => 'ASC'
276 'created' => 'DateTime',
282 'permissions' => array(
289 'region' => array('name')
291 'group' => array('name'),
292 'groupDivision' => array('name')
299 protected $metaCreate = array(
301 'Contract' => 'Recurring',
302 'ExecuteAfter' => array(
303 'sendWelcomeNotification'
305 'RequiredInput' => array(
308 'firstName' => 'String100',
309 'familyName' => 'String100',
310 'idNumber' => 'IdNumber',
311 'dateOfBirth' => 'Date',
312 'mobile' => 'String20',
313 'permissions' => 'Id'
316 'OptionalInput' => array(
319 'subscribeNewsletter' => 'Boolean',
320 'subscribeReminders' => 'Boolean',
321 'mainMemberPublicCentre' => 'Boolean'
329 protected $metaUpdate = array(
331 'Contract' => 'UseOnce',
332 'ExecuteAfter' => array(
335 'RequiredInput' => array(
338 'firstName' => 'String100',
339 'familyName' => 'String100',
340 'idNumber' => 'IdNumber',
341 'dateOfBirth' => 'Date',
342 'mobile' => 'String20',
343 'permissions' => 'Id'
346 'OptionalInput' => array(
350 'subscribeNewsletter' => 'Boolean',
351 'subscribeReminders' => 'Boolean',
352 'mainMemberPublicCentre' => 'Boolean'
361 protected $metaUnsubscribe = array(
363 'Contract' => 'UseOnce',
364 'ExecuteAfter' => array(),
365 'RequiredInput' => array(),
366 'OptionalInput' => array(
368 'subscribeNewsletter' => 'Boolean',
369 'subscribeReminders' => 'Boolean'
377 protected $metaChangePassword = array(
379 'Contract' => 'UseOnce',
380 'RequiredInput' => array(
382 'oldPassword' => 'String40',
383 'newPassword' => 'String40'
386 'OptionalInput' => array()
391 protected $metaAdminCreate = array(
393 'Contract' => 'Recurring',
394 'RequiredInput' => array(
397 'password' => 'String40',
398 'firstName' => 'String100',
399 'familyName' => 'String100',
400 'idNumber' => 'IdNumber',
401 'dateOfBirth' => 'Date',
402 'mobile' => 'Mobile',
403 'permissions' => 'Id'
406 'OptionalInput' => array(
411 'groupDivision' => 'Id',
412 'userType' => 'UserType',
413 'position' => 'Position',
414 'subscribeNewsletter' => 'Boolean',
415 'subscribeReminders' => 'Boolean',
416 'lastLogin' => 'DateTime',
417 'mainMemberPublicCentre' => 'Boolean'
424 protected $metaAdminUpdate = array(
426 'Contract' => 'UseOnce',
427 'RequiredInput' => array(
430 'password' => 'String40',
431 'firstName' => 'String100',
432 'familyName' => 'String100',
433 'idNumber' => 'IdNumber',
434 'dateOfBirth' => 'Date',
435 'mobile' => 'Mobile',
436 'permissions' => 'Id'
439 'OptionalInput' => array(
444 'groupDivision' => 'Id',
445 'userType' => 'UserType',
446 'position' => 'Position',
447 'subscribeNewsletter' => 'Boolean',
448 'subscribeReminders' => 'Boolean',
449 'mainMemberPublicCentre' => 'Boolean'
458 public function __construct()
460 if (!\Utility\Registry::isAuthenticated())
464 $authData = \Utility\Registry::getAuthData();
465 $companyFilter = false;
467 switch (\Utility\Registry::getUserType())
470 $groupFilter = \Utility\Registry::getSudo('Group', false);
472 && $this->metaGrid['Filter']['IDENTITY(company.group)'] = $groupFilter;
473 $divisionFilter = \Utility\Registry::getSudo('Division', false);
475 && $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $divisionFilter;
476 $companyFilter = \Utility\Registry::getSudo('Company', false);
479 $this->metaGrid['Filter']['company.id'] = $companyFilter;
480 $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager()
482 '\Company\Entity\Company', $companyFilter
484 $this->metaManagerList['Filter']['company'] = $companyFilter;
485 $this->metaSalesList['Filter']['company'] = $companyFilter;
486 $this->metaValuatorList['Filter']['company'] = $companyFilter;
487 $companyId = $companyFilter;
491 $this->metaManagerList['Filter']['company'] = 0;
492 $this->metaSalesList['Filter']['company'] = 0;
493 $this->metaValuatorList['Filter']['company'] = 0;
497 $this->metaGrid['Filter']['IDENTITY(company.group)'] = $authData['company']['group']['id'];
498 $divisionFilter = \Utility\Registry::getSudo('Division', false);
500 && $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $divisionFilter;
501 $companyFilter = \Utility\Registry::getSudo('Company', false);
504 $this->metaGrid['Filter']['company.id'] = $companyFilter;
505 $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager()
507 '\Company\Entity\Company', $companyFilter
509 $this->metaManagerList['Filter']['company'] = $companyFilter;
510 $this->metaSalesList['Filter']['company'] = $companyFilter;
511 $this->metaValuatorList['Filter']['company'] = $companyFilter;
512 $companyId = $companyFilter;
516 $this->metaManagerList['Filter']['company'] = 0;
517 $this->metaSalesList['Filter']['company'] = 0;
518 $this->metaValuatorList['Filter']['company'] = 0;
521 case 'Dealer Principle':
522 $this->metaGrid['Filter']['IDENTITY(company.groupDivision)'] = $authData['company']['groupDivision']['id'];
523 $companyFilter = \Utility\Registry::getSudo('Company', false);
526 $this->metaGrid['Filter']['company.id'] = $companyFilter;
527 $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager()
529 '\Company\Entity\Company', $companyFilter
531 $this->metaManagerList['Filter']['company'] = $companyFilter;
532 $this->metaSalesList['Filter']['company'] = $companyFilter;
533 $this->metaValuatorList['Filter']['company'] = $companyFilter;
534 $companyId = $companyFilter;
538 $this->metaManagerList['Filter']['company'] = 0;
539 $this->metaSalesList['Filter']['company'] = 0;
540 $this->metaValuatorList['Filter']['company'] = 0;
544 $this->metaGrid['Filter']['company.id'] = $authData['company']['id'];
545 $this->metaSelectList['Filter']['company'] = \Utility\Registry::getEntityManager()
547 '\Company\Entity\Company', $authData['company']['id']
549 $this->metaManagerList['Filter']['company'] = $authData['company']['id'];
550 $this->metaSalesList['Filter']['company'] = $authData['company']['id'];
551 $this->metaValuatorList['Filter']['company'] = $authData['company']['id'];
552 $companyId = $authData['company']['id'];
555 //\Utility\Debug::errorLog('FILTERS', $this->metaGrid['Filter']);
556 $em = \Utility\Registry::getEntityManager();
562 if (!is_null($companyId) && is_numeric($companyId))
565 ->getRepository('\User\Entity\Permissions')
566 ->findOneBy(array('name' => 'Dealership Manager (New)'))
569 ->getRepository('\User\Entity\Permissions')
570 ->findOneBy(array('name' => 'Dealership Manager (Used)'))
572 $profs = $em->getRepository('\User\Entity\Profile')
573 ->findBy(array('company' => $companyId));
574 foreach ($profs as $prof)
576 $profiles[] = $prof->id;
580 $valuators = array(0);
581 if (!empty($profiles))
583 $perms = $em->getRepository('\User\Entity\Override')
584 ->findBy(array('valuationIsSales' => true, 'profile' => $profiles));
585 foreach ($perms as $permission)
587 $sales[] = $permission->id;
589 $perms = $em->getRepository('\User\Entity\Override')
590 ->findBy(array('valuationIsValuator' => true, 'profile' => $profiles));
591 foreach ($perms as $permission)
593 $valuators[] = $permission->id;
597 $this->metaAdminManagerList['Filter']['permissions'] = array($managerNew, $managerUsed);
598 $this->metaManagerList['Filter']['permissions'] = array($managerNew, $managerUsed);
599 $this->metaSalesList['Filter']['override'] = $sales;
600 $this->metaValuatorList['Filter']['override'] = $valuators;
603 public function getValuationFilters()
605 return $this->metaValuatorList['Filter'];