Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 17153 | Rev 17155 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 17153 Rev 17154
Línea 6... Línea 6...
6
use Laminas\Db\Adapter\AdapterInterface;
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Log\LoggerInterface;
7
use Laminas\Log\LoggerInterface;
8
use Laminas\Mvc\Controller\AbstractActionController;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\View\Model\ViewModel;
9
use Laminas\View\Model\ViewModel;
10
use Laminas\View\Model\JsonModel;
10
use Laminas\View\Model\JsonModel;
11
use LeadersLinked\Mapper\MicrolearningTopicMapper;
-
 
12
use LeadersLinked\Mapper\MicrolearningCapsuleMapper;
-
 
13
use LeadersLinked\Form\Microlearning\TopicCapsuleForm;
-
 
14
use LeadersLinked\Form\Microlearning\PushMicrolearningNotificationForm;
-
 
15
use LeadersLinked\Mapper\QueryMapper;
-
 
16
use LeadersLinked\Mapper\MicrolearningCapsuleUserMapper;
-
 
17
use LeadersLinked\Mapper\UserMapper;
-
 
18
use Laminas\Hydrator\ArraySerializableHydrator;
11
use Laminas\Hydrator\ArraySerializableHydrator;
19
use Laminas\Db\ResultSet\HydratingResultSet;
12
use Laminas\Db\ResultSet\HydratingResultSet;
20
use Laminas\Paginator\Adapter\DbSelect;
13
use Laminas\Paginator\Adapter\DbSelect;
21
use Laminas\Paginator\Paginator;
14
use Laminas\Paginator\Paginator;
-
 
15
use Laminas\Mvc\I18n\Translator;
-
 
16
use LeadersLinked\Mapper\MicrolearningTopicMapper;
22
use LeadersLinked\Model\MicrolearningCapsuleUser;
17
use LeadersLinked\Mapper\MicrolearningCapsuleMapper;
-
 
18
use LeadersLinked\Mapper\MicrolearningTopicCapsuleMapper;
-
 
19
use LeadersLinked\Mapper\MicrolearningCapsuleUserMapper;
-
 
20
use LeadersLinked\Mapper\MicrolearningUserMapper;
-
 
21
use LeadersLinked\Mapper\UserMapper;
-
 
22
use LeadersLinked\Mapper\QueryMapper;
23
use LeadersLinked\Mapper\ApplicationMapper;
23
use LeadersLinked\Mapper\ApplicationMapper;
24
use LeadersLinked\Mapper\PushMapper;
24
use LeadersLinked\Mapper\PushMapper;
25
use LeadersLinked\Mapper\PushTemplateMapper;
25
use LeadersLinked\Mapper\PushTemplateMapper;
26
use LeadersLinked\Mapper\DeviceHistoryMapper;
26
use LeadersLinked\Mapper\DeviceHistoryMapper;
27
use LeadersLinked\Model\Push;
27
use LeadersLinked\Mapper\ApplicationVariantMapper;
28
use LeadersLinked\Model\Application;
28
use LeadersLinked\Mapper\NotificationMapper;
29
use LeadersLinked\Form\Microlearning\CapsuleCustomerUploadForm;
-
 
30
use PhpOffice\PhpSpreadsheet\IOFactory;
-
 
31
use LeadersLinked\Model\User;
29
use LeadersLinked\Mapper\NetworkMapper;
32
use LeadersLinked\Model\UserType;
30
use LeadersLinked\Mapper\CompanyMapper;
33
use LeadersLinked\Model\UserPassword;
31
use LeadersLinked\Mapper\CompanyFollowerMapper;
34
use LeadersLinked\Mapper\MicrolearningUserMapper;
32
use LeadersLinked\Mapper\ConnectionMapper;
35
use LeadersLinked\Mapper\UserPasswordMapper;
33
use LeadersLinked\Mapper\UserPasswordMapper;
36
use LeadersLinked\Mapper\MicrolearningExtendUserMapper;
34
use LeadersLinked\Mapper\MicrolearningExtendUserMapper;
37
use LeadersLinked\Mapper\MicrolearningExtendUserCompanyMapper;
35
use LeadersLinked\Mapper\MicrolearningExtendUserCompanyMapper;
38
use LeadersLinked\Mapper\MicrolearningExtendUserFunctionMapper;
36
use LeadersLinked\Mapper\MicrolearningExtendUserFunctionMapper;
39
use LeadersLinked\Mapper\MicrolearningExtendUserGroupMapper;
37
use LeadersLinked\Mapper\MicrolearningExtendUserGroupMapper;
40
use LeadersLinked\Mapper\MicrolearningExtendUserInstitutionMapper;
38
use LeadersLinked\Mapper\MicrolearningExtendUserInstitutionMapper;
41
use LeadersLinked\Mapper\MicrolearningExtendUserProgramMapper;
39
use LeadersLinked\Mapper\MicrolearningExtendUserProgramMapper;
42
use LeadersLinked\Mapper\MicrolearningExtendUserPartnerMapper;
40
use LeadersLinked\Mapper\MicrolearningExtendUserPartnerMapper;
43
use LeadersLinked\Mapper\MicrolearningExtendUserSectorMapper;
41
use LeadersLinked\Mapper\MicrolearningExtendUserSectorMapper;
44
use LeadersLinked\Mapper\MicrolearningExtendUserStudentTypeMapper;
42
use LeadersLinked\Mapper\MicrolearningExtendUserStudentTypeMapper;
-
 
43
use LeadersLinked\Mapper\MicrolearningExtendUserCountryMapper;
-
 
44
use LeadersLinked\Model\MicrolearningCapsuleUser;
-
 
45
use LeadersLinked\Model\MicrolearningUser;
-
 
46
use LeadersLinked\Model\Push;
-
 
47
use LeadersLinked\Model\Application;
-
 
48
use LeadersLinked\Model\Notification;
-
 
49
use LeadersLinked\Model\Network;
-
 
50
use LeadersLinked\Model\Connection;
-
 
51
use LeadersLinked\Model\CompanyFollower;
-
 
52
use LeadersLinked\Model\User;
-
 
53
use LeadersLinked\Model\UserType;
-
 
54
use LeadersLinked\Model\UserPassword;
45
use LeadersLinked\Model\MicrolearningExtendUser;
55
use LeadersLinked\Model\MicrolearningExtendUser;
46
use LeadersLinked\Model\MicrolearningExtendUserCompany;
56
use LeadersLinked\Model\MicrolearningExtendUserCompany;
47
use LeadersLinked\Model\MicrolearningExtendUserFunction;
57
use LeadersLinked\Model\MicrolearningExtendUserFunction;
48
use LeadersLinked\Model\MicrolearningExtendUserGroup;
58
use LeadersLinked\Model\MicrolearningExtendUserGroup;
49
use LeadersLinked\Model\MicrolearningExtendUserInstitution;
59
use LeadersLinked\Model\MicrolearningExtendUserInstitution;
50
use LeadersLinked\Model\MicrolearningExtendUserProgram;
60
use LeadersLinked\Model\MicrolearningExtendUserProgram;
51
use LeadersLinked\Model\MicrolearningExtendUserPartner;
61
use LeadersLinked\Model\MicrolearningExtendUserPartner;
52
use LeadersLinked\Model\MicrolearningExtendUserSector;
62
use LeadersLinked\Model\MicrolearningExtendUserSector;
53
use LeadersLinked\Model\MicrolearningExtendUserStudentType;
63
use LeadersLinked\Model\MicrolearningExtendUserStudentType;
54
use LeadersLinked\Model\MicrolearningUser;
-
 
55
use LeadersLinked\Model\Notification;
-
 
56
use LeadersLinked\Mapper\ApplicationVariantMapper;
-
 
57
use LeadersLinked\Mapper\MicrolearningExtendUserCountryMapper;
-
 
58
use LeadersLinked\Model\MicrolearningExtendUserCountry;
64
use LeadersLinked\Model\MicrolearningExtendUserCountry;
59
use LeadersLinked\Model\Network;
-
 
60
use LeadersLinked\Mapper\CompanyMapper;
-
 
61
use LeadersLinked\Mapper\NetworkMapper;
-
 
62
use LeadersLinked\Mapper\CompanyFollowerMapper;
65
use LeadersLinked\Form\Microlearning\TopicCapsuleForm;
63
use LeadersLinked\Mapper\ConnectionMapper;
66
use LeadersLinked\Form\Microlearning\PushMicrolearningNotificationForm;
64
use LeadersLinked\Model\Connection;
-
 
65
use LeadersLinked\Model\CompanyFollower;
67
use LeadersLinked\Form\Microlearning\CapsuleCustomerUploadForm;
66
use LeadersLinked\Library\Functions;
68
use LeadersLinked\Library\Functions;
67
use LeadersLinked\Cache\CacheInterface;
69
use LeadersLinked\Cache\CacheInterface;
68
use LeadersLinked\Cache\CacheImpl;
70
use LeadersLinked\Cache\CacheImpl;
69
use LeadersLinked\Mapper\NotificationMapper;
71
use PhpOffice\PhpSpreadsheet\IOFactory;
70
use LeadersLinked\Mapper\MicrolearningTopicCapsuleMapper;
-
 
71
use Laminas\Mvc\I18n\Translator;
-
 
72
 
-
 
Línea 73... Línea 72...
73
 
72
 
74
class MicrolearningAccessForStudentsController extends AbstractActionController
73
class MicrolearningAccessForStudentsController extends AbstractActionController
75
{
74
{
76
    /**
75
    /**
Línea 114... Línea 113...
114
        $this->translator = $translator;
113
        $this->translator = $translator;
115
    }
114
    }
Línea 116... Línea 115...
116
    
115
    
117
    public function indexAction()
116
    public function indexAction()
-
 
117
    {
118
    {
118
        try {
119
        $currentUserPlugin = $this->plugin('currentUserPlugin');
119
            $currentUserPlugin = $this->plugin('currentUserPlugin');
120
        $currentUser = $currentUserPlugin->getUser();
120
            $currentUser = $currentUserPlugin->getUser();
121
        $currentCompany = $currentUserPlugin->getCompany();
-
 
122
        
-
 
123
        $request = $this->getRequest();
-
 
124
        
-
 
125
        if($request->isGet())
-
 
126
        {
-
 
127
            $headers  = $request->getHeaders();
-
 
Línea 128... Línea -...
128
            $isJson = false;
-
 
129
            
121
            $currentCompany = $currentUserPlugin->getCompany();
130
            if($headers->has('Accept')) {
-
 
131
                $accept = $headers->get('Accept');
-
 
132
                $prioritized = $accept->getPrioritized();
-
 
133
                
-
 
134
                foreach($prioritized as $key => $value) {
-
 
135
                    $raw = trim($value->getRaw());
-
 
136
                    if(!$isJson) $isJson = strpos($raw, 'json');
-
 
Línea 137... Línea 122...
137
                }
122
            
138
            }
-
 
139
            
-
 
140
            if($isJson) {
-
 
141
                $topic_uuid     = Functions::sanitizeFilterString($this->params()->fromQuery('topic_uuid'));
-
 
142
                $capsule_uuid   = Functions::sanitizeFilterString($this->params()->fromQuery('capsule_uuid'));
-
 
143
                
-
 
144
                $data = [
-
 
145
                    'link_upload' => '',
-
 
146
                    'items' => [] ,
123
            $request = $this->getRequest();
147
                    'total' => 0,
-
 
148
                    'capsules' => []
-
 
149
                ];      
124
            
150
                
-
 
151
                if(!$topic_uuid) {
-
 
152
                    return new JsonModel([
125
            if($request->isGet())
153
                        'success' => true,
-
 
154
                        'data' => $data
126
            {
155
                    ]);     
-
 
156
                }              
-
 
157
                
127
                $headers  = $request->getHeaders();
158
                $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
-
 
159
                $topic = $topicMapper->fetchOneByUuid($topic_uuid);
128
                $isJson = false;
160
                if(!$topic) {
129
                
161
                    return new JsonModel([
-
 
162
                        'success' => true,
-
 
163
                        'data' => 'ERROR_TOPIC_NOT_FOUND'
-
 
164
                    ]);
-
 
165
                }
-
 
166
                
-
 
167
                if($topic->company_id != $currentCompany->id) {
-
 
168
                    return new JsonModel([
-
 
169
                        'success' => true,
-
 
170
                        'data' => 'ERROR_UNAUTHORIZED'
-
 
171
                    ]);
-
 
172
                }
-
 
173
                
-
 
174
                if(!$capsule_uuid) {
130
                if($headers->has('Accept')) {
175
                    $topicCapsuleMapper = MicrolearningTopicCapsuleMapper::getInstance($this->adapter);
-
 
176
                    $records = $topicCapsuleMapper->fetchAllByCompanyIdAndTopicId($topic->company_id, $topic->id);
131
                    $accept = $headers->get('Accept');
177
                    
-
 
178
                    $capsules = [];
-
 
179
                    foreach($records as $record)
132
                    $prioritized = $accept->getPrioritized();
180
                    {
133
                    
181
                        $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
134
                    foreach($prioritized as $key => $value) {
182
                        $capsule = $capsuleMapper->fetchOneById($record->capsule_id);
-
 
183
                        $capsules[ $capsule->uuid ] = $capsule->name;
-
 
184
                    }
-
 
185
                    
-
 
186
                    $data['capsules']  = $capsules;
-
 
187
                }
-
 
188
                
-
 
189
                if(!$capsule_uuid) {
-
 
190
                    return new JsonModel([
-
 
191
                        'success' => true,
-
 
192
                        'topic_uuid' => $topic->uuid,
-
 
193
                        'data' => $data
-
 
194
                    ]);
-
 
195
                    
-
 
196
                }
-
 
197
                
-
 
198
                $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
199
                $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
-
 
200
                
-
 
201
                
-
 
202
                
-
 
203
                if(!$capsule) {
-
 
204
                    return new JsonModel([
-
 
205
                        'success' => true,
-
 
206
                        'data' => 'ERROR_CAPSULE_NOT_FOUND'
-
 
207
                    ]);
-
 
208
                }
-
 
209
                
-
 
210
                if($capsule->topic_id != $topic->id) {
-
 
211
                    return new JsonModel([
-
 
212
                        'success' => true,
135
                        $raw = trim($value->getRaw());
Línea -... Línea 136...
-
 
136
                        if(!$isJson) $isJson = strpos($raw, 'json');
-
 
137
                    }
-
 
138
                }
-
 
139
                
-
 
140
                if($isJson) {
-
 
141
                    try {
-
 
142
                        $topic_uuid     = Functions::sanitizeFilterString($this->params()->fromQuery('topic_uuid'));
-
 
143
                        $capsule_uuid   = Functions::sanitizeFilterString($this->params()->fromQuery('capsule_uuid'));
-
 
144
                        
-
 
145
                        $data = [
-
 
146
                            'link_upload' => '',
-
 
147
                            'items' => [] ,
-
 
148
                            'total' => 0,
-
 
149
                            'capsules' => []
-
 
150
                        ];      
-
 
151
                        
-
 
152
                        if(!$topic_uuid) {
-
 
153
                            return new JsonModel([
-
 
154
                                'success' => true,
-
 
155
                                'data' => $data
-
 
156
                            ]);     
-
 
157
                        }              
-
 
158
                        
-
 
159
                        $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
-
 
160
                        if (!$topicMapper) {
-
 
161
                            throw new \Exception('Failed to initialize TopicMapper');
-
 
162
                        }
-
 
163
                        
-
 
164
                        $topic = $topicMapper->fetchOneByUuid($topic_uuid);
-
 
165
                        if(!$topic) {
-
 
166
                            return new JsonModel([
-
 
167
                                'success' => true,
-
 
168
                                'data' => 'ERROR_TOPIC_NOT_FOUND'
-
 
169
                            ]);
-
 
170
                        }
-
 
171
                        
-
 
172
                        if($topic->company_id != $currentCompany->id) {
-
 
173
                            return new JsonModel([
-
 
174
                                'success' => true,
-
 
175
                                'data' => 'ERROR_UNAUTHORIZED'
-
 
176
                            ]);
-
 
177
                        }
-
 
178
                        
-
 
179
                        if(!$capsule_uuid) {
-
 
180
                            $topicCapsuleMapper = MicrolearningTopicCapsuleMapper::getInstance($this->adapter);
-
 
181
                            $records = $topicCapsuleMapper->fetchAllByCompanyIdAndTopicId($topic->company_id, $topic->id);
-
 
182
                            
-
 
183
                            $capsules = [];
-
 
184
                            foreach($records as $record)
-
 
185
                            {
-
 
186
                                $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
187
                                $capsule = $capsuleMapper->fetchOneById($record->capsule_id);
-
 
188
                                $capsules[ $capsule->uuid ] = $capsule->name;
-
 
189
                            }
-
 
190
                            
-
 
191
                            $data['capsules']  = $capsules;
-
 
192
                        }
-
 
193
                        
-
 
194
                        if(!$capsule_uuid) {
-
 
195
                            return new JsonModel([
-
 
196
                                'success' => true,
-
 
197
                                'topic_uuid' => $topic->uuid,
-
 
198
                                'data' => $data
-
 
199
                            ]);
-
 
200
                            
-
 
201
                        }
-
 
202
                        
-
 
203
                        $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
204
                        $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
-
 
205
                        
-
 
206
                        
-
 
207
                        
-
 
208
                        if(!$capsule) {
-
 
209
                            return new JsonModel([
-
 
210
                                'success' => true,
-
 
211
                                'data' => 'ERROR_CAPSULE_NOT_FOUND'
-
 
212
                            ]);
-
 
213
                        }
-
 
214
                        
-
 
215
                        if($capsule->topic_id != $topic->id) {
-
 
216
                            return new JsonModel([
-
 
217
                                'success' => true,
Línea 320... Línea 335...
320
                        case MicrolearningCapsuleUser::ACCESS_CANCELLED :
335
                                    $details['access'] = 'LABEL_CANCELLED';
Línea 321... Línea 336...
321
                            
336
                                    $details['paid_from'] = $dt_paid_from->format('d/m/Y');
322
                            $date = date('Y-m-d');
337
                                    $details['paid_to'] = $dt_paid_to->format('d/m/Y');
Línea 323... Línea -...
323
                            if($allowCancel && $record['paid_from'] <= $date && $record['paid_to'] >= $date) {
-
 
324
                                $actions['link_reactive'] = $allowReactive ? $this->url()->fromRoute('microlearning/access-for-students/reactive', $params) : '';
338
                                    break;
325
                            }
339
                                    
326
                            
-
 
Línea -... Línea 340...
-
 
340
                            }
-
 
341
                            
-
 
342
                            $dt_added_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);
-
 
343
                            $details['added_on'] = $dt_added_on->format('d/m/Y h:i a');
-
 
344
                            
-
 
345
                            $dt_updated_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['updated_on']);
-
 
346
                            $details['updated_on'] = $dt_updated_on->format('d/m/Y h:i a');
-
 
347
                            
-
 
348
                            $item = [
-
 
349
                                'uuid' => $record['uuid'],
-
 
350
                                'first_name' => $record['first_name'],
-
 
351
                                'last_name' => $record['last_name'],
-
 
352
                                'email' => $record['email'],
-
 
353
                                'details' => $details,
-
 
354
                                'actions' => $actions
-
 
355
                            ];
-
 
356
                            
-
 
357
                            
-
 
358
                            array_push($items, $item);
-
 
359
                            
-
 
360
                            
-
 
361
                        }
-
 
362
                        
-
 
363
                        $data['items'] = $items;
-
 
364
                        $data['total'] = $paginator->getTotalItemCount();
-
 
365
                        
-
 
366
                        
-
 
367
                        return new JsonModel([
-
 
368
                            'success' => true,
-
 
369
                            'data' => $data
-
 
370
                        ]);
-
 
371
                    } catch (\Exception $e) {
-
 
372
                        $this->logger->err('Error in indexAction: ' . $e->getMessage());
-
 
373
                        return new JsonModel([
-
 
374
                            'success' => false,
-
 
375
                            'data' => 'An error occurred while processing your request'
-
 
376
                        ]);
-
 
377
                    }
327
                            $dt_paid_from = \DateTime::createFromFormat('Y-m-d', $record['paid_from']);
378
                } else {
Línea 328... Línea -...
328
                            $dt_paid_to = \DateTime::createFromFormat('Y-m-d', $record['paid_to']);
-
 
329
                            
-
 
330
                            $details['access'] = 'LABEL_CANCELLED';
-
 
331
                            $details['paid_from'] = $dt_paid_from->format('d/m/Y');
-
 
332
                            $details['paid_to'] = $dt_paid_to->format('d/m/Y');
-
 
Línea 333... Línea -...
333
                            break;
-
 
334
                            
379
                    $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
335
                    }
380
                    $topics = $topicMapper->fetchAllByCompanyId($currentCompany->id);
336
                    
381
                    
337
                    $dt_added_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);
-
 
338
                    $details['added_on'] = $dt_added_on->format('d/m/Y h:i a');
-
 
339
                    
-
 
340
                    $dt_updated_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['updated_on']);
-
 
Línea 341... Línea -...
341
                    $details['updated_on'] = $dt_updated_on->format('d/m/Y h:i a');
-
 
Línea -... Línea 382...
-
 
382
                    if($topics) {
-
 
383
                        $topic_id = $topics[0]->id;
-
 
384
                    }  else {
-
 
385
                        $topic_id = 0;
-
 
386
                    }
-
 
387
                    
-
 
388
                    
-
 
389
                    $form = new TopicCapsuleForm($this->adapter, $currentCompany->id, $topic_id);
Línea -... Línea 390...
-
 
390
                    $formPushNotification = new PushMicrolearningNotificationForm($this->adapter, $currentCompany->id);
342
                    
391
                    $formCapsuleCustomer = new CapsuleCustomerUploadForm();
Línea 343... Línea -...
343
                    $item = [
-
 
344
                        'uuid' => $record['uuid'],
-
 
345
                        'first_name' => $record['first_name'],
-
 
346
                        'last_name' => $record['last_name'],
-
 
347
                        'email' => $record['email'],
-
 
348
                        'details' => $details,
-
 
349
                        'actions' => $actions
-
 
350
                    ];
-
 
351
                    
392
                    
352
                    
-
 
353
                    array_push($items, $item);
-
 
354
                    
-
 
355
                    
-
 
356
                }
-
 
357
                
-
 
358
                $data['items'] = $items;
-
 
359
                $data['total'] = $paginator->getTotalItemCount();
-
 
360
                
-
 
361
                
-
 
362
                return new JsonModel([
-
 
363
                    'success' => true,
-
 
364
                    'data' => $data
-
 
365
                ]);
-
 
366
            } else {
-
 
367
                $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
-
 
368
                $topics = $topicMapper->fetchAllByCompanyId($currentCompany->id);
-
 
369
                
393
                    
370
                if($topics) {
-
 
371
                    $topic_id = $topics[0]->id;
-
 
372
                }  else {
394
                    
373
                    $topic_id = 0;
395
                    $this->layout()->setTemplate('layout/layout-backend');
374
                }
-
 
375
                
396
                    $viewModel = new ViewModel();
376
                
-
 
377
                $form = new TopicCapsuleForm($this->adapter, $currentCompany->id, $topic_id);
-
 
378
                $formPushNotification = new PushMicrolearningNotificationForm($this->adapter, $currentCompany->id);
397
                    $viewModel->setTemplate('leaders-linked/microlearning-access-for-students/index.phtml');
379
                $formCapsuleCustomer = new CapsuleCustomerUploadForm();
-
 
380
                
-
 
381
                
-
 
382
                
398
                    $viewModel->setVariables([
383
                $this->layout()->setTemplate('layout/layout-backend');
399
                        'form' => $form,
384
                $viewModel = new ViewModel();
400
                        'formPushNotification' => $formPushNotification,
385
                $viewModel->setTemplate('leaders-linked/microlearning-access-for-students/index.phtml');
401
                        'formCapsuleCustomer' => $formCapsuleCustomer
386
                $viewModel->setVariables([
402
                    ]);