Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 1 | Rev 129 | 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;
2 efrain 32
use LeadersLinked\Mapper\DeviceMapper;
33
use LeadersLinked\Model\Application;
1 www 34
 
35
 
36
class MicrolearningReportsController extends AbstractActionController
37
{
38
    /**
39
     *
40
     * @var AdapterInterface
41
     */
42
    private $adapter;
43
 
44
 
45
    /**
46
     *
47
     * @var AbstractAdapter
48
     */
49
    private $cache;
50
 
51
    /**
52
     *
53
     * @var  LoggerInterface
54
     */
55
    private $logger;
56
 
57
 
58
    /**
59
     *
60
     * @param AdapterInterface $adapter
61
     * @param AbstractAdapter $cache
62
     * @param LoggerInterface $logger
63
     * @param array $config
64
     */
65
    public function __construct($adapter, $cache , $logger, $config)
66
    {
67
        $this->adapter      = $adapter;
68
        $this->cache        = $cache;
69
        $this->logger       = $logger;
70
        $this->config       = $config;
71
 
72
 
73
    }
74
 
2 efrain 75
 
76
    public function indexAction()
77
    {
78
 
79
        $this->layout()->setTemplate('layout/layout-backend.phtml');
80
        $viewModel = new ViewModel();
81
        $viewModel->setTemplate('leaders-linked/microlearning-reports/index.phtml');
82
        return $viewModel ;
83
    }
84
 
1 www 85
 
86
    public function overviewAction()
87
    {
88
 
89
 
90
        $currentUserPlugin = $this->plugin('currentUserPlugin');
91
        $currentUser = $currentUserPlugin->getUser();
92
        $currentCompany = $currentUserPlugin->getCompany();
93
 
94
 
95
        $request = $this->getRequest();
96
        if($request->isGet()) {
97
            $reportsLastWeek = [];
98
            $reportsCapsuleResume = [];
99
            $reportsStudentsTotal = [];
100
 
101
            $companyMicrolearningExtendUserCompanyMapper = CompanyMicrolearningExtendUserCompanyMapper::getInstance($this->adapter);
102
            $extendCompanies = $companyMicrolearningExtendUserCompanyMapper->fetchAllByCompanyId($currentCompany->id);
103
 
104
            foreach($extendCompanies as $extendCompany)
105
            {
106
                $reportsLastWeek['companies'][$extendCompany->id] = [
107
                    'name' => $extendCompany->name,
108
                    'total' => 0,
109
                    'value' => 0
110
                ] ;
111
 
112
                $reportsCapsuleResume['companies'][$extendCompany->id] = [
113
                    'name' => $extendCompany->name,
114
                    'total' => 0,
115
                    'value' => 0
116
                ] ;
117
 
118
                $reportsStudentsTotal['companies'][$extendCompany->id] = [
119
                    'name' => $extendCompany->name,
120
                    'total' => 0,
121
                ] ;
122
            }
123
 
124
 
125
            $companyMicrolearningExtendUserFunctionMapper = CompanyMicrolearningExtendUserFunctionMapper::getInstance($this->adapter);
126
            $extendFunctions = $companyMicrolearningExtendUserFunctionMapper->fetchAllByCompanyId($currentCompany->id);
127
 
128
            foreach($extendFunctions as $extendFunction)
129
            {
130
                $reportsLastWeek['functions'][$extendFunction->id] = [
131
                    'name' => $extendFunction->name,
132
                    'total' => 0,
133
                    'value' => 0
134
                ] ;
135
 
136
                $reportsCapsuleResume['functions'][$extendFunction->id] = [
137
                    'name' => $extendFunction->name,
138
                    'total' => 0,
139
                    'value' => 0
140
                ] ;
141
 
142
                $reportsStudentsTotal['functions'][$extendFunction->id] = [
143
                    'name' => $extendFunction->name,
144
                    'total' => 0,
145
                ] ;
146
            }
147
 
148
            $companyMicrolearningExtendUserGroupMapper = CompanyMicrolearningExtendUserGroupMapper::getInstance($this->adapter);
149
            $extendGroups = $companyMicrolearningExtendUserGroupMapper->fetchAllByCompanyId($currentCompany->id);
150
 
151
            foreach($extendGroups as $extendGroup)
152
            {
153
                $reportsLastWeek['groups'][$extendGroup->id] = [
154
                    'name' => $extendGroup->name,
155
                    'total' => 0,
156
                    'value' => 0
157
                ];
158
 
159
                $reportsCapsuleResume['groups'][$extendGroup->id] = [
160
                    'name' => $extendFunction->name,
161
                    'total' => 0,
162
                    'value' => 0
163
                ] ;
164
 
165
                $reportsStudentsTotal['groups'][$extendGroup->id] = [
166
                    'name' => $extendGroup->name,
167
                    'total' => 0,
168
                ];
169
 
170
 
171
            }
172
 
173
 
174
            $companyMicrolearningExtendUserInstitutionMapper = CompanyMicrolearningExtendUserInstitutionMapper::getInstance($this->adapter);
175
            $extendInstitutions = $companyMicrolearningExtendUserInstitutionMapper->fetchAllByCompanyId($currentCompany->id);
176
 
177
            foreach($extendInstitutions as $extendInstitution)
178
            {
179
                $reportsLastWeek['institutions'][$extendInstitution->id] = [
180
                    'name' => $extendInstitution->name,
181
                    'total' => 0,
182
                    'value' => 0
183
                ] ;
184
 
185
                $reportsCapsuleResume['institutions'][$extendInstitution->id] = [
186
                    'name' => $extendInstitution->name,
187
                    'total' => 0,
188
                    'value' => 0
189
                ] ;
190
 
191
                $reportsStudentsTotal['institutions'][$extendInstitution->id] = [
192
                    'name' => $extendInstitution->name,
193
                    'total' => 0,
194
                ] ;
195
            }
196
 
197
 
198
            $companyMicrolearningExtendUserProgramMapper = CompanyMicrolearningExtendUserProgramMapper::getInstance($this->adapter);
199
            $extendPrograms = $companyMicrolearningExtendUserProgramMapper->fetchAllByCompanyId($currentCompany->id);
200
 
201
            foreach($extendPrograms as $extendProgram)
202
            {
203
                $reportsLastWeek['programs'][$extendProgram->id] = [
204
                    'name' => $extendProgram->name,
205
                    'total' => 0,
206
                    'value' => 0
207
                ] ;
208
 
209
                $reportsCapsuleResume['programs'][$extendProgram->id] = [
210
                    'name' => $extendProgram->name,
211
                    'total' => 0,
212
                    'value' => 0
213
                ] ;
214
 
215
                $reportsStudentsTotal['programs'][$extendProgram->id] = [
216
                    'name' => $extendProgram->name,
217
                    'total' => 0,
218
 
219
                ] ;
220
            }
221
 
222
 
223
            $companyMicrolearningExtendUserPartnerMapper = CompanyMicrolearningExtendUserPartnerMapper::getInstance($this->adapter);
224
            $extendPartners = $companyMicrolearningExtendUserPartnerMapper->fetchAllByCompanyId($currentCompany->id);
225
 
226
            foreach($extendPartners as $extendPartner)
227
            {
228
                $reportsLastWeek['partners'][$extendPartner->id] = [
229
                    'name' => $extendPartner->name,
230
                    'total' => 0,
231
                    'value' => 0
232
                ] ;
233
 
234
                $reportsCapsuleResume['partners'][$extendPartner->id] = [
235
                    'name' => $extendPartner->name,
236
                    'total' => 0,
237
                    'value' => 0
238
                ] ;
239
 
240
                $reportsStudentsTotal['partners'][$extendPartner->id] = [
241
                    'name' => $extendPartner->name,
242
                    'total' => 0,
243
                ] ;
244
            }
245
 
246
 
247
            $companyMicrolearningExtendUserSectorMapper = CompanyMicrolearningExtendUserSectorMapper::getInstance($this->adapter);
248
            $extendSectors = $companyMicrolearningExtendUserSectorMapper->fetchAllByCompanyId($currentCompany->id);
249
 
250
            foreach($extendSectors as $extendSector)
251
            {
252
                $reportsLastWeek['sectors'][$extendSector->id] = [
253
                    'name' => $extendSector->name,
254
                    'total' => 0,
255
                    'value' => 0
256
                ] ;
257
 
258
                $reportsCapsuleResume['sectors'][$extendSector->id] = [
259
                    'name' => $extendSector->name,
260
                    'total' => 0,
261
                    'value' => 0
262
                ] ;
263
 
264
                $reportsStudentsTotal['sectors'][$extendSector->id] = [
265
                    'name' => $extendSector->name,
266
                    'total' => 0,
267
                ] ;
268
            }
269
 
270
            $companyMicrolearningExtendUserStudentTypeMapper = CompanyMicrolearningExtendUserStudentTypeMapper::getInstance($this->adapter);
271
            $extendStudentTypes = $companyMicrolearningExtendUserStudentTypeMapper->fetchAllByCompanyId($currentCompany->id);
272
 
273
            foreach($extendStudentTypes as $extendStudentType)
274
            {
275
                $reportsLastWeek['student_types'][$extendStudentType->id] = [
276
                    'name' => $extendStudentType->name,
277
                    'total' => 0,
278
                    'value' => 0
279
                ] ;
280
 
281
                $reportsCapsuleResume['student_types'][$extendStudentType->id] = [
282
                    'name' => $extendStudentType->name,
283
                    'total' => 0,
284
                    'value' => 0
285
                ] ;
286
 
287
                $reportsStudentsTotal['student_types'][$extendStudentType->id] = [
288
                    'name' => $extendStudentType->name,
289
                    'total' => 0,
290
                ] ;
291
            }
292
 
293
            $companyMicrolearningUserProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
294
 
295
            $minLastWeek = date('Y-m-d', strtotime(' -180 days'));
296
            $maxLastWeek = date('Y-m-d');
297
            $companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
298
            $companyUsersLogWithActivityLastWeek = $companyMicrolearningUserLogMapper->fetchAllUserIdsLastWeekByCompanyId($currentCompany->id, $minLastWeek, $maxLastWeek);
299
 
300
            //header('Content-type: text/plain');
301
           // print_r($companyUsersLogWithActivityLastWeek);
302
 
303
 
304
 
305
 
306
            $date = date('Y-m-d');
307
 
308
            $companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
309
            $user_ids = $companyMicrolearningCapsuleUserMapper->fetchAllDistinctUserIdActiveByCompanyIdAndDate($currentCompany->id, $date);
310
 
311
            $studentsTotal = count($user_ids);
312
            $studentsStarted = 0;
313
 
314
 
315
            $userIdsWithAllCapsulesCompleted = [];
316
 
317
 
318
            foreach($user_ids as $user_id)
319
            {
320
                $countSlides = $companyMicrolearningUserProgressMapper->fetchCountAllSlideCompletedByCompanyIdAndUserId($currentCompany->id, $user_id);
321
                if($countSlides) {
322
                    $studentsStarted++;
323
                }
324
 
325
                $incompleted = false;
326
 
327
                $capsuleUsers = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($user_id);
328
                foreach($capsuleUsers as $capsuleUser)
329
                {
330
                    $userProgress = $companyMicrolearningUserProgressMapper->fetchOneByUseridAndCapsuleId($capsuleUser->user_id, $capsuleUser->capsule_id);
331
                    if($userProgress) {
332
                        if(!$userProgress->completed) {
333
                            $incompleted = true;
334
                            break;
335
                        }
336
                    }  else {
337
                        $incompleted = true;
338
                        break;
339
                    }
340
 
341
 
342
 
343
                }
344
 
345
                if(!$incompleted) {
346
                    array_push($userIdsWithAllCapsulesCompleted, $user_id);
347
                }
348
            }
349
 
350
 
351
            $studentsWithoutStarting =  $studentsTotal - $studentsStarted;
352
            $reportsLastWeek['general'] = ['total' => $studentsTotal, 'value' => count($companyUsersLogWithActivityLastWeek) ];
353
 
354
            $reportsCapsuleResume['general'] = ['total' => $studentsTotal, 'value' => count($userIdsWithAllCapsulesCompleted) ];
355
 
356
 
357
            $companyMicrolearningExtendUserMapper = CompanyMicrolearningExtendUserMapper::getInstance($this->adapter);
358
            $records = $companyMicrolearningExtendUserMapper->fetchAllByCompanyId($currentCompany->id);
359
            foreach($records as $record)
360
            {
361
 
362
                if($record->extend_company_id) {
363
                    $reportsLastWeek['companies'][$record->extend_company_id]['total'] += 1;
364
                    $reportsStudentsTotal['companies'][$record->extend_company_id]['total'] += 1;
365
 
366
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
367
                        $reportsLastWeek['companies'][$record->extend_company_id]['value'] += 1;
368
                    }
369
 
370
                    $reportsCapsuleResume['companies'][$record->extend_company_id]['total'] += 1;
371
 
372
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
373
                        $reportsCapsuleResume['companies'][$record->extend_company_id]['value'] += 1;
374
                    }
375
 
376
                }
377
 
378
                if($record->extend_function_id) {
379
                    $reportsLastWeek['functions'][$record->extend_function_id]['total'] += 1;
380
                    $reportsStudentsTotal['functions'][$record->extend_function_id]['total'] += 1;
381
 
382
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
383
                        $reportsLastWeek['functions'][$record->extend_function_id]['value'] += 1;
384
                    }
385
 
386
                    $reportsCapsuleResume['functions'][$record->extend_function_id]['total'] += 1;
387
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
388
                        $reportsCapsuleResume['functions'][$record->extend_function_id]['value'] += 1;
389
                    }
390
                }
391
 
392
                if($record->extend_group_id) {
393
                    $reportsLastWeek['groups'][$record->extend_group_id]['total'] += 1;
394
                    $reportsStudentsTotal['groups'][$record->extend_group_id]['total'] += 1;
395
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
396
                        $reportsLastWeek['groups'][$record->extend_group_id]['value'] += 1;
397
                    }
398
 
399
                    $reportsCapsuleResume['groups'][$record->extend_group_id]['total'] += 1;
400
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
401
                        $reportsCapsuleResume['groups'][$record->extend_group_id]['value'] += 1;
402
                    }
403
                }
404
 
405
                if($record->extend_institution_id) {
406
                    $reportsLastWeek['institutions'][$record->extend_institution_id]['total'] += 1;
407
                    $reportsStudentsTotal['institutions'][$record->extend_institution_id]['total'] += 1;
408
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
409
                        $reportsLastWeek['institutions'][$record->extend_institution_id]['value'] += 1;
410
                    }
411
 
412
                    $reportsCapsuleResume['institutions'][$record->extend_institution_id]['total'] += 1;
413
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
414
                        $reportsCapsuleResume['institutions'][$record->extend_institution_id]['value'] += 1;
415
                    }
416
                }
417
 
418
                if($record->extend_program_id) {
419
                    $reportsLastWeek['programs'][$record->extend_program_id]['total'] += 1;
420
                    $reportsStudentsTotal['programs'][$record->extend_program_id]['total'] += 1;
421
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
422
                        $reportsLastWeek['programs'][$record->extend_program_id]['value'] += 1;
423
                    }
424
 
425
                    $reportsCapsuleResume['programs'][$record->extend_program_id]['total'] += 1;
426
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
427
                        $reportsCapsuleResume['programs'][$record->extend_program_id]['value'] += 1;
428
                    }
429
                }
430
 
431
                if($record->extend_partner_id) {
432
                    $reportsLastWeek['partners'][$record->extend_partner_id]['total'] += 1;
433
                    $reportsStudentsTotal['partners'][$record->extend_partner_id]['total'] += 1;
434
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
435
                        $reportsLastWeek['partners'][$record->extend_partner_id]['value'] += 1;
436
                    }
437
 
438
                    $reportsCapsuleResume['partners'][$record->extend_partner_id]['total'] += 1;
439
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
440
                        $reportsCapsuleResume['partners'][$record->extend_partner_id]['value'] += 1;
441
                    }
442
                }
443
 
444
                if($record->extend_sector_id) {
445
                    $reportsLastWeek['sectors'][$record->extend_sector_id]['total'] += 1;
446
                    $reportsStudentsTotal['sectors'][$record->extend_sector_id]['total'] += 1;
447
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
448
                        $reportsLastWeek['sectors'][$record->extend_sector_id]['value'] += 1;
449
                    }
450
 
451
                    $reportsCapsuleResume['sectors'][$record->extend_sector_id]['total'] += 1;
452
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
453
                        $reportsCapsuleResume['sectors'][$record->extend_sector_id]['value'] += 1;
454
                    }
455
                }
456
 
457
                if($record->extend_student_type_id) {
458
                    $reportsLastWeek['student_types'][$record->extend_student_type_id]['total'] += 1;
459
                    $reportsStudentsTotal['student_types'][$record->extend_student_type_id]['total'] += 1;
460
                    if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
461
                        $reportsLastWeek['student_types'][$record->extend_student_type_id]['value'] += 1;
462
                    }
463
 
464
                    $reportsCapsuleResume['student_types'][$record->extend_student_type_id]['total'] += 1;
465
                    if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
466
                        $reportsCapsuleResume['student_types'][$record->extend_student_type_id]['value'] += 1;
467
                    }
468
                }
469
            }
470
 
471
 
472
            /*
473
            header('Content-type: text/plain');
474
            print_r($reportsStudentsTotal); exit;
475
            */
476
 
477
 
478
            $this->layout()->setTemplate('layout/layout-backend.phtml');
479
            $viewModel = new ViewModel();
480
            $viewModel->setTemplate('leaders-linked/microlearning-reports/overview.phtml');
481
            $viewModel->setVariables([
482
                'reportsLastWeek'       => $reportsLastWeek,
483
                'reportsCapsuleResume'  => $reportsCapsuleResume,
484
                'reportsStudentsTotal'  => $reportsStudentsTotal,
485
                'reportStudents' => [
486
                    'total' => $studentsTotal,
487
                    'started' => $studentsStarted,
488
                    'withoutStarting' => $studentsWithoutStarting,
489
                ]
490
 
491
            ]);
492
            return $viewModel ;
493
        }
494
 
495
        return new JsonModel([
496
           'success' => false,
497
           'data' => 'ERROR_METHOD_NOT_ALLOWED'
498
        ]);
499
    }
500
 
2 efrain 501
    public function progressAction()
1 www 502
    {
503
 
504
 
505
        $currentUserPlugin = $this->plugin('currentUserPlugin');
506
        $currentUser = $currentUserPlugin->getUser();
507
        $currentCompany = $currentUserPlugin->getCompany();
508
 
509
 
510
        $request = $this->getRequest();
511
        if($request->isGet()) {
512
 
513
 
514
            $headers  = $request->getHeaders();
515
 
516
            $isJson = false;
517
            if($headers->has('Accept')) {
518
                $accept = $headers->get('Accept');
519
 
520
                $prioritized = $accept->getPrioritized();
521
 
522
                foreach($prioritized as $key => $value) {
523
                    $raw = trim($value->getRaw());
524
 
525
                    if(!$isJson) {
526
                        $isJson = strpos($raw, 'json');
527
                    }
528
 
529
                }
530
            }
531
 
532
            if($isJson) {
533
 
534
                $date = date('Y-m-d');
535
 
536
                $companyMicrolearningProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
537
                $companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
538
 
539
                $companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
540
 
541
                $companyMicrolearningSlideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
542
 
543
 
544
 
545
                $queryMapper = QueryMapper::getInstance($this->adapter);
546
 
547
                $selectCapsuleUser = $queryMapper->getSql()->select();
548
                $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')  ]);
549
                $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
550
                $selectCapsuleUser->where->equalTo('company_id', $currentCompany->id);
551
                $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
552
                ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
553
                ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
554
                ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
555
 
556
                //echo $select->getSqlString($this->adapter->platform); exit;
557
 
558
                $select = $queryMapper->getSql()->select();
559
                $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
560
                $select->from(UserMapper::_TABLE);
561
                $select->where->in('id', $selectCapsuleUser);
562
                $select->order(['first_name', 'last_name']);
563
 
564
 
565
 
566
                $students = [];
567
                $records = $queryMapper->fetchAll($select);
568
                foreach($records as $record)
569
                {
570
                    $capsules               = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($record['id']);
571
                    $totalCapsules          = count($capsules);
572
                    $totalCapsulesStarted   = 0;
573
                    $totalCapsulesCompleted = 0;
574
 
575
                    $totalSlides            = 0;
576
                    $totalSlidesStarted     = 0;
577
                    $totalSlidesCompleted   = 0;
578
 
579
                    foreach($capsules as $capsule)
580
                    {
581
                        $userProgress = $companyMicrolearningProgressMapper->fetchOneByUseridAndCapsuleId($capsule->user_id, $capsule->capsule_id);
582
                        if($userProgress) {
583
                            $totalCapsulesStarted++;
584
                            if($userProgress->completed) {
585
                                $totalCapsulesCompleted++;
586
                            }
587
                        }
588
 
589
                        $slides = $companyMicrolearningSlideMapper->fetchAllByCompanyIdAndTopicIdAndCapsuleId($capsule->company_id, $capsule->topic_id, $capsule->capsule_id);
590
                        $totalSlides = count($slides);
591
                        foreach($slides as $slide)
592
                        {
593
 
594
                             $userProgress = $companyMicrolearningProgressMapper->fetchOneByUserIdAndSlideId($capsule->user_id, $slide->id);
595
                             if($userProgress) {
596
 
597
                                 $totalSlidesStarted++;
598
                                 if($userProgress->completed) {
599
                                     $totalSlidesCompleted++;
600
                                 }
601
 
602
                             }
603
                        }
604
 
605
 
606
                    }
607
 
608
 
609
 
610
                    $student = [
611
                        'uuid' => $record['uuid'],
612
                        'first_name' => $record['first_name'],
613
                        'last_name' => $record['last_name'],
614
                        'email' => $record['email'],
615
                        'total_capsules' => $totalCapsules,
616
                        'total_capsules_incomplete' => ( $totalCapsules - $totalCapsulesCompleted ),
617
                        'total_capsules_started' => $totalCapsulesStarted,
618
                        'total_capsules_completed' => $totalCapsulesCompleted,
619
                        'total_slides' => $totalSlides,
620
                        'total_slides_started' => $totalSlidesStarted,
621
                        'total_slides_completed' => $totalSlidesCompleted,
622
                        'totql_slides_incompleted' => ($totalSlides - $totalSlidesCompleted ) ,
623
                        'first_date' => '',
624
                        'first_time' => '',
625
                        'last_date' => '',
626
                        'last_time' => '',
627
                    ];
628
 
629
                    $first_added_on = $companyMicrolearningUserLogMapper->fetchFirstDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
630
                    if($first_added_on) {
631
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $first_added_on);
632
                        if($dt) {
633
                            $student['first_date'] = $dt->format('d/m/Y');
634
                            $student['first_time'] = $dt->format('h:i a');
635
                        }
636
                    }
637
 
638
                    $last_added_on  = $companyMicrolearningUserLogMapper->fetchLastDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
639
                    if($last_added_on) {
640
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $last_added_on);
641
                        if($dt) {
642
                            $student['last_date'] = $dt->format('d/m/Y');
643
                            $student['last_time'] = $dt->format('h:i a');
644
                        }
645
                    }
646
 
647
                    array_push($students, $student);
648
 
649
 
650
                }
651
 
652
 
653
 
654
 
655
                return new JsonModel([
656
                    'success' => true,
657
                    'data' => $students
658
 
659
                ]);
660
 
661
            } else {
662
 
663
 
664
 
665
                $form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
666
 
667
 
668
                $this->layout()->setTemplate('layout/layout-backend.phtml');
669
                $viewModel = new ViewModel();
2 efrain 670
                $viewModel->setTemplate('leaders-linked/microlearning-reports/progress.phtml');
1 www 671
                $viewModel->setVariables([
672
                    'form' => $form
673
                ]);
674
                return $viewModel ;
675
            }
676
        }
677
 
678
        return new JsonModel([
679
            'success' => false,
680
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
681
        ]);
682
    }
2 efrain 683
 
684
    public function devicesAction()
685
    {
686
 
687
 
688
        $currentUserPlugin = $this->plugin('currentUserPlugin');
689
        $currentUser = $currentUserPlugin->getUser();
690
        $currentCompany = $currentUserPlugin->getCompany();
691
 
692
 
693
        $request = $this->getRequest();
694
        if($request->isGet()) {
695
 
696
 
697
            $headers  = $request->getHeaders();
698
 
699
            $isJson = false;
700
            if($headers->has('Accept')) {
701
                $accept = $headers->get('Accept');
702
 
703
                $prioritized = $accept->getPrioritized();
704
 
705
                foreach($prioritized as $key => $value) {
706
                    $raw = trim($value->getRaw());
707
 
708
                    if(!$isJson) {
709
                        $isJson = strpos($raw, 'json');
710
                    }
711
 
712
                }
713
            }
714
 
715
            if($isJson) {
716
 
717
                $date = date('Y-m-d');
718
                $deviceMapper = DeviceMapper::getInstance($this->adapter);
719
 
720
 
721
                $queryMapper = QueryMapper::getInstance($this->adapter);
722
 
723
                $selectCapsuleUser = $queryMapper->getSql()->select();
724
                $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')  ]);
725
                $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
726
                $selectCapsuleUser->where->equalTo('company_id', $currentCompany->id);
727
                $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
728
                ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
729
                ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
730
                ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
731
 
732
                //echo $select->getSqlString($this->adapter->platform); exit;
733
 
734
                $select = $queryMapper->getSql()->select();
735
                $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
736
                $select->from(UserMapper::_TABLE);
737
                $select->where->in('id', $selectCapsuleUser);
738
                $select->order(['first_name', 'last_name']);
739
 
740
 
741
 
742
                $students = [];
743
                $records = $queryMapper->fetchAll($select);
744
                foreach($records as $record)
745
                {
746
 
747
 
748
                    $record_devices = $deviceMapper->fetchAllByUserId($record['id']);
749
 
750
                    $devices = [];
751
                    foreach($record_devices as $device)
752
                    {
753
                        /*if($device->application_id != Application::LEADERSLINKED) {
754
                            continue;
755
                        }*/
756
 
757
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $device->updated_on);
758
 
759
                        array_push($devices, [
760
                            'brand' => $device->brand,
761
                            'manufacturer' => $device->manufacturer,
762
                            'model' => $device->model,
763
                            'platform' => $device->platform,
764
                            'version' => $device->version,
765
                            'token' => $device->token ? 'LABEL_YES' : 'LABEL_NO',
766
                            'updated_on' => $dt->format('d/m/Y h:i a')
767
                        ]);
768
                    }
769
 
770
 
771
                    $student = [
772
                        'uuid' => $record['uuid'],
773
                        'first_name' => $record['first_name'],
774
                        'last_name' => $record['last_name'],
775
                        'email' => $record['email'],
776
                        'devices' => $devices
777
                    ];
778
 
779
                    array_push($students, $student);
780
 
781
 
782
                }
783
 
784
 
785
 
786
 
787
                return new JsonModel([
788
                    'success' => true,
789
                    'data' => $students
790
 
791
                ]);
792
 
793
            } else {
794
 
795
 
796
 
797
                $form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
798
 
799
 
800
                $this->layout()->setTemplate('layout/layout-backend.phtml');
801
                $viewModel = new ViewModel();
802
                $viewModel->setTemplate('leaders-linked/microlearning-reports/devices.phtml');
803
                $viewModel->setVariables([
804
                    'form' => $form
805
                ]);
806
                return $viewModel ;
807
            }
808
        }
809
 
810
        return new JsonModel([
811
            'success' => false,
812
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
813
        ]);
814
    }
1 www 815
 
816
}