Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 129 | Rev 483 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Form\ExtendUserMicrolearningForm;
13
use LeadersLinked\Mapper\QueryMapper;
14
use LeadersLinked\Mapper\UserMapper;
15
use Laminas\Db\Sql\Expression;
16
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleUserMapper;
17
use LeadersLinked\Model\CompanyMicrolearningCapsuleUser;
18
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;
19
use LeadersLinked\Mapper\CompanyMicrolearningUserProgressMapper;
20
use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;
21
use LeadersLinked\Mapper\CompanyMicrolearningUserLogMapper;
22
use Google\Service\Classroom\Student;
23
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserCompanyMapper;
24
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserFunctionMapper;
25
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserGroupMapper;
26
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserInstitutionMapper;
27
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserProgramMapper;
28
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserPartnerMapper;
29
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserSectorMapper;
30
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserStudentTypeMapper;
31
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserMapper;
187 efrain 32
use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;
2 efrain 33
use LeadersLinked\Mapper\DeviceMapper;
34
use LeadersLinked\Model\Application;
129 efrain 35
use LeadersLinked\Mapper\CompanyMicrolearningUserMapper;
36
use LeadersLinked\Model\CompanyMicrolearningExtendUser;
187 efrain 37
use LeadersLinked\Form\TopicCapsuleForm;
38
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleCommentMapper;
39
use Laminas\Hydrator\ArraySerializableHydrator;
40
use Laminas\Db\ResultSet\HydratingResultSet;
41
use Laminas\Paginator\Adapter\DbSelect;
42
use Laminas\Paginator\Paginator;
1 www 43
 
44
 
45
class MicrolearningReportsController extends AbstractActionController
46
{
47
    /**
48
     *
49
     * @var AdapterInterface
50
     */
51
    private $adapter;
52
 
53
 
54
    /**
55
     *
56
     * @var AbstractAdapter
57
     */
58
    private $cache;
59
 
60
    /**
61
     *
62
     * @var  LoggerInterface
63
     */
64
    private $logger;
65
 
66
 
67
    /**
68
     *
69
     * @param AdapterInterface $adapter
70
     * @param AbstractAdapter $cache
71
     * @param LoggerInterface $logger
72
     * @param array $config
73
     */
74
    public function __construct($adapter, $cache , $logger, $config)
75
    {
76
        $this->adapter      = $adapter;
77
        $this->cache        = $cache;
78
        $this->logger       = $logger;
79
        $this->config       = $config;
80
 
81
 
82
    }
83
 
2 efrain 84
 
85
    public function indexAction()
86
    {
87
 
88
        $this->layout()->setTemplate('layout/layout-backend.phtml');
89
        $viewModel = new ViewModel();
90
        $viewModel->setTemplate('leaders-linked/microlearning-reports/index.phtml');
91
        return $viewModel ;
92
    }
93
 
1 www 94
 
95
    public function overviewAction()
96
    {
97
 
98
 
99
        $currentUserPlugin = $this->plugin('currentUserPlugin');
100
        $currentUser = $currentUserPlugin->getUser();
101
        $currentCompany = $currentUserPlugin->getCompany();
102
 
103
 
104
        $request = $this->getRequest();
105
        if($request->isGet()) {
106
            $reportsLastWeek = [];
107
            $reportsCapsuleResume = [];
108
            $reportsStudentsTotal = [];
109
 
110
            $companyMicrolearningExtendUserCompanyMapper = CompanyMicrolearningExtendUserCompanyMapper::getInstance($this->adapter);
111
            $extendCompanies = $companyMicrolearningExtendUserCompanyMapper->fetchAllByCompanyId($currentCompany->id);
112
 
113
            foreach($extendCompanies as $extendCompany)
114
            {
115
                $reportsLastWeek['companies'][$extendCompany->id] = [
116
                    'name' => $extendCompany->name,
117
                    'total' => 0,
118
                    'value' => 0
119
                ] ;
120
 
121
                $reportsCapsuleResume['companies'][$extendCompany->id] = [
122
                    'name' => $extendCompany->name,
123
                    'total' => 0,
124
                    'value' => 0
125
                ] ;
126
 
127
                $reportsStudentsTotal['companies'][$extendCompany->id] = [
128
                    'name' => $extendCompany->name,
129
                    'total' => 0,
130
                ] ;
131
            }
132
 
133
 
134
            $companyMicrolearningExtendUserFunctionMapper = CompanyMicrolearningExtendUserFunctionMapper::getInstance($this->adapter);
135
            $extendFunctions = $companyMicrolearningExtendUserFunctionMapper->fetchAllByCompanyId($currentCompany->id);
136
 
137
            foreach($extendFunctions as $extendFunction)
138
            {
139
                $reportsLastWeek['functions'][$extendFunction->id] = [
140
                    'name' => $extendFunction->name,
141
                    'total' => 0,
142
                    'value' => 0
143
                ] ;
144
 
145
                $reportsCapsuleResume['functions'][$extendFunction->id] = [
146
                    'name' => $extendFunction->name,
147
                    'total' => 0,
148
                    'value' => 0
149
                ] ;
150
 
151
                $reportsStudentsTotal['functions'][$extendFunction->id] = [
152
                    'name' => $extendFunction->name,
153
                    'total' => 0,
154
                ] ;
155
            }
156
 
157
            $companyMicrolearningExtendUserGroupMapper = CompanyMicrolearningExtendUserGroupMapper::getInstance($this->adapter);
158
            $extendGroups = $companyMicrolearningExtendUserGroupMapper->fetchAllByCompanyId($currentCompany->id);
159
 
160
            foreach($extendGroups as $extendGroup)
161
            {
162
                $reportsLastWeek['groups'][$extendGroup->id] = [
163
                    'name' => $extendGroup->name,
164
                    'total' => 0,
165
                    'value' => 0
166
                ];
167
 
168
                $reportsCapsuleResume['groups'][$extendGroup->id] = [
169
                    'name' => $extendFunction->name,
170
                    'total' => 0,
171
                    'value' => 0
172
                ] ;
173
 
174
                $reportsStudentsTotal['groups'][$extendGroup->id] = [
175
                    'name' => $extendGroup->name,
176
                    'total' => 0,
177
                ];
178
 
179
 
180
            }
181
 
182
 
183
            $companyMicrolearningExtendUserInstitutionMapper = CompanyMicrolearningExtendUserInstitutionMapper::getInstance($this->adapter);
184
            $extendInstitutions = $companyMicrolearningExtendUserInstitutionMapper->fetchAllByCompanyId($currentCompany->id);
185
 
186
            foreach($extendInstitutions as $extendInstitution)
187
            {
188
                $reportsLastWeek['institutions'][$extendInstitution->id] = [
189
                    'name' => $extendInstitution->name,
190
                    'total' => 0,
191
                    'value' => 0
192
                ] ;
193
 
194
                $reportsCapsuleResume['institutions'][$extendInstitution->id] = [
195
                    'name' => $extendInstitution->name,
196
                    'total' => 0,
197
                    'value' => 0
198
                ] ;
199
 
200
                $reportsStudentsTotal['institutions'][$extendInstitution->id] = [
201
                    'name' => $extendInstitution->name,
202
                    'total' => 0,
203
                ] ;
204
            }
205
 
206
 
207
            $companyMicrolearningExtendUserProgramMapper = CompanyMicrolearningExtendUserProgramMapper::getInstance($this->adapter);
208
            $extendPrograms = $companyMicrolearningExtendUserProgramMapper->fetchAllByCompanyId($currentCompany->id);
209
 
210
            foreach($extendPrograms as $extendProgram)
211
            {
212
                $reportsLastWeek['programs'][$extendProgram->id] = [
213
                    'name' => $extendProgram->name,
214
                    'total' => 0,
215
                    'value' => 0
216
                ] ;
217
 
218
                $reportsCapsuleResume['programs'][$extendProgram->id] = [
219
                    'name' => $extendProgram->name,
220
                    'total' => 0,
221
                    'value' => 0
222
                ] ;
223
 
224
                $reportsStudentsTotal['programs'][$extendProgram->id] = [
225
                    'name' => $extendProgram->name,
226
                    'total' => 0,
227
 
228
                ] ;
229
            }
230
 
231
 
232
            $companyMicrolearningExtendUserPartnerMapper = CompanyMicrolearningExtendUserPartnerMapper::getInstance($this->adapter);
233
            $extendPartners = $companyMicrolearningExtendUserPartnerMapper->fetchAllByCompanyId($currentCompany->id);
234
 
235
            foreach($extendPartners as $extendPartner)
236
            {
237
                $reportsLastWeek['partners'][$extendPartner->id] = [
238
                    'name' => $extendPartner->name,
239
                    'total' => 0,
240
                    'value' => 0
241
                ] ;
242
 
243
                $reportsCapsuleResume['partners'][$extendPartner->id] = [
244
                    'name' => $extendPartner->name,
245
                    'total' => 0,
246
                    'value' => 0
247
                ] ;
248
 
249
                $reportsStudentsTotal['partners'][$extendPartner->id] = [
250
                    'name' => $extendPartner->name,
251
                    'total' => 0,
252
                ] ;
253
            }
254
 
255
 
256
            $companyMicrolearningExtendUserSectorMapper = CompanyMicrolearningExtendUserSectorMapper::getInstance($this->adapter);
257
            $extendSectors = $companyMicrolearningExtendUserSectorMapper->fetchAllByCompanyId($currentCompany->id);
258
 
259
            foreach($extendSectors as $extendSector)
260
            {
261
                $reportsLastWeek['sectors'][$extendSector->id] = [
262
                    'name' => $extendSector->name,
263
                    'total' => 0,
264
                    'value' => 0
265
                ] ;
266
 
267
                $reportsCapsuleResume['sectors'][$extendSector->id] = [
268
                    'name' => $extendSector->name,
269
                    'total' => 0,
270
                    'value' => 0
271
                ] ;
272
 
273
                $reportsStudentsTotal['sectors'][$extendSector->id] = [
274
                    'name' => $extendSector->name,
275
                    'total' => 0,
276
                ] ;
277
            }
278
 
279
            $companyMicrolearningExtendUserStudentTypeMapper = CompanyMicrolearningExtendUserStudentTypeMapper::getInstance($this->adapter);
280
            $extendStudentTypes = $companyMicrolearningExtendUserStudentTypeMapper->fetchAllByCompanyId($currentCompany->id);
281
 
282
            foreach($extendStudentTypes as $extendStudentType)
283
            {
284
                $reportsLastWeek['student_types'][$extendStudentType->id] = [
285
                    'name' => $extendStudentType->name,
286
                    'total' => 0,
287
                    'value' => 0
288
                ] ;
289
 
290
                $reportsCapsuleResume['student_types'][$extendStudentType->id] = [
291
                    'name' => $extendStudentType->name,
292
                    'total' => 0,
293
                    'value' => 0
294
                ] ;
295
 
296
                $reportsStudentsTotal['student_types'][$extendStudentType->id] = [
297
                    'name' => $extendStudentType->name,
298
                    'total' => 0,
299
                ] ;
300
            }
301
 
302
            $companyMicrolearningUserProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
303
 
304
            $minLastWeek = date('Y-m-d', strtotime(' -180 days'));
305
            $maxLastWeek = date('Y-m-d');
306
            $companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
307
            $companyUsersLogWithActivityLastWeek = $companyMicrolearningUserLogMapper->fetchAllUserIdsLastWeekByCompanyId($currentCompany->id, $minLastWeek, $maxLastWeek);
308
 
309
            //header('Content-type: text/plain');
310
           // print_r($companyUsersLogWithActivityLastWeek);
311
 
312
 
313
 
314
 
315
            $date = date('Y-m-d');
316
 
317
            $companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
318
            $user_ids = $companyMicrolearningCapsuleUserMapper->fetchAllDistinctUserIdActiveByCompanyIdAndDate($currentCompany->id, $date);
319
 
320
            $studentsTotal = count($user_ids);
321
            $studentsStarted = 0;
322
 
323
 
324
            $userIdsWithAllCapsulesCompleted = [];
325
 
326
 
327
            foreach($user_ids as $user_id)
328
            {
329
                $countSlides = $companyMicrolearningUserProgressMapper->fetchCountAllSlideCompletedByCompanyIdAndUserId($currentCompany->id, $user_id);
330
                if($countSlides) {
331
                    $studentsStarted++;
332
                }
333
 
334
                $incompleted = false;
335
 
336
                $capsuleUsers = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($user_id);
337
                foreach($capsuleUsers as $capsuleUser)
338
                {
339
                    $userProgress = $companyMicrolearningUserProgressMapper->fetchOneByUseridAndCapsuleId($capsuleUser->user_id, $capsuleUser->capsule_id);
340
                    if($userProgress) {
341
                        if(!$userProgress->completed) {
342
                            $incompleted = true;
343
                            break;
344
                        }
345
                    }  else {
346
                        $incompleted = true;
347
                        break;
348
                    }
349
 
350
 
351
 
352
                }
353
 
354
                if(!$incompleted) {
355
                    array_push($userIdsWithAllCapsulesCompleted, $user_id);
356
                }
357
            }
358
 
359
 
360
            $studentsWithoutStarting =  $studentsTotal - $studentsStarted;
361
            $reportsLastWeek['general'] = ['total' => $studentsTotal, 'value' => count($companyUsersLogWithActivityLastWeek) ];
362
 
363
            $reportsCapsuleResume['general'] = ['total' => $studentsTotal, 'value' => count($userIdsWithAllCapsulesCompleted) ];
364
 
365
 
366
            $companyMicrolearningExtendUserMapper = CompanyMicrolearningExtendUserMapper::getInstance($this->adapter);
367
            $records = $companyMicrolearningExtendUserMapper->fetchAllByCompanyId($currentCompany->id);
368
            foreach($records as $record)
369
            {
370
 
371
                if($record->extend_company_id) {
372
                    $reportsLastWeek['companies'][$record->extend_company_id]['total'] += 1;
373
                    $reportsStudentsTotal['companies'][$record->extend_company_id]['total'] += 1;
374
 
375
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
376
                        $reportsLastWeek['companies'][$record->extend_company_id]['value'] += 1;
377
                    }
378
 
379
                    $reportsCapsuleResume['companies'][$record->extend_company_id]['total'] += 1;
380
 
381
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
382
                        $reportsCapsuleResume['companies'][$record->extend_company_id]['value'] += 1;
383
                    }
384
 
385
                }
386
 
387
                if($record->extend_function_id) {
388
                    $reportsLastWeek['functions'][$record->extend_function_id]['total'] += 1;
389
                    $reportsStudentsTotal['functions'][$record->extend_function_id]['total'] += 1;
390
 
391
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
392
                        $reportsLastWeek['functions'][$record->extend_function_id]['value'] += 1;
393
                    }
394
 
395
                    $reportsCapsuleResume['functions'][$record->extend_function_id]['total'] += 1;
396
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
397
                        $reportsCapsuleResume['functions'][$record->extend_function_id]['value'] += 1;
398
                    }
399
                }
400
 
401
                if($record->extend_group_id) {
402
                    $reportsLastWeek['groups'][$record->extend_group_id]['total'] += 1;
403
                    $reportsStudentsTotal['groups'][$record->extend_group_id]['total'] += 1;
404
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
405
                        $reportsLastWeek['groups'][$record->extend_group_id]['value'] += 1;
406
                    }
407
 
408
                    $reportsCapsuleResume['groups'][$record->extend_group_id]['total'] += 1;
409
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
410
                        $reportsCapsuleResume['groups'][$record->extend_group_id]['value'] += 1;
411
                    }
412
                }
413
 
414
                if($record->extend_institution_id) {
415
                    $reportsLastWeek['institutions'][$record->extend_institution_id]['total'] += 1;
416
                    $reportsStudentsTotal['institutions'][$record->extend_institution_id]['total'] += 1;
417
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
418
                        $reportsLastWeek['institutions'][$record->extend_institution_id]['value'] += 1;
419
                    }
420
 
421
                    $reportsCapsuleResume['institutions'][$record->extend_institution_id]['total'] += 1;
422
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
423
                        $reportsCapsuleResume['institutions'][$record->extend_institution_id]['value'] += 1;
424
                    }
425
                }
426
 
427
                if($record->extend_program_id) {
428
                    $reportsLastWeek['programs'][$record->extend_program_id]['total'] += 1;
429
                    $reportsStudentsTotal['programs'][$record->extend_program_id]['total'] += 1;
430
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
431
                        $reportsLastWeek['programs'][$record->extend_program_id]['value'] += 1;
432
                    }
433
 
434
                    $reportsCapsuleResume['programs'][$record->extend_program_id]['total'] += 1;
435
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
436
                        $reportsCapsuleResume['programs'][$record->extend_program_id]['value'] += 1;
437
                    }
438
                }
439
 
440
                if($record->extend_partner_id) {
441
                    $reportsLastWeek['partners'][$record->extend_partner_id]['total'] += 1;
442
                    $reportsStudentsTotal['partners'][$record->extend_partner_id]['total'] += 1;
443
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
444
                        $reportsLastWeek['partners'][$record->extend_partner_id]['value'] += 1;
445
                    }
446
 
447
                    $reportsCapsuleResume['partners'][$record->extend_partner_id]['total'] += 1;
448
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
449
                        $reportsCapsuleResume['partners'][$record->extend_partner_id]['value'] += 1;
450
                    }
451
                }
452
 
453
                if($record->extend_sector_id) {
454
                    $reportsLastWeek['sectors'][$record->extend_sector_id]['total'] += 1;
455
                    $reportsStudentsTotal['sectors'][$record->extend_sector_id]['total'] += 1;
456
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
457
                        $reportsLastWeek['sectors'][$record->extend_sector_id]['value'] += 1;
458
                    }
459
 
460
                    $reportsCapsuleResume['sectors'][$record->extend_sector_id]['total'] += 1;
461
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
462
                        $reportsCapsuleResume['sectors'][$record->extend_sector_id]['value'] += 1;
463
                    }
464
                }
465
 
466
                if($record->extend_student_type_id) {
467
                    $reportsLastWeek['student_types'][$record->extend_student_type_id]['total'] += 1;
468
                    $reportsStudentsTotal['student_types'][$record->extend_student_type_id]['total'] += 1;
469
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
470
                        $reportsLastWeek['student_types'][$record->extend_student_type_id]['value'] += 1;
471
                    }
472
 
473
                    $reportsCapsuleResume['student_types'][$record->extend_student_type_id]['total'] += 1;
474
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
475
                        $reportsCapsuleResume['student_types'][$record->extend_student_type_id]['value'] += 1;
476
                    }
477
                }
478
            }
479
 
480
 
481
            /*
482
            header('Content-type: text/plain');
483
            print_r($reportsStudentsTotal); exit;
484
            */
485
 
486
 
487
            $this->layout()->setTemplate('layout/layout-backend.phtml');
488
            $viewModel = new ViewModel();
489
            $viewModel->setTemplate('leaders-linked/microlearning-reports/overview.phtml');
490
            $viewModel->setVariables([
491
                'reportsLastWeek'       => $reportsLastWeek,
492
                'reportsCapsuleResume'  => $reportsCapsuleResume,
493
                'reportsStudentsTotal'  => $reportsStudentsTotal,
494
                'reportStudents' => [
495
                    'total' => $studentsTotal,
496
                    'started' => $studentsStarted,
497
                    'withoutStarting' => $studentsWithoutStarting,
498
                ]
499
 
500
            ]);
501
            return $viewModel ;
502
        }
503
 
504
        return new JsonModel([
505
           'success' => false,
506
           'data' => 'ERROR_METHOD_NOT_ALLOWED'
507
        ]);
508
    }
509
 
187 efrain 510
    public function progressForCapsuleAction()
511
    {
512
 
513
    }
514
 
515
 
2 efrain 516
    public function progressAction()
1 www 517
    {
518
 
519
 
520
        $currentUserPlugin = $this->plugin('currentUserPlugin');
521
        $currentUser = $currentUserPlugin->getUser();
522
        $currentCompany = $currentUserPlugin->getCompany();
523
 
524
 
525
        $request = $this->getRequest();
526
        if($request->isGet()) {
527
 
528
 
529
            $headers  = $request->getHeaders();
530
 
531
            $isJson = false;
532
            if($headers->has('Accept')) {
533
                $accept = $headers->get('Accept');
534
 
535
                $prioritized = $accept->getPrioritized();
536
 
537
                foreach($prioritized as $key => $value) {
538
                    $raw = trim($value->getRaw());
539
 
540
                    if(!$isJson) {
541
                        $isJson = strpos($raw, 'json');
542
                    }
543
 
544
                }
545
            }
546
 
187 efrain 547
 
548
 
1 www 549
            if($isJson) {
550
 
187 efrain 551
                $company_id = filter_var($this->params()->fromQuery('company_id', ''), FILTER_SANITIZE_STRING);
552
                $function_id = filter_var($this->params()->fromQuery('function_id', ''), FILTER_SANITIZE_STRING);
553
                $group_id = filter_var($this->params()->fromQuery('group_id', ''), FILTER_SANITIZE_STRING);
554
                $institution_id = filter_var($this->params()->fromQuery('institution_id', ''), FILTER_SANITIZE_STRING);
555
                $program_id = filter_var($this->params()->fromQuery('program_id', ''), FILTER_SANITIZE_STRING);
556
                $partner_id = filter_var($this->params()->fromQuery('partner_id', ''), FILTER_SANITIZE_STRING);
557
                $sector_id = filter_var($this->params()->fromQuery('sector_id', ''), FILTER_SANITIZE_STRING);
558
                $student_type_id = filter_var($this->params()->fromQuery('student_type_id', ''), FILTER_SANITIZE_STRING);
1 www 559
 
560
 
187 efrain 561
 
562
 
563
                if($company_id) {
564
                    $extendUserCompanyMapper = CompanyMicrolearningExtendUserCompanyMapper::getInstance($this->adapter);
565
                    $extendUserCompany = $extendUserCompanyMapper->fetchOneByUuid($company_id);
566
 
567
 
568
 
569
                    if($extendUserCompany) {
570
                        $company_id = $extendUserCompany->id;
571
                    } else {
572
                        $company_id = 0;
573
                    }
574
                }
575
 
1 www 576
 
577
 
187 efrain 578
                if($function_id) {
579
                    $extendUserFunctionMapper = CompanyMicrolearningExtendUserFunctionMapper::getInstance($this->adapter);
580
                    $extendUserFunction = $extendUserFunctionMapper->fetchOneByUuid($function_id);
581
 
582
                    if($extendUserFunction) {
583
                        $function_id = $extendUserFunction->id;
584
                    } else {
585
                        $function_id = 0;
586
                    }
587
                }
1 www 588
 
187 efrain 589
                if($group_id) {
590
                    $extendUserGroupMapper = CompanyMicrolearningExtendUserGroupMapper::getInstance($this->adapter);
591
                    $extendUserGroup = $extendUserGroupMapper->fetchOneByUuid($group_id);
592
 
593
                    if($extendUserGroup) {
594
                        $group_id = $extendUserGroup->id;
595
                    } else {
596
                        $group_id = 0;
597
                    }
598
                }
1 www 599
 
187 efrain 600
                if($institution_id) {
601
                    $extendUserInstitutionMapper = CompanyMicrolearningExtendUserInstitutionMapper::getInstance($this->adapter);
602
                    $extendUserInstitution = $extendUserInstitutionMapper->fetchOneByUuid($institution_id);
603
                    if($extendUserInstitution) {
604
                        $institution_id = $extendUserInstitution->id;
605
                    } else {
606
                        $institution_id = 0;
607
                    }
608
                }
609
 
610
                if($program_id) {
611
                    $extendUserProgramMapper = CompanyMicrolearningExtendUserProgramMapper::getInstance($this->adapter);
612
                    $extendUserProgram = $extendUserProgramMapper->fetchOneByUuid($program_id);
613
 
614
                    if($extendUserProgram) {
615
                        $program_id = $extendUserProgram->id;
616
                    } else {
617
                        $program_id = 0;
618
                    }
619
 
620
 
621
                }
622
 
623
                if($partner_id) {
624
                    $extendUserPartnerMapper = CompanyMicrolearningExtendUserPartnerMapper::getInstance($this->adapter);
625
                    $extendUserPartner = $extendUserPartnerMapper->fetchOneByUuid($partner_id);
626
                    if($extendUserPartner) {
627
                        $partner_id = $extendUserPartner;
628
                    } else {
629
                        $partner_id = 0;
630
                    }
631
                }
632
 
633
                if($sector_id) {
634
                    $extendUserSectorMapper = CompanyMicrolearningExtendUserSectorMapper::getInstance($this->adapter);
635
                    $extendUserSector = $extendUserSectorMapper->fetchOneByUuid($sector_id);
636
                    if($extendUserSector) {
637
                        $sector_id = $extendUserSector->id;
638
                    } else {
639
                        $sector_id = 0;
640
                    }
641
                }
642
 
643
                if($student_type_id) {
644
                    $extendUserStudentTypeMapper = CompanyMicrolearningExtendUserStudentTypeMapper::getInstance($this->adapter);
645
                    $extendUserStudentType = $extendUserStudentTypeMapper->fetchOneByUuid($student_type_id);
646
 
647
                    if($extendUserStudentType) {
648
                        $student_type_id = $extendUserStudentType->id;
649
                    } else {
650
                        $student_type_id = 0;
651
                    }
652
                }
653
 
1 www 654
                $queryMapper = QueryMapper::getInstance($this->adapter);
655
 
187 efrain 656
                $selectUsers = $queryMapper->getSql()->select();
657
                $selectUsers->columns(['user_id' => new Expression('DISTINCT(user_id)')]);
658
                $selectUsers->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
659
                $selectUsers->where->equalTo('company_id', $currentCompany->id);
1 www 660
 
187 efrain 661
 
1 www 662
 
187 efrain 663
 
664
 
1 www 665
                $select = $queryMapper->getSql()->select();
666
                $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
187 efrain 667
                $select->from([ 'u' => UserMapper::_TABLE]);
1 www 668
 
669
 
670
 
187 efrain 671
                $select->where->in('u.id', $selectUsers);
672
                if( $company_id || $function_id  || $group_id || $institution_id || $program_id || $partner_id ||  $sector_id || $student_type_id ) {
673
 
674
                    $select->join(['e' => CompanyMicrolearningExtendUserMapper::_TABLE], 'e.user_id = u.id', []);
675
 
676
                }
677
 
678
 
679
                if($company_id) {
680
                    $select->where->equalTo('e.extend_company_id', $company_id);
681
                }
682
 
683
                if($function_id) {
684
                    $select->where->equalTo('e.extend_function_id', $function_id);
685
 
686
                }
687
                if($group_id) {
688
                    $select->where->equalTo('e.extend_group_id', $group_id);
689
                }
690
 
691
                if($institution_id) {
692
                    $select->where->equalTo('e.extend_institution_id', $institution_id);
693
                }
694
 
695
                if($program_id) {
696
                    $select->where->equalTo('e.extend_program_id', $program_id);
697
                }
698
 
699
                if($partner_id) {
700
                    $select->where->equalTo('e.extend_partner_id', $partner_id);
701
                }
702
 
703
                if($sector_id) {
704
                    $select->where->equalTo('e.extend_sector_id', $sector_id);
705
                }
706
 
707
                if($student_type_id) {
708
                    $select->where->equalTo('e.extend_student_type_id', $student_type_id);
709
                }
710
                $select->order(['u.first_name', 'u.last_name']);
711
 
712
               // echo $select->getSqlString($this->adapter->platform); exit;
713
 
714
 
715
 
716
 
717
 
718
 
719
                /*
720
                 echo 'company_id 1 =  '. $company_id . PHP_EOL;
721
                 echo 'function_id 1 =  '. $function_id . PHP_EOL;
722
                 echo 'group_id 1 =  '. $group_id . PHP_EOL;
723
                 echo 'institution_id 1 =  '. $institution_id . PHP_EOL;
724
                 echo 'program_id 1 =  '. $program_id . PHP_EOL;
725
                 echo 'partner_id 1 =  '. $partner_id . PHP_EOL;
726
                 echo 'sector_id 1 =  '. $sector_id . PHP_EOL;
727
                 echo 'student_type_id 1 =  '. $student_type_id . PHP_EOL;
728
                 exit;
729
                 */
730
 
731
 
732
 
733
 
734
 
735
 
736
                $companyMicrolearningProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
737
                $companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
738
 
739
                $companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
740
 
741
               // $companyMicrolearningSlideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
742
 
743
 
744
 
745
                $students = [];
746
 
1 www 747
                $records = $queryMapper->fetchAll($select);
187 efrain 748
 
749
 
1 www 750
                foreach($records as $record)
751
                {
187 efrain 752
 
753
 
1 www 754
                    $capsules               = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($record['id']);
187 efrain 755
 
756
 
757
 
1 www 758
                    $totalCapsules          = count($capsules);
759
                    $totalCapsulesStarted   = 0;
760
                    $totalCapsulesCompleted = 0;
761
 
762
 
187 efrain 763
 
764
 
765
 
766
 
767
 
1 www 768
                    foreach($capsules as $capsule)
769
                    {
770
                        $userProgress = $companyMicrolearningProgressMapper->fetchOneByUseridAndCapsuleId($capsule->user_id, $capsule->capsule_id);
187 efrain 771
 
772
 
1 www 773
                        if($userProgress) {
774
                            $totalCapsulesStarted++;
775
                            if($userProgress->completed) {
776
                                $totalCapsulesCompleted++;
187 efrain 777
                            }
1 www 778
                        }
187 efrain 779
 
1 www 780
 
781
 
782
                    }
783
 
187 efrain 784
 
785
 
786
 
787
                    if($totalCapsulesCompleted > 0 && $totalCapsules > 0) {
788
                        $total_capsules_percentaje = intval ( ($totalCapsulesCompleted * 100 ) / $totalCapsules);
789
                    }  else {
790
                        $total_capsules_percentaje = 0;
791
                    }
792
 
1 www 793
 
187 efrain 794
 
1 www 795
                    $student = [
796
                        'uuid' => $record['uuid'],
797
                        'first_name' => $record['first_name'],
798
                        'last_name' => $record['last_name'],
187 efrain 799
                        'email' => $record['email'],
800
 
1 www 801
                        'total_capsules' => $totalCapsules,
187 efrain 802
                        'total_capsules_incomplete' => ( $totalCapsules - $totalCapsulesCompleted ),
1 www 803
                        'total_capsules_started' => $totalCapsulesStarted,
804
                        'total_capsules_completed' => $totalCapsulesCompleted,
187 efrain 805
                        'total_capsules_percentaje' => $total_capsules_percentaje,
806
 
1 www 807
                        'first_date' => '',
808
                        'first_time' => '',
809
                        'last_date' => '',
810
                        'last_time' => '',
811
                    ];
187 efrain 812
 
1 www 813
                    $first_added_on = $companyMicrolearningUserLogMapper->fetchFirstDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
814
                    if($first_added_on) {
815
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $first_added_on);
816
                        if($dt) {
817
                            $student['first_date'] = $dt->format('d/m/Y');
818
                            $student['first_time'] = $dt->format('h:i a');
819
                        }
820
                    }
821
 
822
                    $last_added_on  = $companyMicrolearningUserLogMapper->fetchLastDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
823
                    if($last_added_on) {
824
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $last_added_on);
825
                        if($dt) {
826
                            $student['last_date'] = $dt->format('d/m/Y');
827
                            $student['last_time'] = $dt->format('h:i a');
187 efrain 828
                        }
1 www 829
                    }
187 efrain 830
 
1 www 831
                    array_push($students, $student);
187 efrain 832
 
1 www 833
 
834
 
835
                }
836
 
837
 
187 efrain 838
                //print_r($students);
1 www 839
 
840
 
187 efrain 841
 
1 www 842
                return new JsonModel([
187 efrain 843
                    'success' => true,
1 www 844
                    'data' => $students
845
 
187 efrain 846
                ]);
1 www 847
 
187 efrain 848
            } else {
1 www 849
 
850
 
851
 
852
                $form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
853
 
854
 
855
                $this->layout()->setTemplate('layout/layout-backend.phtml');
856
                $viewModel = new ViewModel();
2 efrain 857
                $viewModel->setTemplate('leaders-linked/microlearning-reports/progress.phtml');
1 www 858
                $viewModel->setVariables([
859
                    'form' => $form
187 efrain 860
                ]);
1 www 861
                return $viewModel ;
862
            }
863
        }
864
 
865
        return new JsonModel([
866
            'success' => false,
867
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
868
        ]);
869
    }
2 efrain 870
 
187 efrain 871
 
2 efrain 872
    public function devicesAction()
873
    {
874
 
875
 
876
        $currentUserPlugin = $this->plugin('currentUserPlugin');
877
        $currentUser = $currentUserPlugin->getUser();
878
        $currentCompany = $currentUserPlugin->getCompany();
879
 
880
 
881
        $request = $this->getRequest();
882
        if($request->isGet()) {
883
 
884
 
885
            $headers  = $request->getHeaders();
886
 
887
            $isJson = false;
888
            if($headers->has('Accept')) {
889
                $accept = $headers->get('Accept');
890
 
891
                $prioritized = $accept->getPrioritized();
892
 
893
                foreach($prioritized as $key => $value) {
894
                    $raw = trim($value->getRaw());
895
 
896
                    if(!$isJson) {
897
                        $isJson = strpos($raw, 'json');
898
                    }
899
 
900
                }
901
            }
902
 
903
            if($isJson) {
904
 
129 efrain 905
 
906
                $company_id = filter_var($this->params()->fromQuery('company_id', ''), FILTER_SANITIZE_STRING);
907
                $function_id = filter_var($this->params()->fromQuery('function_id', ''), FILTER_SANITIZE_STRING);
908
                $group_id = filter_var($this->params()->fromQuery('group_id', ''), FILTER_SANITIZE_STRING);
909
                $institution_id = filter_var($this->params()->fromQuery('institution_id', ''), FILTER_SANITIZE_STRING);
910
                $program_id = filter_var($this->params()->fromQuery('program_id', ''), FILTER_SANITIZE_STRING);
911
                $partner_id = filter_var($this->params()->fromQuery('partner_id', ''), FILTER_SANITIZE_STRING);
912
                $sector_id = filter_var($this->params()->fromQuery('sector_id', ''), FILTER_SANITIZE_STRING);
913
                $student_type_id = filter_var($this->params()->fromQuery('student_type_id', ''), FILTER_SANITIZE_STRING);
914
 
915
 
916
                if($company_id) {
917
                    $extendUserCompanyMapper = CompanyMicrolearningExtendUserCompanyMapper::getInstance($this->adapter);
918
                    $extendUserCompany = $extendUserCompanyMapper->fetchOneByUuid($company_id);
919
 
920
                    if($extendUserCompany) {
921
                        $company_id = $extendUserCompany->id;
922
                    } else {
923
                        $company_id = 0;
924
                    }
925
                }
926
 
927
                if($function_id) {
928
                    $extendUserFunctionMapper = CompanyMicrolearningExtendUserFunctionMapper::getInstance($this->adapter);
929
                    $extendUserFunction = $extendUserFunctionMapper->fetchOneByUuid($function_id);
930
 
931
                    if($extendUserFunction) {
932
                        $function_id = $extendUserFunction->id;
933
                    } else {
934
                        $function_id = 0;
935
                    }
936
                }
937
 
938
                if($group_id) {
939
                    $extendUserGroupMapper = CompanyMicrolearningExtendUserGroupMapper::getInstance($this->adapter);
940
                    $extendUserGroup = $extendUserGroupMapper->fetchOneByUuid($group_id);
941
 
942
                    if($extendUserGroup) {
943
                        $group_id = $extendUserGroup->id;
944
                    } else {
945
                        $group_id = 0;
946
                    }
947
                }
948
 
949
                if($institution_id) {
950
                    $extendUserInstitutionMapper = CompanyMicrolearningExtendUserInstitutionMapper::getInstance($this->adapter);
951
                    $extendUserInstitution = $extendUserInstitutionMapper->fetchOneByUuid($institution_id);
952
                    if($extendUserInstitution) {
953
                        $institution_id = $extendUserInstitution->id;
954
                    } else {
955
                        $institution_id = 0;
956
                    }
957
                }
958
 
959
                if($program_id) {
960
                    $extendUserProgramMapper = CompanyMicrolearningExtendUserProgramMapper::getInstance($this->adapter);
961
                    $extendUserProgram = $extendUserProgramMapper->fetchOneByUuid($program_id);
962
 
963
                    if($extendUserProgram) {
964
                        $program_id = $extendUserProgram->id;
965
                    } else {
966
                        $program_id = 0;
967
                    }
968
 
969
 
970
                }
971
 
972
                if($partner_id) {
973
                    $extendUserPartnerMapper = CompanyMicrolearningExtendUserPartnerMapper::getInstance($this->adapter);
974
                    $extendUserPartner = $extendUserPartnerMapper->fetchOneByUuid($partner_id);
975
                    if($extendUserPartner) {
976
                        $partner_id = $extendUserPartner;
977
                    } else {
978
                        $partner_id = 0;
979
                    }
980
                }
981
 
982
                if($sector_id) {
983
                    $extendUserSectorMapper = CompanyMicrolearningExtendUserSectorMapper::getInstance($this->adapter);
984
                    $extendUserSector = $extendUserSectorMapper->fetchOneByUuid($sector_id);
985
                    if($extendUserSector) {
986
                        $sector_id = $extendUserSector->id;
987
                    } else {
988
                        $sector_id = 0;
989
                    }
990
                }
991
 
992
                if($student_type_id) {
993
                    $extendUserStudentTypeMapper = CompanyMicrolearningExtendUserStudentTypeMapper::getInstance($this->adapter);
994
                    $extendUserStudentType = $extendUserStudentTypeMapper->fetchOneByUuid($student_type_id);
995
 
996
                    if($extendUserStudentType) {
997
                        $student_type_id = $extendUserStudentType->id;
998
                    } else {
999
                        $student_type_id = 0;
1000
                    }
1001
                }
1002
 
1003
 
1004
 
1005
                /*
1006
                echo 'company_id 1 =  '. $company_id . PHP_EOL;
1007
                echo 'function_id 1 =  '. $function_id . PHP_EOL;
1008
                echo 'group_id 1 =  '. $group_id . PHP_EOL;
1009
                echo 'institution_id 1 =  '. $institution_id . PHP_EOL;
1010
                echo 'program_id 1 =  '. $program_id . PHP_EOL;
1011
                echo 'partner_id 1 =  '. $partner_id . PHP_EOL;
1012
                echo 'sector_id 1 =  '. $sector_id . PHP_EOL;
1013
                echo 'student_type_id 1 =  '. $student_type_id . PHP_EOL;
1014
                exit;
1015
                */
1016
 
1017
 
2 efrain 1018
                $date = date('Y-m-d');
1019
                $deviceMapper = DeviceMapper::getInstance($this->adapter);
1020
 
1021
 
1022
                $queryMapper = QueryMapper::getInstance($this->adapter);
1023
 
1024
                $selectCapsuleUser = $queryMapper->getSql()->select();
1025
                $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')  ]);
1026
                $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
1027
                $selectCapsuleUser->where->equalTo('company_id', $currentCompany->id);
1028
                $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
1029
                ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
1030
                ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
1031
                ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
1032
 
1033
                //echo $select->getSqlString($this->adapter->platform); exit;
1034
 
1035
                $select = $queryMapper->getSql()->select();
1036
                $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
129 efrain 1037
                $select->from([ 'u' => UserMapper::_TABLE]);
1038
                if( $company_id || $function_id  || $group_id || $institution_id || $program_id || $partner_id ||  $sector_id || $student_type_id ) {
1039
 
187 efrain 1040
                    $select->join(['e' => CompanyMicrolearningExtendUserMapper::_TABLE], 'e.user_id = u.id', []);
129 efrain 1041
 
1042
                }
2 efrain 1043
 
129 efrain 1044
                $select->where->in('u.id', $selectCapsuleUser);
1045
                if($company_id) {
1046
                    $select->where->equalTo('e.extend_company_id', $company_id);
1047
                }
2 efrain 1048
 
129 efrain 1049
                if($function_id) {
1050
                    $select->where->equalTo('e.extend_function_id', $function_id);
1051
 
1052
                }
1053
                if($group_id) {
1054
                    $select->where->equalTo('e.extend_group_id', $group_id);
1055
                }
2 efrain 1056
 
129 efrain 1057
                if($institution_id) {
1058
                    $select->where->equalTo('e.extend_institution_id', $institution_id);
1059
                }
1060
 
1061
                if($program_id) {
1062
                    $select->where->equalTo('e.extend_program_id', $program_id);
1063
                }
1064
 
1065
                if($partner_id) {
1066
                    $select->where->equalTo('e.extend_partner_id', $partner_id);
1067
                }
1068
 
1069
                if($sector_id) {
1070
                    $select->where->equalTo('e.extend_sector_id', $sector_id);
1071
                }
1072
 
1073
                if($student_type_id) {
1074
                    $select->where->equalTo('e.extend_student_type_id', $student_type_id);
1075
                }
1076
                $select->order(['u.first_name', 'u.last_name']);
1077
 
1078
 
1079
 
2 efrain 1080
                $students = [];
1081
                $records = $queryMapper->fetchAll($select);
1082
                foreach($records as $record)
1083
                {
1084
 
1085
 
1086
                    $record_devices = $deviceMapper->fetchAllByUserId($record['id']);
1087
 
1088
                    $devices = [];
1089
                    foreach($record_devices as $device)
1090
                    {
1091
                        /*if($device->application_id != Application::LEADERSLINKED) {
1092
                            continue;
1093
                        }*/
1094
 
1095
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $device->updated_on);
1096
 
1097
                        array_push($devices, [
1098
                            'brand' => $device->brand,
1099
                            'manufacturer' => $device->manufacturer,
1100
                            'model' => $device->model,
1101
                            'platform' => $device->platform,
1102
                            'version' => $device->version,
1103
                            'token' => $device->token ? 'LABEL_YES' : 'LABEL_NO',
1104
                            'updated_on' => $dt->format('d/m/Y h:i a')
1105
                        ]);
1106
                    }
1107
 
187 efrain 1108
                    if(empty($devices)) {
1109
                        continue;
1110
 
1111
                    }
1112
 
2 efrain 1113
 
1114
                    $student = [
1115
                        'uuid' => $record['uuid'],
1116
                        'first_name' => $record['first_name'],
1117
                        'last_name' => $record['last_name'],
1118
                        'email' => $record['email'],
1119
                        'devices' => $devices
1120
                    ];
1121
 
1122
                    array_push($students, $student);
1123
 
1124
 
1125
                }
1126
 
1127
 
1128
 
1129
 
1130
                return new JsonModel([
1131
                    'success' => true,
129 efrain 1132
                    'data' => $students,
1133
                    'sql' => $select->getSqlString($this->adapter->platform),
2 efrain 1134
 
1135
                ]);
1136
 
1137
            } else {
1138
 
1139
 
1140
 
1141
                $form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
1142
 
1143
 
1144
                $this->layout()->setTemplate('layout/layout-backend.phtml');
1145
                $viewModel = new ViewModel();
1146
                $viewModel->setTemplate('leaders-linked/microlearning-reports/devices.phtml');
1147
                $viewModel->setVariables([
1148
                    'form' => $form
1149
                ]);
1150
                return $viewModel ;
1151
            }
1152
        }
1153
 
1154
        return new JsonModel([
1155
            'success' => false,
1156
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1157
        ]);
1158
    }
187 efrain 1159
 
1160
 
1161
    public function comentsForCapsulesAction()
1162
    {
1163
        $currentUserPlugin = $this->plugin('currentUserPlugin');
1164
        $currentUser = $currentUserPlugin->getUser();
1165
        $currentCompany = $currentUserPlugin->getCompany();
1166
 
1167
        $request = $this->getRequest();
1168
 
1169
        if($request->isGet())
1170
        {
1171
 
1172
            $headers  = $request->getHeaders();
1173
 
1174
            $isJson = false;
1175
            if($headers->has('Accept')) {
1176
                $accept = $headers->get('Accept');
1177
 
1178
                $prioritized = $accept->getPrioritized();
1179
 
1180
                foreach($prioritized as $key => $value) {
1181
                    $raw = trim($value->getRaw());
1182
 
1183
                    if(!$isJson) {
1184
                        $isJson = strpos($raw, 'json');
1185
                    }
1186
 
1187
                }
1188
            }
1189
 
1190
            if($isJson) {
1191
                $topic_uuid     = filter_var($this->params()->fromQuery('topic_uuid'), FILTER_SANITIZE_STRING);
1192
                $capsule_uuid   = filter_var($this->params()->fromQuery('capsule_uuid'), FILTER_SANITIZE_STRING);
1193
 
1194
                $data = [
1195
                    'items' => [] ,
1196
                    'total' => 0,
1197
 
1198
                ];
1199
 
1200
 
1201
                if(!$topic_uuid) {
1202
                    return new JsonModel([
1203
                        'success' => true,
1204
                        'data' => $data
1205
                    ]);
1206
 
1207
                }
1208
 
1209
 
1210
                $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
1211
                $topic = $topicMapper->fetchOneByUuid($topic_uuid);
1212
                if(!$topic) {
1213
                    return new JsonModel([
1214
                        'success' => true,
1215
                        'data' => 'ERROR_TOPIC_NOT_FOUND'
1216
                    ]);
1217
                }
1218
 
1219
                if($topic->company_id != $currentCompany->id) {
1220
                    return new JsonModel([
1221
                        'success' => true,
1222
                        'data' => 'ERROR_UNAUTHORIZED'
1223
                    ]);
1224
                }
1225
 
1226
 
1227
 
1228
                if(!$capsule_uuid) {
1229
                    $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
1230
                    $records = $capsuleMapper->fetchAllByCompanyIdAndTopicId($topic->company_id, $topic->id);
1231
 
1232
                    $capsules = [];
1233
                    foreach($records as $record)
1234
                    {
1235
                        if(!$capsule_uuid) {
1236
                            $capsule_uuid = $record->uuid;
1237
                        }
1238
 
1239
                        $capsules[ $record->uuid ] = $record->name;
1240
                    }
1241
 
1242
                    $data['capsules']  = $capsules;
1243
                }
1244
 
1245
                if(!$capsule_uuid) {
1246
                    return new JsonModel([
1247
                        'success' => true,
1248
                        'data' => $data
1249
                    ]);
1250
 
1251
                }
1252
 
1253
                $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
1254
                $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
1255
 
1256
 
1257
 
1258
                if(!$capsule) {
1259
                    return new JsonModel([
1260
                        'success' => true,
1261
                        'data' => 'ERROR_CAPSULE_NOT_FOUND'
1262
                    ]);
1263
                }
1264
 
1265
                if($capsule->topic_id != $topic->id) {
1266
                    return new JsonModel([
1267
                        'success' => true,
1268
                        'data' => 'ERROR_UNAUTHORIZED'
1269
                    ]);
1270
                }
1271
 
1272
 
1273
                $search = $this->params()->fromQuery('search', []);
1274
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
1275
 
1276
                $page               = intval($this->params()->fromQuery('start', 1), 10);
1277
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
1278
                $order =  $this->params()->fromQuery('order', []);
1279
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
1280
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
1281
 
1282
                $fields =  ['uuid', 'first_name', 'last_name', 'email', 'rating', 'comment', 'added_on'];
1283
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'added_on';
1284
 
1285
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
1286
                    $order_direction = 'DESC';
1287
                }
1288
 
1289
 
1290
                $queryMapper = QueryMapper::getInstance($this->adapter);
1291
                $sql = $queryMapper->getSql();
1292
                $select = $sql->select();
1293
                $select->columns(['access', 'paid_from', 'paid_to', 'added_on', 'updated_on']);
1294
                $select->from(['tb1' => CompanyMicrolearningCapsuleCommentMapper::_TABLE] );
1295
                $select->join(['tb2' => UserMapper::_TABLE], 'tb1.user_id = tb2.id', ['uuid', 'first_name', 'last_name', 'email']);
1296
                $select->where->equalTo('tb1.company_id', $capsule->company_id);
1297
                $select->where->equalTo('tb1.topic_id', $capsule->topic_id);
1298
                $select->where->equalTo('tb1.capsule_id', $capsule->id);
1299
 
1300
                if($search) {
1301
                    $select->where->nest()
1302
                    ->like('first_name', '%' . $search . '%')
1303
                    ->or->like('last_name', '%' . $search . '%')
1304
                    ->or->like('email', '%' . $search . '%')
1305
                    ->unnest();
1306
 
1307
                }
1308
 
1309
 
1310
                $select->order($order_field . ' ' . $order_direction);
1311
 
1312
                $hydrator   = new ArraySerializableHydrator();
1313
                $resultset  = new HydratingResultSet($hydrator);
1314
 
1315
                $adapter = new DbSelect($select, $sql, $resultset);
1316
                $paginator = new Paginator($adapter);
1317
                $paginator->setItemCountPerPage($records_x_page);
1318
                $paginator->setCurrentPageNumber($page);
1319
 
1320
 
1321
                $items = [ ];
1322
                $records = $paginator->getCurrentItems();
1323
                foreach($records as $record)
1324
                {
1325
 
1326
 
1327
 
1328
                    $dt_added_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);
1329
                    $added_on = $dt_added_on->format('d/m/Y h:i a');
1330
 
1331
 
1332
                    $item = [
1333
                        'uuid' => $record['uuid'],
1334
                        'first_name' => $record['first_name'],
1335
                        'last_name' => $record['last_name'],
1336
                        'email' => $record['email'],
1337
                        'rating' => $record['rating'],
1338
                        'text' => $record['text'],
1339
                        'added_on' => $added_on,
1340
                    ];
1341
 
1342
 
1343
                    array_push($items, $item);
1344
 
1345
 
1346
                }
1347
 
1348
                $data['items'] = $items;
1349
                $data['total'] = $paginator->getTotalItemCount();
1350
 
1351
 
1352
                return new JsonModel([
1353
                    'success' => true,
1354
                    'data' => $data
1355
                ]);
1356
            } else {
1357
                $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
1358
                $topics = $topicMapper->fetchAllByCompanyId($currentCompany->id);
1359
 
1360
                if($topics) {
1361
                    $topic_id = $topics[0]->id;
1362
                }  else {
1363
                    $topic_id = 0;
1364
                }
1365
 
1366
 
1367
                $form = new TopicCapsuleForm($this->adapter, $currentCompany->id, $topic_id);
1368
 
1369
 
1370
 
1371
                $this->layout()->setTemplate('layout/layout-backend');
1372
                $viewModel = new ViewModel();
1373
                $viewModel->setTemplate('leaders-linked/microlearning-reports/comments-for-capsule.phtml');
1374
                $viewModel->setVariables([
1375
                    'form' => $form,
1376
                ]);
1377
 
1378
                return $viewModel ;
1379
            }
1380
 
1381
        } else {
1382
            return new JsonModel([
1383
                'success' => false,
1384
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1385
            ]);
1386
        }
1387
    }
1388
 
1389
 
1390
 
1 www 1391
 
1392
}