Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 7228 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 7228 Rev 7230
Línea 1... Línea 1...
1
<?php
1
<?php
-
 
2
/**
-
 
3
 * 
-
 
4
 * Controlador: Mis Perfiles 
-
 
5
 * 
-
 
6
 */
2
declare(strict_types=1);
7
declare(strict_types=1);
Línea 3... Línea 8...
3
 
8
 
Línea 4... Línea -...
4
namespace LeadersLinked\Controller;
-
 
5
 
-
 
6
use Laminas\Authentication\AuthenticationService;
9
namespace LeadersLinked\Controller;
7
use Laminas\Authentication\Result as AuthResult;
10
 
8
use Laminas\Db\Adapter\AdapterInterface;
11
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
-
 
10
use Laminas\Mvc\Controller\AbstractActionController;
12
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
11
use Laminas\Mvc\I18n\Translator;
13
use Laminas\Mvc\Controller\AbstractActionController;
-
 
14
use Laminas\Log\LoggerInterface;
12
use Laminas\Log\LoggerInterface;
15
use Laminas\View\Model\ViewModel;
13
use Laminas\View\Model\ViewModel;
16
 
14
use Laminas\View\Model\JsonModel;
17
use LeadersLinked\Mapper\GroupMapper;
-
 
18
use LeadersLinked\Mapper\GroupMemberMapper;
15
use LeadersLinked\Model\HighPerformanceTeamsGroup;
19
use LeadersLinked\Mapper\GroupTypeMapper;
16
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
20
use LeadersLinked\Model\Group;
-
 
21
use LeadersLinked\Model\GroupMember;
-
 
22
use LeadersLinked\Library\Functions;
-
 
23
use LeadersLinked\Mapper\IndustryMapper;
-
 
24
use LeadersLinked\Form\Feed\CreateGroupCompanyForm;
-
 
25
use LeadersLinked\Form\Feed\ShareGroupCompanyForm;
17
use LeadersLinked\Form\HighPerformanceTeamsGroupForm;
26
use LeadersLinked\Mapper\UserBlockedMapper;
-
 
27
use LeadersLinked\Mapper\QueryMapper;
-
 
28
use LeadersLinked\Mapper\UserMapper;
-
 
29
use LeadersLinked\Mapper\UserProfileMapper;
-
 
30
use LeadersLinked\Model\User;
-
 
31
use Laminas\View\Model\JsonModel;
18
use LeadersLinked\Library\Functions;
32
use PhpParser\Node\Stmt\GroupUse;
-
 
33
use LeadersLinked\Library\UserNotification;
-
 
34
use LeadersLinked\Mapper\EmailTemplateMapper;
-
 
35
use LeadersLinked\Model\EmailTemplate;
-
 
36
use LeadersLinked\Mapper\UserNotificationSettingMapper;
-
 
37
use LeadersLinked\Library\QueueEmail;
-
 
38
use phpDocumentor\Reflection\PseudoTypes\True_;
19
use LeadersLinked\Mapper\UserMapper;
39
use Laminas\Db\Sql\Expression;
-
 
40
use LeadersLinked\Model\Notification;
Línea 20... Línea 41...
20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupMapper;
41
use LeadersLinked\Mapper\NotificationMapper;
21
use LeadersLinked\Mapper\CompanyMapper;
42
 
22
 
43
 
23
class HighPerformanceTeamsGroupController extends AbstractActionController
44
class HighPerformanceTeamsGroupController extends AbstractActionController
Línea 38... Línea 59...
38
    /**
59
    /**
39
     *
60
     *
40
     * @var  LoggerInterface
61
     * @var  LoggerInterface
41
     */
62
     */
42
    private $logger;
63
    private $logger;
-
 
64
 
Línea 43... Línea 65...
43
    
65
    
44
    /**
66
    /**
45
     *
67
     *
46
     * @var array
68
     * @var array
47
     */
69
     */
Línea 48... Línea -...
48
    private $config;
-
 
49
    
-
 
50
    
70
    private $config;
51
    
71
    
52
    /**
72
    /**
53
     *
73
     *
54
     * @param AdapterInterface $adapter
74
     * @param AdapterInterface $adapter
55
     * @param AbstractAdapter $cache
75
     * @param AbstractAdapter $cache
56
     * @param LoggerInterface $logger
76
     * @param LoggerInterface $logger
57
     * @param array $config
77
     * @param array $config
58
     */
78
     */
59
    public function __construct($adapter, $cache , $logger, $config)
79
    public function __construct($adapter, $cache , $logger,  $config)
60
    {
80
    {
61
        $this->adapter      = $adapter;
81
        $this->adapter      = $adapter;
62
        $this->cache        = $cache;
82
        $this->cache        = $cache;
-
 
83
        $this->logger       = $logger;
-
 
84
        $this->config       = $config;
-
 
85
 
-
 
86
    }
-
 
87
    
-
 
88
    /**
-
 
89
     * 
-
 
90
     * Generación del listado de perfiles
-
 
91
     * {@inheritDoc}
-
 
92
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
-
 
93
     */
Línea -... Línea 94...
-
 
94
    public function indexAction()
-
 
95
    {
-
 
96
        
-
 
97
        $this->layout()->setTemplate('layout/layout-backend');
Línea 63... Línea 98...
63
        $this->logger       = $logger;
98
        $viewModel = new ViewModel();
Línea 64... Línea 99...
64
        $this->config       = $config;
99
        $viewModel->setTemplate('leaders-linked/high-performance-teams-group/index.phtml');
-
 
100
        return $viewModel ;
-
 
101
        
65
        
102
    }
66
        
103
    
67
    }
104
   
68
    
-
 
-
 
105
    /**
Línea 69... Línea 106...
69
   
106
     * Presenta el perfil con las opciónes de edición de cada sección
70
 
107
     * @return \Laminas\Http\Response|\Laminas\View\Model\ViewModel|\Laminas\View\Model\JsonModel
71
        
-
 
Línea -... Línea 108...
-
 
108
     */
-
 
109
    public function viewAction()
Línea -... Línea 110...
-
 
110
    {
-
 
111
        $request = $this->getRequest();
72
    public function indexAction()
112
        
73
    {
113
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
114
        $currentUser = $currentUserPlugin->getUser();
Línea -... Línea 115...
-
 
115
        
Línea 74... Línea 116...
74
 
116
        $flashMessenger = $this->plugin('FlashMessenger');
75
        
-
 
76
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
77
        $currentUser = $currentUserPlugin->getUser();
-
 
78
        $currentCompany = $currentUserPlugin->getCompany();
117
        $id = $this->params()->fromRoute('id');
79
        
-
 
80
        
-
 
Línea 81... Línea -...
81
        $request = $this->getRequest();
-
 
82
        if($request->isGet()) {
-
 
83
            
-
 
84
            
118
        
85
            $headers  = $request->getHeaders();
119
        $isJson = false;
86
            
-
 
87
            $isJson = false;
-
 
88
            if($headers->has('Accept')) {
120
        
-
 
121
        $headers  = $request->getHeaders();
89
                $accept = $headers->get('Accept');
122
        if($headers->has('Accept')) {
-
 
123
            $accept = $headers->get('Accept');
-
 
124
            
-
 
125
            $prioritized = $accept->getPrioritized();
-
 
126
            
-
 
127
            foreach($prioritized as $key => $value) {
Línea 90... Línea 128...
90
                
128
                $raw = trim($value->getRaw());
-
 
129
                
-
 
130
                if(!$isJson) {
-
 
131
                    $isJson = strpos($raw, 'json');
-
 
132
                }
Línea -... Línea 133...
-
 
133
                
91
                $prioritized = $accept->getPrioritized();
134
            }
-
 
135
        }
-
 
136
        
-
 
137
        if($isJson) {
-
 
138
           
-
 
139
            $flashMessenger = $this->plugin('FlashMessenger');
-
 
140
            
-
 
141
            if(!$id) {
-
 
142
                return new JsonModel([
-
 
143
                    'success' => false,
-
 
144
                    'data' => 'ERROR_INVALID_PARAMETER'
-
 
145
                ]);
-
 
146
                
-
 
147
            }
-
 
148
            
-
 
149
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
150
            $group = $groupMapper->fetchOneByUuid($id);
-
 
151
            
-
 
152
            if(!$group) {
-
 
153
                return new JsonModel([
-
 
154
                    'success' => false,
-
 
155
                    'data' => 'ERROR_GROUP_NOT_FOUND'
-
 
156
                ]);
92
                
157
            }
-
 
158
            
-
 
159
            if($group->status != Group::STATUS_ACTIVE) {
-
 
160
                return new JsonModel([
-
 
161
                    'success' => false,
-
 
162
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
-
 
163
                ]);
-
 
164
            }
-
 
165
            
-
 
166
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
-
 
167
            $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->user_id, $currentUser->id);
-
 
168
            
-
 
169
            if($userBlocked) {
-
 
170
                $flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
-
 
171
                return $this->redirect()->toRoute('dashboard');
-
 
172
            }
-
 
173
            
-
 
174
            $userMapper = UserMapper::getInstance($this->adapter);
-
 
175
            $ownerGroup = $userMapper->fetchOne($group->user_id);
-
 
176
            
-
 
177
            $values = [
-
 
178
                Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
93
                foreach($prioritized as $key => $value) {
179
                Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
-
 
180
                Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
-
 
181
            ];
-
 
182
            
94
                    $raw = trim($value->getRaw());
183
            $accessibility = $values[$group->accessibility];
95
                    
184
            
-
 
185
            $values = [
-
 
186
                Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
96
                    if(!$isJson) {
187
                Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
-
 
188
            ];
97
                        $isJson = strpos($raw, 'json');
189
           
-
 
190
            $privacy = $values[$group->privacy];
-
 
191
            
-
 
192
            $industryMapper = IndustryMapper::getInstance($this->adapter);
-
 
193
            $record = $industryMapper->fetchOne($group->industry_id);
-
 
194
            
-
 
195
            $industry = $record->name;
Línea -... Línea 196...
-
 
196
            
-
 
197
            $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
-
 
198
            $record = $groupTypeMapper->fetchOne($group->type_id);
-
 
199
            
-
 
200
            $group_type = $record->name;
Línea -... Línea 201...
-
 
201
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
202
            
-
 
203
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $group->user_id);
-
 
204
            if($groupMember) {
-
 
205
                
-
 
206
                if($groupMember->status != GroupMember::STATUS_ACCEPTED) {
-
 
207
                    $groupMember->status = $groupMember::STATUS_ACCEPTED;
-
 
208
                    $groupMemberMapper->update($groupMember);
-
 
209
                }
-
 
210
                
-
 
211
            } else {
-
 
212
                $groupMember = new GroupMember();
-
 
213
                $groupMember->user_id = $group->user_id;
-
 
214
                $groupMember->group_id = $group->id;
-
 
215
                $groupMember->status = GroupMember::STATUS_ACCEPTED;
-
 
216
                
-
 
217
                $groupMemberMapper->insert($groupMember);
-
 
218
            }
-
 
219
          
-
 
220
            $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
-
 
221
            
-
 
222
            
-
 
223
            $member = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
224
            $show_feeds = false;
-
 
225
            if($member) {
-
 
226
                if($member->status == GroupMember::STATUS_ACCEPTED || $member->status == GroupMember::STATUS_AUTO_JOIN) {
-
 
227
                    $show_feeds = true;
-
 
228
                }
-
 
229
            }
-
 
230
            
-
 
231
            $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
232
            $select = $queryMapper->getSql()->select();
-
 
233
            $select->columns(['user_id' => 'id',  'user_uuid' => 'uuid', 'first_name','last_name', 'image']);
-
 
234
            $select->from(['u' => UserMapper::_TABLE]);
-
 
235
            $select->join(['tgm' => GroupMemberMapper::_TABLE], 'tgm.user_id = u.id',[]);
-
 
236
            $select->join(['up' => UserProfileMapper::_TABLE], 'up.user_id = u.id',['user_profile_id' => 'id', 'user_profile_uuid' => 'uuid']);
-
 
237
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
-
 
238
            $select->where->equalTo('tgm.status',GroupMember::STATUS_ACCEPTED);
-
 
239
            
-
 
240
            // echo $select->getSqlString($this->adapter->platform); exit;
-
 
241
              
-
 
242
            
-
 
243
            $members = [];
-
 
244
            
-
 
245
            $records = $queryMapper->fetchAll($select);
-
 
246
            foreach($records as $record)
-
 
247
            {
-
 
248
                $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($record['user_id'], $currentUser->id);
-
 
249
                
-
 
250
                array_push($members, [
-
 
251
                    'name' => trim($record['first_name'] . ' ' . $record['last_name']),
-
 
252
                    'image' => $this->url()->fromRoute('storage', ['code' => $record['user_uuid'], 'type' => 'user', 'filename' => $record['image'] ]),
-
 
253
                    'link_profile' => $userBlocked ? '' : $this->url()->fromRoute('profile',['id' => $record['user_profile_uuid'] ])
-
 
254
                    
-
 
255
                ]);
-
 
256
            }
-
 
257
           
-
 
258
            
-
 
259
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
260
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
261
            
-
 
262
            $data = [
-
 
263
                'total_members'         => $total_members,
-
 
264
                'accessibility'         => $accessibility ,
-
 
265
                'privacy'               => $privacy,
-
 
266
                'industry'              => $industry,
-
 
267
                'group_id'              => $group->id,
-
 
268
                'group_type'            => $group_type,
-
 
269
                'group_uuid'            => $group->uuid,
-
 
270
                'name'                  => trim($group->name),
-
 
271
                'image'                 => $group->image,
-
 
272
                'cover'                 => $group->cover,
-
 
273
                'overview'              => $group->description,
-
 
274
                'website'               => $group->website,
-
 
275
                'members'               => $members,
-
 
276
                'link_inmail'           => $this->url()->fromRoute('inmail', ['id' => $ownerGroup->uuid]),
-
 
277
                'link_request' => '',
-
 
278
                'link_accept' => '',
-
 
279
                'link_cancel' => '',
-
 
280
                'link_leave' => '',
-
 
281
            ];
-
 
282
            
-
 
283
            return new JsonModel([
Línea 98... Línea 284...
98
                    }
284
                'success' => false,
99
                    
285
                'data' => 'holal'
-
 
286
            ]);
-
 
287
            
-
 
288
            if($groupMember) {
-
 
289
                if($groupMember->status == GroupMember::STATUS_ACCEPTED || $groupMember->status == GroupMember::STATUS_AUTO_JOIN) {
-
 
290
                    $data['link_leave'] = $this->url()->fromRoute('high-performance-teams/leave', ['id' => $group->uuid] );
-
 
291
                }
-
 
292
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
-
 
293
                    $data['link_accept'] = $this->url()->fromRoute('high-performance-teams/accept', ['id' => $group->uuid] );
Línea -... Línea 294...
-
 
294
                    $data['link_cancel'] = $this->url()->fromRoute('high-performance-teams/cancel', ['id' => $group->uuid] );
-
 
295
                }
-
 
296
                if( $groupMember->status == GroupMember::STATUS_JOINING_REQUESTED) {
-
 
297
                    $data['link_cancel'] = $this->url()->fromRoute('high-performance-teams/cancel', ['id' => $group->uuid] );
-
 
298
                }
-
 
299
                if(in_array($group->accessibility, [ Group::ACCESSIBILITY_AUTO_JOIN, Group::ACCESSIBILITY_REQUEST_TO_JOIN]) && $groupMember->status == GroupMember::STATUS_CANCELLED) {
-
 
300
 
Línea -... Línea 301...
-
 
301
                    $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
-
 
302
                    $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->id, $currentUser->id);
-
 
303
                    
-
 
304
                    if(!$userBlocked) {
-
 
305
                        $data['link_request'] =$this->url()->fromRoute('high-performance-teams/request', ['id' => $group->uuid] );;
-
 
306
                    }
-
 
307
                }
-
 
308
            } else {
-
 
309
                
-
 
310
                if(in_array($group->accessibility, [ Group::ACCESSIBILITY_AUTO_JOIN, Group::ACCESSIBILITY_REQUEST_TO_JOIN])) {
-
 
311
                
-
 
312
                    $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
-
 
313
                    $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->id, $currentUser->id);
-
 
314
                    
-
 
315
                    if(!$userBlocked) {
-
 
316
                        $data['link_request'] = $this->url()->fromRoute('high-performance-teams/request', ['id' => $group->uuid] );;
100
                }
317
                    }
-
 
318
                }
-
 
319
                
-
 
320
            }
-
 
321
            
-
 
322
            
101
            }
323
            return new JsonModel([
102
            
324
                'success'   => true,
-
 
325
                'data'      => $data
-
 
326
            ]);
-
 
327
            
-
 
328
            
-
 
329
            
-
 
330
        } else {
-
 
331
            
103
            if($isJson) {
332
      
104
                
333
            
-
 
334
            if(!$id) {
-
 
335
                $flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');
-
 
336
                return $this->redirect()->toRoute('dashboard');
-
 
337
            }
-
 
338
            
-
 
339
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
340
            $group = $groupMapper->fetchOneByUuid($id);
-
 
341
            if(!$group) {
Línea -... Línea 342...
-
 
342
                $flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');
-
 
343
                return $this->redirect()->toRoute('dashboard');
-
 
344
            }
-
 
345
            
-
 
346
            
-
 
347
            
-
 
348
            
-
 
349
            
-
 
350
            
-
 
351
            $userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);
-
 
352
            $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($group->user_id, $currentUser->id);
-
 
353
            
-
 
354
            if($userBlocked) {
-
 
355
                $flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');
-
 
356
                return $this->redirect()->toRoute('dashboard');
-
 
357
            }
-
 
358
            
-
 
359
            $userMapper = UserMapper::getInstance($this->adapter);
105
               
360
            $ownerGroup = $userMapper->fetchOne($group->user_id);
-
 
361
    
-
 
362
            $values = [
-
 
363
                Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',
-
 
364
                Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',
-
 
365
                Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',
106
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
366
            ];
-
 
367
            
-
 
368
            $accessibility = $values[$group->accessibility];
-
 
369
            
Línea 107... Línea 370...
107
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'planning-objectives-and-goals/objectives/edit');
370
            $values = [
-
 
371
                Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
108
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'planning-objectives-and-goals/objectives/delete');
372
                Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
109
                $allowObjective = $acl->isAllowed($currentUser->usertype_id, 'planning-objectives-and-goals/objectives/goals');
373
            ];
110
                $allowObjectiveReport = $acl->isAllowed($currentUser->usertype_id, 'planning-objectives-and-goals/objectives/report');
-
 
111
                $allowObjectiveReportAll = $acl->isAllowed($currentUser->usertype_id, 'planning-objectives-and-goals/objectives/reportall');
-
 
112
                
-
 
113
                
-
 
114
 
-
 
115
                $search = $this->params()->fromQuery('search', []);
-
 
116
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
-
 
Línea -... Línea 374...
-
 
374
            
-
 
375
            $privacy = $values[$group->privacy];
-
 
376
            
-
 
377
            $industryMapper = IndustryMapper::getInstance($this->adapter);
117
                
378
            $record = $industryMapper->fetchOne($group->industry_id);
118
                
379
            
-
 
380
            $industry = $record->name;
119
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
381
            
Línea 120... Línea -...
120
                $page               = (intval($this->params()->fromQuery('start', 1), 10)/$records_x_page)+1;
-
 
121
                $order =  $this->params()->fromQuery('order', []);
382
            $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
122
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
383
            $record = $groupTypeMapper->fetchOne($group->type_id);
123
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
-
 
124
    
-
 
125
                $fields =  ['title', 'date'];
384
            
126
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'title';
385
            $group_type = $record->name;
127
                
386
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
128
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
387
            
129
                    $order_direction = 'ASC';
-
 
130
                }
388
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $group->user_id);
131
 
389
            if($groupMember) {
132
             
390
                
133
                $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
-
 
134
               
391
                if($groupMember->status != GroupMember::STATUS_ACCEPTED) {
135
                $planningObjectivesAndGoalsGoalsMapper = PlanningObjectivesAndGoalsGoalsMapper::getInstance($this->adapter);
-
 
136
               
392
                    $groupMember->status = $groupMember::STATUS_ACCEPTED;
137
                $planningObjectivesAndGoalsTaskMapper = PlanningObjectivesAndGoalsTaskMapper::getInstance($this->adapter);
-
 
-
 
393
                    $groupMemberMapper->update($groupMember);
138
                
394
                }
139
                $paginator = $planningObjectivesAndGoalsObjectivesMapper->fetchAllDataTable($search, $page, $records_x_page, $order_field, $order_direction, $currentCompany->id);
395
                
140
               
396
            } else {
141
                $items = [];
397
                $groupMember = new GroupMember();
142
            
398
                $groupMember->user_id = $group->user_id;
143
                $records = $paginator->getCurrentItems();
-
 
144
               
399
                $groupMember->group_id = $group->id;
145
                foreach($records as $record)
400
                $groupMember->status = GroupMember::STATUS_ACCEPTED;
146
                {
-
 
147
 
-
 
148
                   
-
 
149
 
-
 
150
                    $recordsGoals = $planningObjectivesAndGoalsGoalsMapper->fetchAll($record->id);
401
                
151
                    $costObjective=0;
-
 
-
 
402
                $groupMemberMapper->insert($groupMember);
152
                    $indicatorObjective=0;
403
            }
153
                    $contador=0;
404
            
154
                    $countRecordsGoals = count($recordsGoals);
405
            
155
                    if($countRecordsGoals>0){
-
 
156
                        foreach($recordsGoals as $record2)
-
 
157
                        {
-
 
158
                            $recordsTask = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
406
            $total_members = $groupMemberMapper->fetchTotalByGroupId($group->id);
159
                            $costGoals=0;
407
            
160
                            $indicatorGoals=0;
408
            
161
                            $countRecordsTask = count($recordsTask);
-
 
162
                            if($countRecordsTask>0){
-
 
163
                                foreach($recordsTask as $record3){
409
            $member = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
164
                                    $indicatorGoals=$indicatorGoals+$record3->indicator;
-
 
165
                                    $costGoals=$costGoals+$record3->cost;
-
 
166
                                }
410
            $show_feeds = false;
-
 
411
            if($member) {
167
                                $indicatorObjective=$indicatorObjective+($indicatorGoals/$countRecordsTask);
412
                if($member->status == GroupMember::STATUS_ACCEPTED || $member->status == GroupMember::STATUS_AUTO_JOIN) {
168
                                $costObjective=$costObjective+$costGoals;
-
 
169
                                $contador++;
-
 
170
                            }
413
                    $show_feeds = true;
171
                        }
-
 
172
                        if($indicatorObjective==0){
-
 
173
                            $indicatorObjective=(-1);
414
                }
174
                        }else{
415
            }
175
                            $indicatorObjective=round($indicatorObjective/$contador,2);
-
 
176
                            
-
 
177
                        }
-
 
178
                    }else{
-
 
179
                        $indicatorObjective=(-2);
-
 
180
                    }
-
 
181
 
-
 
Línea -... Línea 416...
-
 
416
            
-
 
417
            $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
418
            $select = $queryMapper->getSql()->select();
-
 
419
            $select->columns(['user_id' => 'id',  'user_uuid' => 'uuid', 'first_name','last_name', 'image']);
-
 
420
            $select->from(['u' => UserMapper::_TABLE]);
-
 
421
            $select->join(['tgm' => GroupMemberMapper::_TABLE], 'tgm.user_id = u.id',[]);
-
 
422
            $select->join(['up' => UserProfileMapper::_TABLE], 'up.user_id = u.id',['user_profile_id' => 'id', 'user_profile_uuid' => 'uuid']);
-
 
423
            $select->where->equalTo('u.status', User::STATUS_ACTIVE);
-
 
424
            $select->where->equalTo('tgm.status',GroupMember::STATUS_ACCEPTED);
-
 
425
            
-
 
426
           // echo $select->getSqlString($this->adapter->platform); exit;
-
 
427
            
-
 
428
            $members = [];
-
 
429
            
-
 
430
            $records = $queryMapper->fetchAll($select);
-
 
431
            foreach($records as $record) 
-
 
432
            {
-
 
433
                $userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($record['user_id'], $currentUser->id);
-
 
434
                
-
 
435
                array_push($members, [
-
 
436
                    'name' => trim($record['first_name'] . ' ' . $record['last_name']),
-
 
437
                    'image' => $this->url()->fromRoute('storage', ['code' => $record['user_uuid'], 'type' => 'user', 'filename' => $record['image'] ]),
-
 
438
                    'link_profile' => $userBlocked ? '' : $this->url()->fromRoute('high-performance-teams/view',['id' => $record['user_profile_uuid'] ])
-
 
439
                    
-
 
440
                ]);
-
 
441
            }
-
 
442
    
-
 
443
            $formFeed = new CreateGroupCompanyForm();
-
 
444
            $formShare = new ShareGroupCompanyForm();
-
 
445
            
-
 
446
            
-
 
447
                $this->layout()->setTemplate('layout/layout-backend');
-
 
448
            $viewModel = new ViewModel();
-
 
449
            
-
 
450
            if($show_feeds) {
-
 
451
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/view-with-feeds.phtml');
-
 
452
            } else {
-
 
453
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/view-without-feeds.phtml');
-
 
454
            }
-
 
455
            
-
 
456
            
-
 
457
            
-
 
458
            $notificationMapper = NotificationMapper::getInstance($this->adapter);
-
 
459
            $notificationMapper->markAllNotificationsAsReadByUserIdAndGroupId($currentUser->id, $group->id);
-
 
460
            
-
 
461
            
-
 
462
            
-
 
463
           
-
 
464
            
-
 
465
            
-
 
466
            $viewModel->setVariables([
-
 
467
                'user_id'               => $currentUser->id,
-
 
468
                'total_members'         => $total_members,
-
 
469
                'accessibility'         => $accessibility ,
-
 
470
                'privacy'               => $privacy,
-
 
471
                'industry'              => $industry,
-
 
472
                'group_id'              => $group->id,
-
 
473
                'group_type'            => $group_type,
-
 
474
                'group_uuid'            => $group->uuid,
-
 
475
                'name'                  => trim($group->name),
-
 
476
                'image'                 => $group->image,
-
 
477
                'cover'                 => $group->cover,
-
 
478
                'overview'              => $group->description,
-
 
479
                'website'               => $group->website,
-
 
480
                'formFeed'              => $formFeed,
-
 
481
                'formShare'             => $formShare,
-
 
482
                'members'               => $members,
-
 
483
                //'link_inmail'           => $this->url()->fromRoute('inmail', ['id' => $ownerGroup->uuid]),
-
 
484
                'link_inmail'           =>'hola.com'
-
 
485
            ]);
-
 
486
            return $viewModel ;
-
 
487
        }
-
 
488
        
-
 
489
    }
-
 
490
    
-
 
491
    public function leaveAction()
-
 
492
    {
-
 
493
        $flashMessenger = $this->plugin('FlashMessenger');
-
 
494
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
495
        $currentUser = $currentUserPlugin->getUser();
-
 
496
        
-
 
497
        $request = $this->getRequest();
-
 
498
        if($request->isPost()) {
-
 
499
            $id = $this->params()->fromRoute('id');
-
 
500
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
-
 
501
            $flash = $flash === 'true'? true: false;
-
 
502
            
-
 
503
            if(!$id) {
-
 
504
                return new JsonModel([
-
 
505
                    'success' => false,
182
                    $date='';
506
                    'data' => 'ERROR_INVALID_PARAMETER'
-
 
507
                ]);
-
 
508
                
-
 
509
            }
-
 
510
            
-
 
511
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
512
            $group = $groupMapper->fetchOneByUuid($id);
-
 
513
            
-
 
514
            if(!$group) {
-
 
515
                return new JsonModel([
Línea 183... Línea -...
183
                    if($record->date!=NULL){
-
 
184
                        $dt = \DateTime::createFromFormat('Y-m-d', $record->date);
-
 
185
                        $date =  $dt->format('d/m/Y');
-
 
186
                    }
-
 
187
                    $item = [
-
 
188
                        'title' => $record->title,
-
 
189
                        'description' => $record->description,
516
                    'success' => false,
190
                        'date'=> $date,
-
 
191
                        'cost'=>$costObjective,
-
 
192
                        'progress'=>$indicatorObjective,
517
                    'data' => 'ERROR_GROUP_NOT_FOUND'
193
                        'status'=> $record->status,
518
                ]);
194
                        'link_report_all'> $allowObjectiveReportAll ? $this->url()->fromRoute('planning-objectives-and-goals/objectives/reportall') : '',
519
            }
195
                        'actions' => [
520
            
196
                            'link_edit' => $allowEdit ? $this->url()->fromRoute('planning-objectives-and-goals/objectives/edit', ['id' => $record->uuid]) : '',
-
 
197
                            'link_delete' => $allowDelete ? $this->url()->fromRoute('planning-objectives-and-goals/objectives/delete', ['id' => $record->uuid]) : '',
-
 
198
                            'link_objective' => $allowObjective ? $this->url()->fromRoute('planning-objectives-and-goals/objectives/goals', ['uuid_objective' => $record->uuid]) : '',
-
 
199
                            'link_objective_report' => $allowObjectiveReport ? $this->url()->fromRoute('planning-objectives-and-goals/objectives/report', ['id' => $record->uuid]) : '',
-
 
200
                        
-
 
201
                        ]
521
            if($group->status != Group::STATUS_ACTIVE) {
202
 
522
                return new JsonModel([
203
                    ];
-
 
204
                   
-
 
205
                    
-
 
206
                    array_push($items, $item);
523
                    'success' => false,
207
                    
524
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
208
                }
525
                ]);
209
               
526
            }
210
                $recordsObjectivesModule = $planningObjectivesAndGoalsObjectivesMapper->fetchAll($currentCompany->id);
-
 
211
                $costModule=0;
-
 
212
                $indicatorModule=0;
-
 
213
                $contadorTotalModule=0;
-
 
214
                $countRecordsObjectives = count($recordsObjectivesModule);
527
            
215
                if($countRecordsObjectives>0){
-
 
216
                    
-
 
217
                    foreach($recordsObjectivesModule as $record)
-
 
218
                    {
528
            if($group->user_id == $currentUser->id) {
219
                        
529
                return new JsonModel([
220
                        $recordsGoalsModule = $planningObjectivesAndGoalsGoalsMapper->fetchAll($record->id);
530
                    'success' => false,
221
                        $costObjectiveModule=0;
531
                    'data' => 'ERROR_GROUP_YOU_ARE_THE_OWNER_OF_THIS_GROUP'
222
                        $indicatorObjectiveModule=0;
532
                ]);
223
                        $contadorModule=0;
533
            }
224
                        $countRecordsGoalsModule = count($recordsGoalsModule);
534
            
Línea -... Línea 535...
-
 
535
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
536
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
537
            if($groupMember) {
-
 
538
                
-
 
539
                if($groupMember->status == GroupMember::STATUS_ACCEPTED ||$groupMember->status == GroupMember::STATUS_AUTO_JOIN ) {
225
                        if($countRecordsGoalsModule>0){
540
                    
-
 
541
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
-
 
542
                    if($groupMemberMapper->update($groupMember)) {
226
                           
543
                        if($flash) {
227
                            foreach($recordsGoalsModule as $record2)
544
                        
228
                            {
545
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP');
229
                               
546
                            
230
                                $recordsTaskModule = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
547
                            return new JsonModel([
231
                                $costGoalsModule=0;
-
 
232
                                $indicatorGoalsModule=0;
-
 
233
                                $countRecordsTaskModule = count($recordsTaskModule);
548
                                'success' => true,
234
                                if($countRecordsTaskModule>0){
-
 
Línea -... Línea 549...
-
 
549
                                'data' =>  [
235
                                    foreach($recordsTaskModule as $record3){
550
                                    'message' => 'LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP',
236
                                       
551
                                    'reload' => true
237
                                        $indicatorGoalsModule=$indicatorGoalsModule+$record3->indicator;
552
                                 ]   
238
                                        $costGoalsModule=$costGoalsModule+$record3->cost;
-
 
239
                                    }
-
 
240
                                    $indicatorObjectiveModule=$indicatorObjectiveModule+($indicatorGoalsModule/$countRecordsTaskModule);
-
 
241
                                    $costModule=$costModule+$costGoalsModule;
-
 
242
                                    $contadorModule++;
-
 
243
                                }
-
 
244
                            }
-
 
245
                            if($indicatorObjectiveModule>0){
-
 
246
                                $indicatorModule=$indicatorModule+($indicatorObjectiveModule/$contadorModule);
-
 
247
                                $contadorTotalModule++;
-
 
248
                            }
-
 
249
                        }
-
 
250
                        
-
 
251
                    }
-
 
252
                    if($indicatorModule==0){
-
 
253
                        $indicatorModule=(-5);
-
 
254
                    }else{
553
                            ]);
255
                        $indicatorModule=round($indicatorModule/$contadorTotalModule,2);
-
 
256
                    }
554
                        } else {
-
 
555
                            return new JsonModel([
-
 
556
                                'success' => true,
-
 
557
                                'data' =>  'LABEL_GROUP_YOU_HAVE_LEFT_THE_GROUP',
-
 
558
                            ]);
257
                }else{
559
                        }
-
 
560
                        
258
                    $indicatorModule=(-3);
561
                    } else {
259
                }
562
                        return new JsonModel([
260
 
563
                            'success' => false,
261
                
564
                            'data' => $groupMemberMapper->getError()
262
                return new JsonModel([
565
                        ]);
263
                    'success' => true,
566
                    }
-
 
567
                    
264
                    'data' => [
568
                    
265
                        'items' => $items,
569
                } else {
-
 
570
                    return new JsonModel([
266
                        'total' => $paginator->getTotalItemCount(),
571
                        'success' => false,
267
                        'module'=>[
572
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
268
                            'costModule' => '$'.$costModule,
-
 
269
                            'indicatorModule'=>$indicatorModule
573
                    ]);
270
                        ]
574
                }
271
                    ]
575
                
272
                ]);
576
            } else {
273
                
577
                return new JsonModel([
274
            } else  {
-
 
275
                $formAdd = new HighPerformanceTeamsGroupForm();
578
                    'success' => false,
Línea 276... Línea 579...
276
                $this->layout()->setTemplate('layout/layout-backend');
579
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
277
                $viewModel = new ViewModel();
580
                ]);
278
                $viewModel->setTemplate('leaders-linked/planning-objectives-and-goals-objectives/index.phtml');
-
 
279
                $viewModel->setVariables([
581
            }
280
                    'formAdd' => $formAdd,                    
-
 
281
                ]);
582
            
282
                return $viewModel ;
-
 
283
            }
583
            
284
        } else {
-
 
285
            return new JsonModel([
-
 
286
                'success' => false,
-
 
Línea -... Línea 584...
-
 
584
            
-
 
585
            
-
 
586
        } else {
-
 
587
            
-
 
588
            return new JsonModel([
287
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
589
                'success' => false,
-
 
590
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
591
            ]);
-
 
592
        }
-
 
593
    }
-
 
594
    
-
 
595
    public function cancelAction()
-
 
596
    {
-
 
597
        $flashMessenger = $this->plugin('FlashMessenger');
-
 
598
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
599
        $currentUser = $currentUserPlugin->getUser();
-
 
600
        
-
 
601
        $request = $this->getRequest();
-
 
602
        if($request->isPost()) {
-
 
603
            $id = $this->params()->fromRoute('id');
-
 
604
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
-
 
605
            $flash = $flash === 'true'? true: false;
-
 
606
            
288
            ]);
607
            if(!$id) {
-
 
608
                return new JsonModel([
-
 
609
                    'success' => false,
-
 
610
                    'data' => 'ERROR_INVALID_PARAMETER'
-
 
611
                ]);
-
 
612
                
-
 
613
            }
-
 
614
            
-
 
615
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
616
            $group = $groupMapper->fetchOneByUuid($id);
-
 
617
            
-
 
618
            if(!$group) {
-
 
619
                return new JsonModel([
-
 
620
                    'success' => false,
-
 
621
                    'data' => 'ERROR_GROUP_NOT_FOUND'
-
 
622
                ]);
-
 
623
            }
-
 
624
            
-
 
625
            if($group->status != Group::STATUS_ACTIVE) {
-
 
626
                return new JsonModel([
-
 
627
                    'success' => false,
-
 
628
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
-
 
629
                ]);
-
 
630
            }
-
 
631
            
-
 
632
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
633
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
634
            if($groupMember) {
-
 
635
               
-
 
636
                if($groupMember->status == GroupMember::STATUS_JOINING_REQUESTED || $groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
Línea 289... Línea -...
289
        }
-
 
290
    }
-
 
291
    public function addAction()
-
 
292
    {
-
 
293
      $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
294
        $currentUser = $currentUserPlugin->getUser();
-
 
295
        $currentCompany = $currentUserPlugin->getCompany();
-
 
296
 
-
 
297
        $request = $this->getRequest();
-
 
Línea -... Línea 637...
-
 
637
               
-
 
638
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
-
 
639
                    if($groupMemberMapper->update($groupMember)) {
-
 
640
                        if($flash) {
-
 
641
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_CANCELLED');
298
        if($request->isPost()) {
642
                            
299
            $form = new  HighPerformanceTeamsGroupForm();
643
                            return new JsonModel([
300
            $dataPost = $request->getPost()->toArray();
-
 
301
            
-
 
302
            $form->setData($dataPost);
644
                                'success' => true,
303
            
-
 
304
            if($form->isValid()) {
-
 
305
                $dataPost = (array) $form->getData();
-
 
306
                $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroup::STATUS_INACTIVE;
-
 
307
                $dataPost['company_id']=$currentCompany->id;
-
 
308
 
-
 
309
                $hydrator = new ObjectPropertyHydrator();
-
 
310
                $planningObjectivesAndGoalsObjectives = new HighPerformanceTeamsGroup();
-
 
311
                $hydrator->hydrate($dataPost, $planningObjectivesAndGoalsObjectives);
645
                                'data' =>  [
312
                
646
                                    'message' => 'LABEL_GROUP_REQUEST_CANCELLED',
313
                $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
647
                                    'reload' => true
314
                $result = $planningObjectivesAndGoalsObjectivesMapper->insert($planningObjectivesAndGoalsObjectives);
648
                                 ]  
315
                
649
                            ]);
-
 
650
                            
Línea -... Línea 651...
-
 
651
                        } else {
-
 
652
                            return new JsonModel([
316
                if($result) {
653
                                'success' => true,
-
 
654
                                'data' =>  'LABEL_GROUP_REQUEST_CANCELLED'
317
                    $this->logger->info('Se agrego el objetivo ' . $planningObjectivesAndGoalsObjectives->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
655
                            ]);
318
                    
656
                        }
319
                    $data = [
657
                        
320
                        'success'   => true,
658
                        
321
                        'data'   => 'LABEL_RECORD_ADDED'
-
 
322
                    ];
-
 
323
                } else {
659
                        
324
                    $data = [
-
 
325
                        'success'   => false,
-
 
326
                        'data'      => $planningObjectivesAndGoalsObjectivesMapper->getError()
-
 
327
                    ];
-
 
328
                    
660
                    } else {
329
                }
-
 
330
                
661
                        return new JsonModel([
331
                return new JsonModel($data);
662
                            'success' => false,
332
                
663
                            'data' => $groupMemberMapper->getError()
333
            } else {
664
                        ]);
-
 
665
                    }
334
                $messages = [];
666
                    
335
                $form_messages = (array) $form->getMessages();
667
                    
336
                foreach($form_messages  as $fieldname => $field_messages)
-
 
337
                {
-
 
338
                    
-
 
339
                    $messages[$fieldname] = array_values($field_messages);
-
 
Línea 340... Línea -...
340
                }
-
 
341
                
-
 
342
                return new JsonModel([
-
 
343
                    'success'   => false,
-
 
344
                    'data'   => $messages
-
 
345
                ]);
-
 
346
            }
668
                } else {
347
 
-
 
348
        } else {
-
 
349
            $data = [
-
 
350
                'success' => false,
-
 
351
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
352
            ];
-
 
353
            
-
 
354
            return new JsonModel($data);
-
 
355
        }
-
 
356
        
-
 
357
        return new JsonModel($data);
-
 
358
    
-
 
359
     
-
 
360
    }
-
 
361
 
-
 
362
 
-
 
363
 
-
 
364
     public function editAction(){
-
 
365
 
-
 
366
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
367
        $currentUser = $currentUserPlugin->getUser();
-
 
368
        $currentCompany = $currentUserPlugin->getCompany();
669
                    return new JsonModel([
369
        $request = $this->getRequest();
-
 
370
        $uuid = $this->params()->fromRoute('id');
670
                        'success' => false,
371
 
671
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
372
        
-
 
373
        if(!$uuid) {
-
 
374
            $data = [
-
 
375
                'success'   => false,
672
                    ]);
376
                'data'   => 'ERROR_INVALID_PARAMETER'
-
 
377
            ];
-
 
378
            
-
 
379
            return new JsonModel($data);
-
 
380
        }
673
                }
381
 
674
 
382
        $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
-
 
383
        $objectives = $planningObjectivesAndGoalsObjectivesMapper->fetchOneByUuid($uuid);
-
 
384
       
675
            } else {
385
        if (!$objectives) {
676
                return new JsonModel([
386
            $data = [
677
                    'success' => false,
387
                'success' => false,
-
 
388
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
389
            ];
-
 
390
 
-
 
391
            return new JsonModel($data);
-
 
392
        }
-
 
393
       
678
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
Línea -... Línea 679...
-
 
679
                ]);
-
 
680
            }
-
 
681
          
-
 
682
 
-
 
683
            
-
 
684
            
394
        if ($objectives->company_id != $currentCompany->id) {
685
        } else {
-
 
686
            
-
 
687
            return new JsonModel([
-
 
688
                'success' => false,
-
 
689
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
690
            ]);
-
 
691
        }
-
 
692
    }
-
 
693
    
-
 
694
    /*
-
 
695
    public function rejectAction()
-
 
696
    {
-
 
697
        $flashMessenger = $this->plugin('FlashMessenger');
-
 
698
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
699
        $currentUser = $currentUserPlugin->getUser();
-
 
700
        
Línea -... Línea 701...
-
 
701
        $request = $this->getRequest();
-
 
702
        if($request->isPost()) {
-
 
703
            $id = $this->params()->fromRoute('id');
-
 
704
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
-
 
705
            $flash = $flash === 'true'? true: false;
-
 
706
            
-
 
707
            if(!$id) {
-
 
708
                return new JsonModel([
-
 
709
                    'success' => false,
-
 
710
                    'data' => 'ERROR_INVALID_PARAMETER'
-
 
711
                ]);
-
 
712
                
-
 
713
            }
-
 
714
            
-
 
715
            $groupMapper = GroupMapper::getInstance($this->adapter);
395
            return new JsonModel([
716
            $group = $groupMapper->fetchOneByUuid($id);
-
 
717
            
-
 
718
            if(!$group) {
-
 
719
                return new JsonModel([
396
                'success' => false,
720
                    'success' => false,
-
 
721
                    'data' => 'ERROR_GROUP_NOT_FOUND'
-
 
722
                ]);
-
 
723
            }
-
 
724
            
-
 
725
            if($group->status != Group::STATUS_ACTIVE) {
397
                'data' => 'ERROR_UNAUTHORIZED'
726
                return new JsonModel([
-
 
727
                    'success' => false,
398
            ]);
728
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
-
 
729
                ]);
399
        } 
730
            }
-
 
731
            
-
 
732
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
733
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
734
            if($groupMember) {
400
 
735
                
-
 
736
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
-
 
737
                    
401
        if($request->isPost()) {
738
                    $groupMember->status = GroupMember::STATUS_CANCELLED;
Línea -... Línea 739...
-
 
739
                    if($groupMemberMapper->update($groupMember)) {
402
            $form = new  HighPerformanceTeamsGroupForm();
740
                        if($flash) {
403
            $dataPost = $request->getPost()->toArray();
741
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_REJECTED');
404
            $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroup::STATUS_INACTIVE;
742
                            
405
            $form->setData($dataPost);
743
                            return new JsonModel([
406
            
744
                                'success' => true,
407
            if($form->isValid()) {
-
 
408
                $dataPost = (array) $form->getData();
-
 
Línea 409... Línea -...
409
                
-
 
410
                $hydrator = new ObjectPropertyHydrator();
-
 
411
                $hydrator->hydrate($dataPost, $objectives);
-
 
412
                $result = $planningObjectivesAndGoalsObjectivesMapper->update($objectives);
-
 
Línea 413... Línea -...
413
                
-
 
-
 
745
                                'data' =>  [
-
 
746
                                    'message' => 'LABEL_GROUP_REQUEST_CANCELLED',
414
                if($result) {
747
                                    'reload' => true
-
 
748
                                ]
415
                    $this->logger->info('Se actualizo el objetivo ' . $objectives->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
749
                            ]);
416
                    
750
                            
417
                    $data = [
751
                        } else {
418
                        'success' => true,
752
                            return new JsonModel([
419
                        'data' => 'LABEL_RECORD_UPDATED'
-
 
420
                    ];
-
 
421
                } else {
753
                                'success' => true,
422
                    $data = [
-
 
423
                        'success'   => false,
-
 
424
                        'data'      => $planningObjectivesAndGoalsObjectivesMapper->getError()
-
 
425
                    ];
754
                                'data' =>  'LABEL_GROUP_REQUEST_CANCELLED'
Línea 426... Línea -...
426
                }
-
 
427
                
-
 
428
                return new JsonModel($data);
-
 
429
                
755
                            ]);
-
 
756
                        }
-
 
757
                        
430
            } else {
758
                        
431
                $messages = [];
-
 
432
                $form_messages = (array) $form->getMessages();
759
                        
433
                foreach($form_messages  as $fieldname => $field_messages)
-
 
434
                {
-
 
435
                    $messages[$fieldname] = array_values($field_messages);
-
 
Línea -... Línea 760...
-
 
760
                    } else {
-
 
761
                        return new JsonModel([
-
 
762
                            'success' => false,
-
 
763
                            'data' => $groupMemberMapper->getError()
-
 
764
                        ]);
436
                }
765
                    }
437
                
766
                    
438
                return new JsonModel([
767
                    
439
                    'success'   => false,
768
                } else {
440
                    'data'   => $messages
769
                    return new JsonModel([
441
                ]);
770
                        'success' => false,
442
            }
771
                        'data' => 'ERROR_GROUP_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL'
443
        }else if ($request->isGet()) {
-
 
444
            $hydrator = new ObjectPropertyHydrator();
772
                    ]);
445
            
-
 
446
            $data = [
-
 
447
                'success' => true,
773
                }
448
                'data' => $hydrator->extract($objectives)
774
                
449
            ];
775
            } else {
450
            
776
                return new JsonModel([
451
            return new JsonModel($data);
777
                    'success' => false,
452
        } else {
778
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
453
            $data = [
779
                ]);
454
                'success' => false,
780
            }
455
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
781
            
456
            ];
-
 
457
            
-
 
458
            return new JsonModel($data);
782
            
459
        }
783
            
460
        
784
            
461
        return new JsonModel($data);
785
        } else {
462
                
786
            
463
    }
787
            return new JsonModel([
464
 
788
                'success' => false,
465
 
789
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
466
 
790
            ]);
-
 
791
        }
-
 
792
    }
467
 
793
 
468
    public function deleteAction(){
794
    public function acceptAction()
-
 
795
    {
469
        $currentUserPlugin = $this->plugin('currentUserPlugin');
796
        $flashMessenger = $this->plugin('FlashMessenger');
-
 
797
        $currentUserPlugin = $this->plugin('currentUserPlugin');
470
        $currentCompany = $currentUserPlugin->getCompany();
798
        $currentUser = $currentUserPlugin->getUser();
471
        $currentUser = $currentUserPlugin->getUser();
799
        
472
 
800
        $request = $this->getRequest();
473
        $request = $this->getRequest();
801
        if($request->isPost()) {
-
 
802
            $id = $this->params()->fromRoute('id');
-
 
803
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
-
 
804
            $flash = $flash === 'true'? true: false;
-
 
805
            
-
 
806
            if(!$id) {
-
 
807
                return new JsonModel([
-
 
808
                    'success' => false,
-
 
809
                    'data' => 'ERROR_INVALID_PARAMETER'
-
 
810
                ]);
-
 
811
                
-
 
812
            }
-
 
813
            
474
        $uuid = $this->params()->fromRoute('id');
814
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
815
            $group = $groupMapper->fetchOneByUuid($id);
-
 
816
            
-
 
817
            if(!$group) {
-
 
818
                return new JsonModel([
-
 
819
                    'success' => false,
-
 
820
                    'data' => 'ERROR_GROUP_NOT_FOUND'
-
 
821
                ]);
-
 
822
            }
-
 
823
            
475
        
824
            if($group->status != Group::STATUS_ACTIVE) {
476
 
825
                return new JsonModel([
-
 
826
                    'success' => false,
477
        if (!$uuid) {
827
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
-
 
828
                ]);
478
            $data = [
829
            }
479
                'success' => false,
-
 
480
                'data' => 'ERROR_INVALID_PARAMETER'
830
            
481
            ];
831
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
482
 
832
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
483
            return new JsonModel($data);
833
            if($groupMember) {
484
        }
-
 
485
 
-
 
486
       
834
                
487
 
835
                if($groupMember->status == GroupMember::STATUS_ADDED_BY_ADMIN) {
-
 
836
                    
488
        $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
837
                    $groupMember->status = GroupMember::STATUS_ACCEPTED;
489
        $objectives = $planningObjectivesAndGoalsObjectivesMapper->fetchOneByUuid($uuid);
838
                    if($groupMemberMapper->update($groupMember)) {
490
       
839
                        if($flash) {
491
        if (!$objectives) {
840
                            $flashMessenger->addSuccessMessage('LABEL_GROUP_AUTO_JOIN_SUCCESS');
492
            $data = [
-
 
493
                'success' => false,
-
 
494
                'data' => 'ERROR_RECORD_NOT_FOUND'
841
                            
495
            ];
-
 
496
 
-
 
497
            return new JsonModel($data);
842
                            return new JsonModel([
-
 
843
                                'success' => true,
Línea 498... Línea -...
498
        }
-
 
499
       
-
 
500
        if ($objectives->company_id != $currentCompany->id) {
844
                                'data' => [
-
 
845
                                    'message' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS',
-
 
846
                                    'reload' => true
501
            return new JsonModel([
847
                                ]    
502
                'success' => false,
848
                            ]);
503
                'data' => 'ERROR_UNAUTHORIZED'
-
 
504
            ]);
849
                        } else {
505
        } 
850
                            return new JsonModel([
-
 
851
                                'success' => true,
506
    
852
                                'data' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS'
-
 
853
                            ]);
-
 
854
                        }
-
 
855
                        
-
 
856
                    } else {
-
 
857
                        return new JsonModel([
-
 
858
                            'success' => false,
-
 
859
                            'data' => $groupMemberMapper->getError()
-
 
860
                        ]);
-
 
861
                    }
-
 
862
                } else {
-
 
863
                    return new JsonModel([
-
 
864
                        'success' => false,
-
 
865
                        'data' => 'ERROR_GROUP_YOU_HAVE_NOT_INVITED_THIS_GROUP'
-
 
866
                    ]);
-
 
867
                }
-
 
868
                        
-
 
869
            } else {
-
 
870
                return new JsonModel([
-
 
871
                    'success' => false,
-
 
872
                    'data' => 'ERROR_GROUP_YOU_NOT_MEMBER'
-
 
873
                ]);
-
 
874
            }
-
 
875
        } else {
-
 
876
            
-
 
877
            return new JsonModel([
-
 
878
                'success' => false,
-
 
879
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
507
        if ($request->isPost()) {
880
            ]);
-
 
881
        }
-
 
882
    }
-
 
883
    */
-
 
884
    
-
 
885
    public function requestAction()
-
 
886
    {
-
 
887
        $flashMessenger = $this->plugin('FlashMessenger');
-
 
888
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
889
        $currentUser = $currentUserPlugin->getUser();
-
 
890
        
-
 
891
        $request = $this->getRequest();
-
 
892
        if($request->isPost()) {
-
 
893
            $id = $this->params()->fromRoute('id');
-
 
894
            $flash =  filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);
-
 
895
            $flash = $flash === 'true'? true: false;
Línea 508... Línea 896...
508
 
896
            
-
 
897
            if(!$id) {
-
 
898
                return new JsonModel([
509
 
899
                    'success' => false,
510
            $result = $planningObjectivesAndGoalsObjectivesMapper->delete($objectives->id);
900
                    'data' => 'ERROR_INVALID_PARAMETER'
511
            if ($result) {
901
                ]);
-
 
902
                
512
                $this->logger->info('Se borro el objetivo con el titulo ' . $objectives->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
903
            }
-
 
904
            
-
 
905
            $groupMapper = GroupMapper::getInstance($this->adapter);
-
 
906
            $group = $groupMapper->fetchOneByUuid($id);
-
 
907
            
-
 
908
            if(!$group) {
-
 
909
                return new JsonModel([
-
 
910
                    'success' => false,
-
 
911
                    'data' => 'ERROR_GROUP_NOT_FOUND'
-
 
912
                ]);
-
 
913
            }
-
 
914
            
-
 
915
            if($group->status != Group::STATUS_ACTIVE) {
-
 
916
                return new JsonModel([
-
 
917
                    'success' => false,
-
 
918
                    'data' => 'ERROR_GROUP_IS_NOT_ACTIVE'
Línea -... Línea 919...
-
 
919
                ]);
513
 
920
            }
-
 
921
            
-
 
922
            $groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);
-
 
923
            $groupMember = $groupMemberMapper->fetchOneByGroupIdAndUserId($group->id, $currentUser->id);
-
 
924
            if($groupMember) {
-
 
925
                if($groupMember->status == GroupMember::STATUS_ACCEPTED || $groupMember->status == GroupMember::STATUS_AUTO_JOIN) {
-
 
926
                    return new JsonModel([
-
 
927
                        'success' => false,
-
 
928
                        'data' => 'ERROR_GROUP_YOU_ARE_MEMBER' 
-
 
929
                    ]);
-
 
930
                }
-
 
931
                if($groupMember->status == GroupMember::STATUS_REJECTED) {
514
                $data = [
932
                    return new JsonModel([
-
 
933
                        'success' => false,
-
 
934
                        'data' => 'ERROR_GROUP_YOUR_REQUEST_WAS_PREVIOUSLY_REJECTED'
-
 
935
                    ]);
-
 
936
                }
-
 
937
 
-
 
938
            }
-
 
939
            
-
 
940
            if($group->privacy == Group::PRIVACY_IS_PRIVATE || $group->accessibility == Group::ACCESSIBILITY_ADMIN_WILL_ADD) {
-
 
941
                return new JsonModel([
-
 
942
                    'success' => false,
-
 
943
                    'data' => 'ERROR_GROUP_ACCESS_ONLY_BY_ADMIN_INVITATION'
-
 
944
                ]);
-
 
945
            }
-
 
946
            
-
 
947
            
-
 
948
            if($groupMember) {
-
 
949
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
-
 
950
                    $groupMember->status    = GroupMember::STATUS_AUTO_JOIN;
-
 
951
                    $groupMember->joined_on = new Expression('NOW()');
-
 
952
                }
-
 
953
                
-
 
954
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
-
 
955
                    $groupMember->status                = GroupMember::STATUS_JOINING_REQUESTED;
-
 
956
                    $groupMember->joining_request_on    = new Expression('NOW()');
-
 
957
                }
-
 
958
                
-
 
959
                $result = $groupMemberMapper->update($groupMember);
-
 
960
                
-
 
961
 
-
 
962
            } else {
-
 
963
                $groupMember = new GroupMember();
-
 
964
                $groupMember->group_id  = $group->id;
-
 
965
                $groupMember->user_id   = $currentUser->id;
-
 
966
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
-
 
967
                    $groupMember->status    = GroupMember::STATUS_AUTO_JOIN;
-
 
968
                }
-
 
969
                
-
 
970
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
-
 
971
                    $groupMember->status    = GroupMember::STATUS_JOINING_REQUESTED;
-
 
972
                }
-
 
973
                
-
 
974
                $result = $groupMemberMapper->insert($groupMember);
-
 
975
            }
-
 
976
            
-
 
977
            if($result) {
-
 
978
                
-
 
979
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
980
                $userOwnerGroup = $userMapper->fetchOne($group->user_id);
-
 
981
                
-
 
982
                $notification = new Notification();
-
 
983
                $notification->type     = Notification::TYPE_RECEIVE_REQUEST_JOIN_MY_GROUP;
-
 
984
                $notification->read     = Notification::NO;
-
 
985
                $notification->user_id  = $userOwnerGroup->id;
-
 
986
                $notification->group_id = $group->id;
-
 
987
                $notification->message  = 'LABEL_NOTIFICATION_RECEIVE_REQUEST_JOIN_MY_GROUP';
-
 
988
                $notification->url      = $this->url()->fromRoute('high-performance-teams/view', ['id' => $group->uuid]);
-
 
989
                
-
 
990
                $notificationMapper = NotificationMapper::getInstance($this->adapter);
-
 
991
                $notificationMapper->insert($notification);
-
 
992
                
-
 
993
                
-
 
994
                
-
 
995
                $userNotificationSettingMapper = UserNotificationSettingMapper::getInstance($this->adapter);
-
 
996
                $userNotificationSetting = $userNotificationSettingMapper->fetchOne($group->user_id);
-
 
997
                
-
 
998
                
-
 
999
                if($userNotificationSetting->receive_request_join_my_group) {
-
 
1000
                    $emailTemplateMapper = EmailTemplateMapper::getInstance($this->adapter);
-
 
1001
                    $emailTemplate = $emailTemplateMapper->fetchOne(EmailTemplate::ID_RECEIVE_REQUEST_JOIN_MY_GROUP);
-
 
1002
                    if($emailTemplate) {
-
 
1003
                        $arrayCont = [
-
 
1004
                            'firstname'             => $currentUser->first_name,
-
 
1005
                            'lastname'              => $currentUser->last_name,
-
 
1006
                            'other_user_firstname'  => $userOwnerGroup->first_name,
-
 
1007
                            'other_user_lastname'   => $userOwnerGroup->last_name,
-
 
1008
                            'company_name'          => '',
-
 
1009
                            'group_name'            => $group->name,
-
 
1010
                            'content'               => '',
-
 
1011
                            'code'                  => '',
-
 
1012
                            'link'                  => $this->url()->fromRoute('high-performance-teams/view', ['id' => $group->uuid], ['force_canonical' => true])
-
 
1013
                        ];
Línea -... Línea 1014...
-
 
1014
                        
-
 
1015
                        $email = new QueueEmail($this->adapter);
515
                    'success' => true,
1016
                        $email->processEmailTemplate($emailTemplate, $arrayCont, $userOwnerGroup->email, trim($userOwnerGroup->first_name . ' ' . $userOwnerGroup->last_name));
-
 
1017
                    }
516
                    'data' => 'LABEL_RECORD_DELETED'
1018
                }
-
 
1019
                
-
 
1020
                if($group->accessibility == Group::ACCESSIBILITY_AUTO_JOIN) {
-
 
1021
                    if($flash) {
-
 
1022
                        $flashMessenger->addSuccessMessage('LABEL_GROUP_AUTO_JOIN_SUCCESS');
-
 
1023
                        
Línea 517... Línea -...
517
                ];
-
 
518
            } else {
-
 
519
 
-
 
520
                $data = [
-
 
521
                    'success' => false,
-
 
522
                    'data' => $planningObjectivesAndGoalsObjectivesMapper->getError()
-
 
523
                ];
-
 
524
 
-
 
525
                return new JsonModel($data);
-
 
526
            }
-
 
527
        } else {
1024
                        return new JsonModel([
528
            $data = [
1025
                            'success' => true,
529
                'success' => false,
1026
                            'data' => [
530
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1027
                                'message' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS',
531
            ];
1028
                                'reload' => true
532
 
-
 
533
            return new JsonModel($data);
-
 
Línea -... Línea 1029...
-
 
1029
                            ]
-
 
1030
                        ]);
-
 
1031
                    } else {
-
 
1032
                        return new JsonModel([
-
 
1033
                            'success' => true,
-
 
1034
                            'data' => 'LABEL_GROUP_AUTO_JOIN_SUCCESS'
534
        }
1035
                        ]);
-
 
1036
                    }
-
 
1037
                }
-
 
1038
                if($group->accessibility == Group::ACCESSIBILITY_REQUEST_TO_JOIN) {
535
 
1039
                    if($flash) {
536
        return new JsonModel($data);
1040
                        $flashMessenger->addSuccessMessage('LABEL_GROUP_REQUEST_SUCCESS');
-
 
1041
                        
-
 
1042
                        return new JsonModel([
-
 
1043
                            'success' => true,
-
 
1044
                            'data' => [
537
    }
1045
                                'message' => 'LABEL_GROUP_REQUEST_SUCCESS',
-
 
1046
                                'reload' => true
-
 
1047
                            ]    
538
    
1048
                        ]);
-
 
1049
                    } else {
Línea 539... Línea 1050...
539
    
1050
                        return new JsonModel([
Línea 540... Línea -...
540
 
-
 
541
    public function reportAction() {
1051
                            'success' => true,
542
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1052
                            'data' => 'LABEL_GROUP_REQUEST_SUCCESS'
-
 
1053
                        ]);
543
        $currentUser = $currentUserPlugin->getUser();
1054
                    }
544
        $currentCompany = $currentUserPlugin->getCompany();
-
 
545
 
1055
                }
546
        $request = $this->getRequest();
-
 
547
        $uuid = $this->params()->fromRoute('id');
1056
                
548
 
-
 
-
 
1057
 
549
 
1058
                
-
 
1059
            } else {
-
 
1060
                return new JsonModel([
-
 
1061
                    'success' => false,
-
 
1062
                    'data' => $groupMapper->getError()
-
 
1063
                ]);
-
 
1064
            }
-
 
1065
            
Línea -... Línea 1066...
-
 
1066
            
Línea 550... Línea 1067...
550
        if (!$uuid) {
1067
        } else {
-
 
1068
        
-
 
1069
            return new JsonModel([
-
 
1070
                'success' => false,
-
 
1071
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
1072
            ]);
-
 
1073
        }
-
 
1074
        
-
 
1075
    }
-
 
1076
    
-
 
1077
    /**
-
 
1078
     *
-
 
1079
     * Generación del listado de perfiles
-
 
1080
     * {@inheritDoc}
-
 
1081
     * @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()
-
 
1082
     */
-
 
1083
    public function joinedGroupsAction()
-
 
1084
    {
551
            $data = [
1085
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
1086
        $currentUser = $currentUserPlugin->getUser();
552
                'success' => false,
1087
        
-
 
1088
        $request = $this->getRequest();
-
 
1089
        if($request->isGet()) {
-
 
1090
            
-
 
1091
            
-
 
1092
            $headers  = $request->getHeaders();
-
 
1093
            $isJson = false;
-
 
1094
            if($headers->has('Accept')) {
-
 
1095
                $accept = $headers->get('Accept');
-
 
1096
                
-
 
1097
                $prioritized = $accept->getPrioritized();
-
 
1098
                
-
 
1099
                foreach($prioritized as $key => $value) {
-
 
1100
                    $raw = trim($value->getRaw());
-
 
1101
                    
-
 
1102
                    if(!$isJson) {
-
 
1103
                        $isJson = strpos($raw, 'json');
-
 
1104
                    }
-
 
1105
                    
-
 
1106
                }
-
 
1107
            }
-
 
1108
            
-
 
1109
            if($isJson) {
-
 
1110
                $values = [
-
 
1111
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
-
 
1112
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
-
 
1113
                ];
-
 
1114
                
-
 
1115
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
553
                'data' => 'ERROR_INVALID_PARAMETER'
1116
 
554
            ];
-
 
555
 
-
 
556
            return new JsonModel($data);
-
 
557
        }
-
 
558
 
-
 
559
        $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
-
 
560
        $recordsObjectives = $planningObjectivesAndGoalsObjectivesMapper->fetchOneByUuid($uuid);
-
 
561
        
-
 
562
        if (!$recordsObjectives) {
-
 
563
            $data = [
-
 
Línea 564... Línea -...
564
                'success' => false,
-
 
565
                'data' => 'Objetivo ERROR_RECORD_NOT_FOUND'
-
 
566
            ];
-
 
567
 
-
 
568
            return new JsonModel($data);
-
 
569
        }
-
 
570
       
-
 
571
        if ($recordsObjectives->company_id != $currentCompany->id) {
1117
                
572
            return new JsonModel([
1118
                $queryMapper = QueryMapper::getInstance($this->adapter);
573
                'success' => false,
1119
                
574
                'data' => 'ERROR_UNAUTHORIZED'
1120
                $select = $queryMapper->getSql()->select();
575
            ]);
1121
                $select->columns(['id', 'uuid', 'name', 'privacy',  'image']);
576
        } 
-
 
577
        $planningObjectivesAndGoalsGoalsMapper = PlanningObjectivesAndGoalsGoalsMapper::getInstance($this->adapter);
-
 
578
        $recordsGoals = $planningObjectivesAndGoalsGoalsMapper->fetchAll($recordsObjectives->id);
1122
                $select->from(['g' => GroupMapper::_TABLE]);
579
        
-
 
580
        $planningObjectivesAndGoalsTaskMapper = PlanningObjectivesAndGoalsTaskMapper::getInstance($this->adapter);
-
 
581
        $userMapper = UserMapper::getInstance($this->adapter);
1123
                $select->join(['gm' => GroupMemberMapper::_TABLE], 'gm.group_id = g.id', []);
-
 
1124
                $select->where->equalTo('g.status', Group::STATUS_ACTIVE);
582
        $PlanningObjectivesAndGoalsTaskMemberMapper = PlanningObjectivesAndGoalsTaskMembersMapper::getInstance($this->adapter);
1125
                $select->where->in('gm.status', [ GroupMember::STATUS_ACCEPTED, GroupMember::STATUS_AUTO_JOIN]);
-
 
1126
                $select->where->equalTo('gm.user_id', $currentUser->id);
583
 
1127
                $select->where->notEqualTo('g.user_id', $currentUser->id);
584
            foreach($recordsGoals as $record2){
1128
                   
585
                
-
 
586
                $recordsTask = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
-
 
587
                
-
 
588
    
-
 
589
                foreach($recordsTask as $record3){
-
 
590
                    $recordsTaskMembers =  $PlanningObjectivesAndGoalsTaskMemberMapper->fetchAll($record3->id);
-
 
591
                    $usersName=[];
-
 
592
                    foreach($recordsTaskMembers as $record4){
-
 
593
                        $datosUser = $userMapper->fetchOne($record4->user_id);
-
 
594
                        $usersName[$record4->id]=$datosUser->first_name.' '.$datosUser->last_name;
-
 
595
                    }
-
 
596
                    $record3->who=$usersName;
-
 
597
                }
-
 
598
                
-
 
599
 
-
 
600
               
-
 
601
 
-
 
602
                $record2->task = $recordsTask;
-
 
603
            }
-
 
604
           $items=[
-
 
605
            'objetives' => [
-
 
Línea 606... Línea -...
606
                'title'=>$recordsObjectives->title,
-
 
607
                'description' =>$recordsObjectives->description,
1129
                if($search) {
608
                'date'=>$recordsObjectives->date,
-
 
609
                'status'=>$recordsObjectives->status,
1130
                    $select->where->like('name', '%' . $search . '%');
610
                'goals'=>$recordsGoals
1131
                }
611
            ]
-
 
-
 
1132
                $select->order('name ASC');
612
            ];
1133
                
613
           
1134
                $records = $queryMapper->fetchAll($select);
614
            
1135
                
615
      
-
 
616
        
-
 
617
        
-
 
618
        if ($request->isGet()) {
-
 
619
 
-
 
620
 
-
 
621
            return $this->renderPdf($currentCompany,$items);
1136
                $items = [];
Línea 622... Línea 1137...
622
        } else {
1137
                foreach($records as $record)
-
 
1138
                {
-
 
1139
                    
-
 
1140
                    $item = [
Línea 623... Línea -...
623
            $data = [
-
 
624
                'success' => false,
-
 
625
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
626
            ];
1141
                        'name' => $record['name'],
627
 
-
 
628
            return new JsonModel($data);
-
 
629
        }
-
 
630
 
-
 
631
        return new JsonModel($data);
1142
                        'privacy' => $values[$record['privacy']],
632
    }
1143
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image'] ]),
Línea 633... Línea -...
633
    public function reportallAction() {
-
 
634
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1144
                        'link_view' => $this->url()->fromRoute('high-performance-teams/view', ['id' => $record['uuid'] ]),
635
        $currentUser = $currentUserPlugin->getUser();
1145
                        'link_leave' => $this->url()->fromRoute('high-performance-teams/leave', ['id' => $record['uuid'] ]),
-
 
1146
                    ];
636
        $currentCompany = $currentUserPlugin->getCompany();
1147
                    
-
 
1148
                    array_push($items, $item);
-
 
1149
                }
-
 
1150
                
-
 
1151
                
637
 
1152
                
638
        $request = $this->getRequest();
1153
                $response = [
639
 
1154
                    'success' => true,
-
 
1155
                    'data' => $items
-
 
1156
                ];
-
 
1157
                
640
 
1158
                return new JsonModel($response);
-
 
1159
                
641
      
1160
                
-
 
1161
            } else {
642
 
1162
                    $this->layout()->setTemplate('layout/layout-backend');
-
 
1163
                $viewModel = new ViewModel();
-
 
1164
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/joined-groups.phtml');
-
 
1165
                return $viewModel ;
-
 
1166
            }
-
 
1167
            
-
 
1168
        } else {
643
        $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
1169
            return new JsonModel([
644
        $recordsObjectives = $planningObjectivesAndGoalsObjectivesMapper->fetchAll($currentCompany->id);
1170
                'success' => false,
-
 
1171
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
645
        
1172
            ]);
646
        if (!$recordsObjectives) {
1173
        }
-
 
1174
    }
-
 
1175
    
-
 
1176
    public function invitationsReceivedAction()
-
 
1177
    {
647
            $data = [
1178
        $currentUserPlugin = $this->plugin('currentUserPlugin');
648
                'success' => false,
1179
        $currentUser = $currentUserPlugin->getUser();
649
                'data' => 'Objetivo ERROR_RECORD_NOT_FOUND'
1180
        
-
 
1181
        $request = $this->getRequest();
-
 
1182
        if($request->isGet()) {
650
            ];
1183
            
651
 
1184
            
-
 
1185
            $headers  = $request->getHeaders();
-
 
1186
            $isJson = false;
-
 
1187
            if($headers->has('Accept')) {
-
 
1188
                $accept = $headers->get('Accept');
-
 
1189
                
652
            return new JsonModel($data);
1190
                $prioritized = $accept->getPrioritized();
653
        }
1191
                
-
 
1192
                foreach($prioritized as $key => $value) {
654
       
1193
                    $raw = trim($value->getRaw());
-
 
1194
                    
-
 
1195
                    if(!$isJson) {
-
 
1196
                        $isJson = strpos($raw, 'json');
-
 
1197
                    }
-
 
1198
                    
655
       
1199
                }
656
        $planningObjectivesAndGoalsGoalsMapper = PlanningObjectivesAndGoalsGoalsMapper::getInstance($this->adapter);
1200
            }
657
        
1201
            
658
        $planningObjectivesAndGoalsTaskMapper = PlanningObjectivesAndGoalsTaskMapper::getInstance($this->adapter);
1202
            if($isJson) {
659
        $items;
1203
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
660
        $contador=0;
-
 
661
        foreach($recordsObjectives as $record){
-
 
662
 
1204
                
663
            if ($record->company_id != $currentCompany->id) {
-
 
664
                return new JsonModel([
-
 
665
                    'success' => false,
1205
                $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
1206
                
666
                    'data' => 'ERROR_UNAUTHORIZED'
1207
                $select = $queryMapper->getSql()->select();
-
 
1208
                $select->columns([ 'uuid', 'name', 'image']);
667
                ]);
1209
                $select->from(['g' => GroupMapper::_TABLE]);
668
            } 
1210
                $select->join(['gm' => GroupMemberMapper::_TABLE], 'gm.group_id  = g.id', []);
669
            $userMapper = UserMapper::getInstance($this->adapter);
-
 
670
            $PlanningObjectivesAndGoalsTaskMemberMapper = PlanningObjectivesAndGoalsTaskMembersMapper::getInstance($this->adapter);
-
 
671
            $recordsGoals = $planningObjectivesAndGoalsGoalsMapper->fetchAll($record->id);
-
 
672
 
-
 
673
                foreach($recordsGoals as $record2){
-
 
674
                
-
 
675
                    $recordsTask = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
-
 
676
                    
-
 
677
        
-
 
Línea 678... Línea -...
678
                    foreach($recordsTask as $record3){
-
 
679
                        $recordsTaskMembers =  $PlanningObjectivesAndGoalsTaskMemberMapper->fetchAll($record3->id);
-
 
680
                        $usersName=[];
-
 
681
                        foreach($recordsTaskMembers as $record4){
-
 
682
                            $datosUser = $userMapper->fetchOne($record4->user_id);
-
 
683
                            $usersName[$record4->id]=$datosUser->first_name.' '.$datosUser->last_name;
-
 
684
                        }
1211
                $select->where->equalTo('gm.user_id', $currentUser->id);
685
                        $record3->who=$usersName;
-
 
686
                    }
-
 
687
                    
-
 
688
                    $record2->task = $recordsTask;
-
 
689
                }
-
 
690
         /*   $item=[
-
 
691
                $contador => [
-
 
692
                    'title'=>$record->title,
-
 
693
                    'description' =>$record->description,
1212
                $select->where->equalTo('gm.status', GroupMember::STATUS_ADDED_BY_ADMIN);
694
                    'date'=>$record->date,
1213
                $select->where->equalTo('g.status', Group::STATUS_ACTIVE);
695
                    'status'=>$record->status,
-
 
696
                    'goals'=>$recordsGoals
-
 
697
                ]
-
 
698
            ];
-
 
699
            array_push($items, $item);
-
 
700
            $contador++;*/
-
 
701
        $record->goals=$recordsGoals;
-
 
Línea -... Línea 1214...
-
 
1214
                
-
 
1215
                if($search) {
-
 
1216
                    $select->where->like('g.name', '%' . $search . '%');
-
 
1217
                }
-
 
1218
                $select->order('name ASC');
-
 
1219
                
-
 
1220
                //echo $select2->getSqlString($this->adapter->platform); exit;
702
        } 
1221
                
-
 
1222
                $records = $queryMapper->fetchAll($select);
-
 
1223
                
-
 
1224
                $items = [];
-
 
1225
                foreach($records as $record)
-
 
1226
                {
Línea 703... Línea -...
703
      
-
 
704
        
-
 
705
        
1227
                    $item = [
706
        if ($request->isGet()) {
1228
                        'name' => $record['name'],
-
 
1229
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image']]),
707
 
1230
                        'link_view' => $this->url()->fromRoute('high-performance-teams/view', ['id' => $record['uuid'] ]),
-
 
1231
                        'link_accept' => $this->url()->fromRoute('high-performance-teams/accept', ['id' => $record['uuid'] ]),
-
 
1232
                        'link_reject' => $this->url()->fromRoute('high-performance-teams/reject', ['id' => $record['uuid'] ]),
-
 
1233
                    ];
-
 
1234
                    
-
 
1235
                    
-
 
1236
                    array_push($items, $item);
708
 
1237
                }
709
            return $this->renderPdf($currentCompany,$recordsObjectives,2);
1238
                
710
        } else {
1239
                $response = [
-
 
1240
                    'success' => true,
-
 
1241
                    'data' => $items
-
 
1242
                ];
711
            $data = [
1243
                
-
 
1244
                return new JsonModel($response);
-
 
1245
                
712
                'success' => false,
1246
                
-
 
1247
            } else {
713
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1248
                    $this->layout()->setTemplate('layout/layout-backend');
-
 
1249
                $viewModel = new ViewModel();
-
 
1250
                $viewModel->setTemplate('leaders-linked/high-performance-teams-group/invitations-received.phtml');
-
 
1251
                return $viewModel ;
-
 
1252
            }
-
 
1253
            
-
 
1254
        } else {
714
            ];
1255
            return new JsonModel([
715
 
1256
                'success' => false,
-
 
1257
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
716
            return new JsonModel($data);
1258
            ]);
717
        }
1259
        }
-
 
1260
    }
-
 
1261
    
-
 
1262
    public function requestsSentAction()
718
 
1263
    {
719
        return new JsonModel($data);
1264
        $currentUserPlugin = $this->plugin('currentUserPlugin');
720
    }
1265
        $currentUser = $currentUserPlugin->getUser();
-
 
1266
        
-
 
1267
        $request = $this->getRequest();
721
    public function matrizAction() {
1268
        if($request->isGet()) {
722
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1269
            
-
 
1270
            
-
 
1271
            $headers  = $request->getHeaders();
-
 
1272
            $isJson = false;
723
        $currentUser = $currentUserPlugin->getUser();
1273
            if($headers->has('Accept')) {
-
 
1274
                $accept = $headers->get('Accept');
-
 
1275
                
724
        $currentCompany = $currentUserPlugin->getCompany();
1276
                $prioritized = $accept->getPrioritized();
-
 
1277
                
725
 
1278
                foreach($prioritized as $key => $value) {
-
 
1279
                    $raw = trim($value->getRaw());
-
 
1280
                    
-
 
1281
                    if(!$isJson) {
-
 
1282
                        $isJson = strpos($raw, 'json');
-
 
1283
                    }
726
        $request = $this->getRequest();
1284
                    
727
 
1285
                }
728
 
1286
            }
729
      
1287
            
730
 
1288
            if($isJson) {
731
        $planningObjectivesAndGoalsObjectivesMapper = HighPerformanceTeamsGroupMapper::getInstance($this->adapter);
-
 
732
        $recordsObjectives = $planningObjectivesAndGoalsObjectivesMapper->fetchAll($currentCompany->id);
-
 
733
        
-
 
734
        if (!$recordsObjectives) {
-
 
735
            $data = [
-
 
736
                'success' => false,
-
 
737
                'data' => 'Objetivo ERROR_RECORD_NOT_FOUND'
-
 
738
            ];
-
 
739
 
-
 
740
            return new JsonModel($data);
-
 
741
        }
-
 
742
       
-
 
743
       
-
 
744
        $planningObjectivesAndGoalsGoalsMapper = PlanningObjectivesAndGoalsGoalsMapper::getInstance($this->adapter);
-
 
745
        
-
 
746
        $planningObjectivesAndGoalsTaskMapper = PlanningObjectivesAndGoalsTaskMapper::getInstance($this->adapter);
-
 
747
        $items;
-
 
748
        $contador=0;
-
 
749
        foreach($recordsObjectives as $record){
-
 
750
 
-
 
751
            if ($record->company_id != $currentCompany->id) {
-
 
752
                return new JsonModel([
-
 
753
                    'success' => false,
-
 
754
                    'data' => 'ERROR_UNAUTHORIZED'
-
 
755
                ]);
1289
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
756
            } 
-
 
757
            $recordsGoals = $planningObjectivesAndGoalsGoalsMapper->fetchAll($record->id);
-
 
758
            
-
 
759
                foreach($recordsGoals as $record2){
-
 
760
                    
-
 
761
                    $recordsTask = $planningObjectivesAndGoalsTaskMapper->fetchAll($record2->id);
-
 
762
                    $record2->task = $recordsTask;
-
 
763
                }
-
 
764
         /*   $item=[
-
 
765
                $contador => [
-
 
766
                    'title'=>$record->title,
-
 
767
                    'description' =>$record->description,
-
 
768
                    'date'=>$record->date,
-
 
769
                    'status'=>$record->status,
-
 
770
                    'goals'=>$recordsGoals
-
 
771
                ]
-
 
772
            ];
-
 
773
            array_push($items, $item);
-
 
774
            $contador++;*/
-
 
775
        $record->goals=$recordsGoals;
-
 
776
        } 
1290
                
777
      
-
 
778
        
1291
                
-
 
1292
                
-
 
1293
                $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
1294