From b91d237f0bcf6c4c1da193a3182153ee6c46b4e9 Mon Sep 17 00:00:00 2001 From: yuri Date: Wed, 4 May 2016 11:25:12 +0300 Subject: [PATCH] portal users activities --- .../Espo/Modules/Crm/Services/Activities.php | 37 ++++++++++++++++++- client/src/views/user/record/detail.js | 5 --- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/application/Espo/Modules/Crm/Services/Activities.php b/application/Espo/Modules/Crm/Services/Activities.php index 46093a3cb7..3437fbbaa8 100644 --- a/application/Espo/Modules/Crm/Services/Activities.php +++ b/application/Espo/Modules/Crm/Services/Activities.php @@ -102,11 +102,24 @@ class Activities extends \Espo\Core\Services\Base ], 'leftJoins' => [['users', 'usersLeft']], 'whereClause' => array( - 'usersLeftMiddle.userId' => $entity->id ), 'customJoin' => '' ); + $where = array( + 'usersLeftMiddle.userId' => $entity->id + ); + + if ($entity->get('isPortalUser') && $entity->get('contactId')) { + $selectParams['leftJoins'][] = ['contacts', 'contactsLeft']; + $where['contactsLeftMiddle.contactId'] = $entity->get('contactId'); + $selectParams['whereClause'][] = array( + 'OR' => $where + ); + } else { + $selectParams['whereClause'][] = $where; + } + if (!empty($statusList)) { $statusOpKey = 'status'; if ($op == 'NOT IN') { @@ -142,11 +155,24 @@ class Activities extends \Espo\Core\Services\Base ], 'leftJoins' => [['users', 'usersLeft']], 'whereClause' => array( - 'usersLeftMiddle.userId' => $entity->id ), 'customJoin' => '' ); + $where = array( + 'usersLeftMiddle.userId' => $entity->id + ); + + if ($entity->get('isPortalUser') && $entity->get('contactId')) { + $selectParams['leftJoins'][] = ['contacts', 'contactsLeft']; + $where['contactsLeftMiddle.contactId'] = $entity->get('contactId'); + $selectParams['whereClause'][] = array( + 'OR' => $where + ); + } else { + $selectParams['whereClause'][] = $where; + } + if (!empty($statusList)) { $statusOpKey = 'status'; if ($op == 'NOT IN') { @@ -164,6 +190,13 @@ class Activities extends \Espo\Core\Services\Base protected function getUserEmailQuery($entity, $op = 'IN', $statusList = null) { + if ($entity->get('isPortalUser') && $entity->get('contactId')) { + $contact = $this->getEntityManager()->getEntity('Contact', $entity->get('contactId')); + if ($contact) { + return $this->getEmailQuery($contact, $op, $statusList); + } + } + $selectManager = $this->getSelectManagerFactory()->create('Email'); $selectParams = array( diff --git a/client/src/views/user/record/detail.js b/client/src/views/user/record/detail.js index 8e4712a580..ab418e1d70 100644 --- a/client/src/views/user/record/detail.js +++ b/client/src/views/user/record/detail.js @@ -57,11 +57,6 @@ Espo.define('views/user/record/detail', 'views/record/detail', function (Dep) { } } - if (this.model.get('isPortalUser')) { - this.hidePanel('activities'); - this.hidePanel('history'); - } - if (this.model.id == this.getUser().id) { this.listenTo(this.model, 'after:save', function () { this.getUser().set(this.model.toJSON());