Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 625 Rev 626
Línea 1... Línea 1...
1
<?php
1
<?php
2
declare(strict_types=1);
2
declare(strict_types=1);
Línea 3... Línea 3...
3
 
3
 
Línea 4... Línea -...
4
namespace LeadersLinked\Controller;
-
 
5
 
-
 
6
use Laminas\Db\Adapter\AdapterInterface;
4
namespace LeadersLinked\Controller;
7
 
-
 
8
use Laminas\Mvc\Controller\AbstractActionController;
-
 
9
use Laminas\Log\LoggerInterface;
5
 
Línea 10... Línea 6...
10
use Laminas\View\Model\ViewModel;
6
use Laminas\Mvc\Controller\AbstractActionController;
11
use Laminas\View\Model\JsonModel;
7
use Laminas\View\Model\JsonModel;
12
 
8
 
13
use LeadersLinked\Mapper\QueryMapper;
-
 
14
use LeadersLinked\Mapper\CompanyMapper;
9
use LeadersLinked\Mapper\QueryMapper;
15
use LeadersLinked\Mapper\MicrolearningTopicMapper;
-
 
16
use LeadersLinked\Mapper\MicrolearningCapsuleMapper;
-
 
17
use LeadersLinked\Model\MicrolearningCapsule;
10
use LeadersLinked\Mapper\CompanyMapper;
18
use LeadersLinked\Model\MicrolearningCapsuleUser;
11
use LeadersLinked\Mapper\MicrolearningTopicMapper;
19
use LeadersLinked\Mapper\MicrolearningCapsuleUserMapper;
12
use LeadersLinked\Model\MicrolearningTopic;
20
use LeadersLinked\Mapper\MicrolearningUserMapper;
13
use LeadersLinked\Mapper\MicrolearningUserMapper;
21
use LeadersLinked\Model\MicrolearningUser;
14
use LeadersLinked\Model\MicrolearningUser;
22
use LeadersLinked\Mapper\EngagementRewardMapper;
15
use LeadersLinked\Mapper\EngagementRewardMapper;
23
use LeadersLinked\Model\EngagementReward;
16
use LeadersLinked\Model\EngagementReward;
Línea 24... Línea 17...
24
use LeadersLinked\Library\Functions;
17
use LeadersLinked\Library\Functions;
25
use LeadersLinked\Library\Storage;
18
use LeadersLinked\Library\Storage;
26
use LeadersLinked\Mapper\MicrolearningTopicCapsuleMapper;
19
use LeadersLinked\Model\MicrolearningTopicUser;
27
 
20
 
Línea 147... Línea 140...
147
            }
140
            }
Línea 148... Línea 141...
148
            
141
            
Línea 149... Línea 142...
149
            
142
            
150
        } 
143
        } 
151
        
144
        
-
 
145
        if($entity == 'topics') {
-
 
146
            $microlearningTopicUserMapper = MicrolearningTopicUserMapper::getInstance($this->adapter);
-
 
147
            $path = $storage->getPathMicrolearningTopic();
-
 
148
            
-
 
149
            // Obtener las cápsulas públicas y gratuitas
-
 
150
            $accessGrantedIds = new MicrolearningUserAccessGrantedIds();
-
 
151
 
-
 
152
            $topicUserRecords = $microlearningTopicUserMapper->fetchAllActiveByUserId($currentUser->id);
-
 
153
 
-
 
154
            // Obtener las cápsulas públicas y gratuitas
-
 
155
            foreach($topicUserRecords as $topicUserRecord) {
-
 
156
                if(!in_array($topicUserRecord->company_id, $accessGrantedIds->companies)) {
-
 
157
                    array_push($accessGrantedIds->companies, $topicUserRecord->company_id);
-
 
158
                }
-
 
159
                if(!in_array($topicUserRecord->topic_id, $accessGrantedIds->topics)) {
-
 
160
                    array_push($accessGrantedIds->topics, $topicUserRecord->topic_id);
-
 
161
                }
-
 
162
                if(!in_array($topicUserRecord->topic_id, $accessGrantedIds->topics)) {
152
        if($entity == 'capsules') {
163
                    array_push($accessGrantedIds->topics, $topicUserRecord->topic_id);
153
            $microlearningCapsuleUserMapper = MicrolearningCapsuleUserMapper::getInstance($this->adapter);
164
                }
154
            $path = $storage->getPathMicrolearningCapsule();
165
            }
155
            
166
 
156
            $queryMapper = QueryMapper::getInstance($this->adapter);
167
            $queryMapper = QueryMapper::getInstance($this->adapter);
157
            $select = $queryMapper->getSql()->select();
-
 
158
            $select->columns(['id', 'uuid', 'name', 'status', 'image', 'privacy', 'type', 'marketplace']);
168
            $select = $queryMapper->getSql()->select();
159
            $select->from(['c' => MicrolearningCapsuleMapper::_TABLE]);
169
            $select->columns(['id', 'uuid', 'name', 'status', 'image', 'privacy', 'type', 'marketplace']);
160
            $select->join(['t' => MicrolearningTopicMapper::_TABLE], ' c.topic_id = t.id ', ['topic_uuid' => 'uuid']);
170
            $select->from(['t' => MicrolearningTopicMapper::_TABLE]);
161
            $select->join(['o' => CompanyMapper::_TABLE], ' c.company_id = o.id ', ['company_uuid' => 'uuid']);
171
            $select->join(['o' => CompanyMapper::_TABLE], ' c.company_id = o.id ', ['company_uuid' => 'uuid']);
162
            $select->where->equalTo('c.privacy', MicrolearningCapsule::PRIVACY_PUBLIC);
172
            $select->where->equalTo('c.privacy', MicrolearningTopic::PRIVACY_PUBLIC);
163
            $select->where->equalTo('c.type', MicrolearningCapsule::TYPE_FREE);
173
            $select->where->equalTo('c.type', MicrolearningTopic::TYPE_FREE);
164
            $select->where->equalTo('c.status', MicrolearningCapsule::STATUS_ACTIVE);
174
            $select->where->equalTo('c.status', MicrolearningTopic::STATUS_ACTIVE);
165
            if($search) {
175
            if($search) {
Línea 172... Línea 182...
172
            $records = $queryMapper->fetchAll($select);
182
            $records = $queryMapper->fetchAll($select);
Línea 173... Línea 183...
173
 
183
 
174
            $items = [];
184
            $items = [];
175
            foreach($records as $record)
185
            foreach($records as $record)
176
            {
186
            {
177
                $capsuleUser = $microlearningCapsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $record['id']);
187
                $topicUser = $microlearningTopicUserMapper->fetchOneByUserIdAndTopicId($currentUser->id, $record['id']);
178
                
188
 
179
                $params = [
189
                $params = [
180
                    'company_id' => $record['company_uuid'], 
-
 
181
                    'topic_id' => $record['topic_uuid'], 
190
                    'company_uuid' => $record['company_uuid'], 
182
                    'capsule_id' => $record['uuid']
191
                    'topic_uuid' => $record['uuid']
Línea 183... Línea 192...
183
                ];
192
                ];
184
                
193
                
185
                $item = [
194
                $item = [
186
                    'name' => $record['name'],
195
                    'name' => $record['name'],
187
                    'image' => $storage->getGenericImage($path, $record['uuid'],  $record['marketplace']),
196
                    'image' => $storage->getGenericImage($path, $record['uuid'],  $record['marketplace']),
188
                    'status' => $capsuleUser ? 'LABEL_ENROLLED' : 'LABEL_AVAILABLE',
197
                    'status' => $topicUser ? 'LABEL_ENROLLED' : 'LABEL_AVAILABLE',
Línea 189... Línea 198...
189
                    'link_enroll' => $capsuleUser ? '' : $this->url()->fromRoute('marketplace/enroll', $params), 
198
                    'link_enroll' => $topicUser ? '' : $this->url()->fromRoute('marketplace/enroll', $params), 
190
                ];
199
                ];
191
                
200
                
Línea 207... Línea 216...
207
        $request = $this->getRequest();
216
        $request = $this->getRequest();
208
        if($request->isPost()) {
217
        if($request->isPost()) {
209
            $currentUserPlugin = $this->plugin('currentUserPlugin');
218
            $currentUserPlugin = $this->plugin('currentUserPlugin');
210
            $currentUser = $currentUserPlugin->getUser();
219
            $currentUser = $currentUserPlugin->getUser();
Línea 211... Línea 220...
211
            
220
            
212
            $company_id = $this->params()->fromRoute('company_id');
221
            $company_uuid = $this->params()->fromRoute('company_uuid');
213
            $topic_id = $this->params()->fromRoute('topic_id');
-
 
Línea 214... Línea 222...
214
            $capsule_id = $this->params()->fromRoute('capsule_id');
222
            $topic_uuid = $this->params()->fromRoute('topic_uuid');
215
            
223
            
-
 
224
            $companyMapper = CompanyMapper::getInstance($this->adapter);
216
            $companyMapper = CompanyMapper::getInstance($this->adapter);
225
            $company = $companyMapper->fetchOneByUuid($company_uuid);
217
            $company = $companyMapper->fetchOneByUuid($company_id);
-
 
-
 
226
 
218
            if(!$company) {
227
            if(!$company) {
219
                
228
                $this->logger->err('ERROR_COMPANY_NOT_FOUND', ['company_uuid' => $company_uuid]);
220
                return new JsonModel([
229
                return new JsonModel([
221
                    'success'   => false,
230
                    'success'   => false,
222
                    'data'   => 'ERROR_COMPANY_NOT_FOUND'
231
                    'data'   => 'ERROR_COMPANY_NOT_FOUND'
Línea 223... Línea 232...
223
                ]);
232
                ]);
224
            }
233
            }
-
 
234
            
225
            
235
            $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
226
            $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
236
            $topic = $topicMapper->fetchOneByUuid($topic_uuid);
227
            $topic = $topicMapper->fetchOneByUuid($topic_id);
237
 
228
            if(!$topic) {
238
            if(!$topic) {
229
                return new JsonModel([
239
                return new JsonModel([
Línea 237... Línea 247...
237
                    'success'   => false,
247
                    'success'   => false,
238
                    'data'   => 'ERROR_UNAUTHORIZED'
248
                    'data'   => 'ERROR_UNAUTHORIZED'
239
                ]);
249
                ]);
240
            }
250
            }
Línea 241... Línea -...
241
            
-
 
242
            $capsuleMapper = MicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
243
            $capsule = $capsuleMapper->fetchOneByUuid($capsule_id);
-
 
244
            if(!$capsule) {
-
 
245
                return new JsonModel([
-
 
246
                    'success'   => false,
-
 
247
                    'data'   => 'ERROR_CAPSULE_NOT_FOUND'
-
 
248
                ]);
-
 
249
            }
-
 
250
            
251
            
251
            $topicCapsuleMapper = MicrolearningTopicCapsuleMapper::getInstance($this->adapter);
252
            if($topic->status != MicrolearningTopic::STATUS_ACTIVE || $topic->privacy != MicrolearningTopic::PRIVACY_PUBLIC || $topic->type != MicrolearningTopic::TYPE_FREE) {
252
            $topicCapsule = $topicCapsuleMapper->fetchOneByTopicIdAndCapsuleId($topic->id, $capsule->id);
-
 
253
            
-
 
254
            if(!$topicCapsule) {
-
 
255
                return new JsonModel([
-
 
256
                    'success'   => false,
-
 
257
                    'data'   => 'ERROR_UNAUTHORIZED'
-
 
258
                ]);
-
 
259
            }
-
 
260
            
-
 
261
            if($capsule->status != MicrolearningCapsule::STATUS_ACTIVE 
-
 
262
                || $capsule->privacy != MicrolearningCapsule::PRIVACY_PUBLIC
-
 
263
                || $capsule->type != MicrolearningCapsule::TYPE_FREE) {
-
 
264
                   
253
                $this->logger->err('ERROR_UNAUTHORIZED', ['company_id' => $company->id, 'topic_id' => $topic->id]);
265
                return new JsonModel([
254
                return new JsonModel([
266
                    'success'   => false,
255
                    'success'   => false,
267
                    'data'   => 'ERROR_UNAUTHORIZED'
256
                    'data'   => 'ERROR_UNAUTHORIZED'
268
                ]);
257
                ]);
Línea 269... Línea 258...
269
            }
258
            }
270
        
259
        
Línea 271... Línea 260...
271
            
260
            
272
            $capsuleUserMapper = MicrolearningCapsuleUserMapper::getInstance($this->adapter);
261
            $topicUserMapper = MicrolearningTopicUserMapper::getInstance($this->adapter);
273
            $capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);
262
            $topicUser = $topicUserMapper->fetchOneByUserIdAndTopicId($currentUser->id, $topic->id);
274
            
263
            
275
            if($capsuleUser) {
264
            if($topicUser) {
276
                return new JsonModel([
265
                return new JsonModel([
Línea 277... Línea 266...
277
                    'success'   => false,
266
                    'success'   => false,
278
                    'data'   => 'ERROR_UNAUTHORIZED'
267
                    'data'   => 'ERROR_UNAUTHORIZED'
279
                ]);
268
                ]);
280
            }
-
 
281
            
269
            }
282
            $capsuleUser = new MicrolearningCapsuleUser();
270
            
Línea 283... Línea 271...
283
            $capsuleUser->company_id = $company->id;
271
            $topicUser = new MicrolearningTopicUser();
-
 
272
            $topicUser->company_id = $company->id;
284
            $capsuleUser->topic_id = $topic->id;
273
            $topicUser->topic_id = $topic->id;
285
            $capsuleUser->capsule_id = $capsule->id;
-
 
286
            $capsuleUser->user_id = $currentUser->id;
-
 
287
            $capsuleUser->access = MicrolearningCapsuleUser::ACCESS_UNLIMITED;
274
            $topicUser->user_id = $currentUser->id;
288
            
275
            $topicUser->access = MicrolearningTopicUser::ACCESS_UNLIMITED;
289
            if($capsuleUserMapper->insert($capsuleUser)) {
276
            
-
 
277
            if($topicUserMapper->insert($topicUser)) {
290
                
278
                $topicUser = $topicUserMapper->fetchOne($topic->id);
291
                
279
 
292
                $capsuleUser = $capsuleUserMapper->fetchOne($capsule->id);
-
 
293
                if($capsuleUser) {
280
                if($topicUser) {
-
 
281
                    $microlearningUserMapper = MicrolearningUserMapper::getInstance($this->adapter);
294
                    $microlearningUserMapper = MicrolearningUserMapper::getInstance($this->adapter);
282
                    $microlearningUser = $microlearningUserMapper->fetchOneByUserIdAndCompanyId($topicUser->user_id, $topicUser->company_id);
295
                    $microlearningUser = $microlearningUserMapper->fetchOneByUserIdAndCompanyId($capsuleUser->user_id, $capsuleUser->company_id);
283
 
296
                    if($microlearningUser) {
284
                    if($microlearningUser) {
297
                        $microlearningUser->updated_on = $capsuleUser->updated_on;
285
                        $microlearningUser->updated_on = $topicUser->updated_on;
298
                        $microlearningUserMapper->update($microlearningUser);
286
 
299
                        
287
                        $microlearningUserMapper->update($microlearningUser);    
Línea 300... Línea 288...
300
                    } else {
288
                    } else {
301
                        $microlearningUser = new MicrolearningUser();
289
                        $microlearningUser = new MicrolearningUser();
302
                        $microlearningUser->company_id = $capsuleUser->company_id;
290
                        $microlearningUser->company_id = $topicUser->company_id;
303
                        $microlearningUser->user_id = $capsuleUser->user_id;
-
 
304
                        $microlearningUser->added_on = $capsuleUser->added_on;
-
 
305
                        $microlearningUser->updated_on = $capsuleUser->updated_on;
-
 
306
                        
-
 
307
                        $microlearningUserMapper->insert($microlearningUser);
-
 
308
                    } 
-
 
309
                }
-
 
310
                
-
 
311
                
-
 
312
                
-
 
Línea 313... Línea 291...
313
     
291
                        $microlearningUser->user_id = $topicUser->user_id;
314
                
292
                        $microlearningUser->added_on = $topicUser->added_on;
315
                
293
                        $microlearningUser->updated_on = $topicUser->updated_on;
316
                
294
                        
Línea 327... Línea 305...
327
                    'success'   => false,
305
                    'success'   => false,
328
                    'data'   => 'ERROR_UNAUTHORIZED'
306
                    'data'   => 'ERROR_UNAUTHORIZED'
329
                ]);
307
                ]);
330
            }
308
            }
Línea 331... Línea -...
331
            
-
 
332
            
-
 
333
            
-
 
334
            
-
 
335
            
-
 
336
            
309
            
337
        } else {
310
        } else {
338
            return new JsonModel([
311
            return new JsonModel([
339
                'success' => false,
312
                'success' => false,
340
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
313
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
341
            ]);
314
            ]);
342
        }
-
 
343
     
315
        }
Línea 344... Línea 316...
344
    }
316
    }
345
    
317
    
346
    public function claimAction()
318
    public function claimAction()
Línea 375... Línea 347...
375
        
347
        
376
        return new JsonModel([
348
        return new JsonModel([
377
            'success' => true,
349
            'success' => true,
378
            'data' => $data
350
            'data' => $data
379
        ]);
351
        ]);
380
    }
-
 
381
    
352
    }