Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 1323 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
280 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
 
7
use Laminas\Authentication\AuthenticationService;
8
use Laminas\Authentication\Result as AuthResult;
9
use Laminas\Db\Adapter\AdapterInterface;
10
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
11
use Laminas\Mvc\Controller\AbstractActionController;
12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\JsonModel;
14
 
15
use LeadersLinked\Authentication\AuthAdapter;
16
use LeadersLinked\Mapper\UserMapper;
17
use LeadersLinked\Mapper\EmailTemplateMapper;
18
use LeadersLinked\Model\User;
19
use LeadersLinked\Model\UserType;
20
 
21
use LeadersLinked\Library\AesCipher;
22
use LeadersLinked\Library\QueueEmail;
23
use LeadersLinked\Library\Functions;
24
use LeadersLinked\Model\EmailTemplate;
25
use LeadersLinked\Mapper\UserPasswordMapper;
26
use LeadersLinked\Mapper\DeviceMapper;
27
use LeadersLinked\Model\Device;
28
use LeadersLinked\Mapper\ApplicationMapper;
29
use LeadersLinked\Model\Application;
30
use LeadersLinked\Validator\PasswordStrengthCheck;
31
 
32
use LeadersLinked\Mapper\CompanyMapper;
33
use LeadersLinked\Model\Company;
34
use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;
35
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;
36
use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;
37
use LeadersLinked\Model\CompanyMicrolearningSlide;
38
use LeadersLinked\Mapper\CompanyMicrolearningUserLogMapper;
39
use LeadersLinked\Mapper\CompanyMicrolearningUserProgressMapper;
40
use LeadersLinked\Mapper\CompanyMicrolearningQuizMapper;
41
use LeadersLinked\Mapper\CompanyMicrolearningQuestionMapper;
42
use LeadersLinked\Mapper\CompanyMicrolearningAnswerMapper;
43
use LeadersLinked\Model\CompanyMicrolearningUserProgress;
44
use LeadersLinked\Model\CompanyMicrolearningUserLog;
45
use LeadersLinked\Mapper\DeviceHistoryMapper;
46
use LeadersLinked\Model\DeviceHistory;
47
use LeadersLinked\Mapper\PushMapper;
48
use LeadersLinked\Model\Push;
49
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleUserMapper;
50
use LeadersLinked\Mapper\CompanyServiceMapper;
51
use LeadersLinked\Model\Service;
52
use LeadersLinked\Model\CompanyService;
53
use LeadersLinked\Model\CompanyMicrolearningCapsuleUser;
54
use LeadersLinked\Model\CompanyMicrolearningUserQuiz;
55
use LeadersLinked\Mapper\CompanyMicrolearningUserQuizMapper;
56
use LeadersLinked\Mapper\CompanyMicrolearningUserMapper;
57
use LeadersLinked\Model\CompanyMicrolearningUser;
58
use LeadersLinked\Mapper\PushTemplateMapper;
59
use LeadersLinked\Model\PushTemplate;
60
use LeadersLinked\Mapper\SyncLogMapper;
61
use LeadersLinked\Model\SyncLog;
62
use LeadersLinked\Model\CompanyMicrolearningExtendUser;
63
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserMapper;
64
use LeadersLinked\Model\CompanyMicrolearningExtendUserCompany;
65
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserCompanyMapper;
66
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserFunctionMapper;
67
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserGroupMapper;
68
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserInstitutionMapper;
69
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserPartnerMapper;
70
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserProgramMapper;
71
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserStudentTypeMapper;
72
use LeadersLinked\Mapper\CompanyMicrolearningExtendUserSectorMapper;
73
use LeadersLinked\Model\CompanyMicrolearningTopic;
74
use LeadersLinked\Model\CompanyMicrolearningCapsule;
75
use LeadersLinked\Mapper\CompanyMicrolearningCapsuleCommentMapper;
76
use LeadersLinked\Form\SelfEvaluation\CapsuleCommentForm;
77
use LeadersLinked\Model\CompanyMicrolearningCapsuleComment;
78
 
79
 
80
class ServiceCapsuleCommentsController extends AbstractActionController
81
{
82
 
83
 
84
    /**
85
     *
86
     * @var AdapterInterface
87
     */
88
    private $adapter;
89
 
90
 
91
    /**
92
     *
93
     * @var AbstractAdapter
94
     */
95
    private $cache;
96
 
97
    /**
98
     *
99
     * @var  LoggerInterface
100
     */
101
    private $logger;
102
 
103
    /**
104
     *
105
     * @var array
106
     */
107
    private $config;
108
 
109
    /**
110
     *
111
     * @param AdapterInterface $adapter
112
     * @param AbstractAdapter $cache
113
     * @param LoggerInterface $logger
114
     * @param array $config
115
     */
116
    public function __construct($adapter, $cache , $logger, $config)
117
    {
118
        $this->adapter      = $adapter;
119
        $this->cache        = $cache;
120
        $this->logger       = $logger;
121
        $this->config       = $config;
122
    }
123
 
124
    public function indexAction()
125
    {
126
 
127
        $request = $this->getRequest();
128
 
129
        if($request->isGet()) {
130
            $serviceDatetimeFormat = $this->config['leaderslinked.services.datetime'];
131
 
132
            $currentUserPlugin = $this->plugin('currentUserPlugin');
133
            $currentUser = $currentUserPlugin->getUser();
134
 
135
            $capsule_id = $this->params()->fromRoute('capsule_id');
136
 
137
            $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
138
            $capsule = $capsuleMapper->fetchOneByUuid($capsule_id);
139
 
140
            if(!$capsule) {
141
                return new JsonModel([
142
                    'success' => false,
143
                    'data' => 'ERROR_CAPSULE_NOT_FOUND'
144
 
145
                ]);
146
 
147
            }
148
 
149
            $capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
150
            $capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);
151
            if(! $capsuleUser) {
152
                return new JsonModel([
153
                    'success' => false,
154
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',
155
                ]);
156
            }
157
 
158
            $capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);
159
            $records = $capsuleCommentsMapper->fetchAllByCapsuleIdAndUserId($capsule->id, $currentUser->id);
160
 
161
            $data = [];
162
            foreach($records as $record)
163
            {
164
                $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);
165
 
166
                array_push($data, [
167
                    'date' => $dt->format($serviceDatetimeFormat),
168
                    'rating' => $record->rating,
169
                    'comment' => $record->comment
170
                ]);
171
            }
172
 
173
            return new JsonModel([
174
                'success' => true,
175
                'data' => $data
176
 
177
            ]);
178
 
179
        }
180
 
181
        return new JsonModel([
182
            'success' => false,
183
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
184
        ]);
185
    }
186
 
187
    public function getAction()
188
    {
189
 
190
        $request = $this->getRequest();
191
 
192
        if($request->isGet()) {
193
            $serviceDatetimeFormat = $this->config['leaderslinked.services.datetime'];
194
 
195
            $currentUserPlugin = $this->plugin('currentUserPlugin');
196
            $currentUser = $currentUserPlugin->getUser();
197
 
198
            $capsule_id = $this->params()->fromRoute('capsule_id');
199
            $comment_id = $this->params()->fromRoute('comment_id');
200
 
201
            $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
202
            $capsule = $capsuleMapper->fetchOneByUuid($capsule_id);
203
 
204
            if(!$capsule) {
205
                return new JsonModel([
206
                    'success' => false,
207
                    'data' => 'ERROR_CAPSULE_NOT_FOUND'
208
 
209
                ]);
210
 
211
            }
212
 
213
            $capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
214
            $capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);
215
            if(! $capsuleUser) {
216
                return new JsonModel([
217
                    'success' => false,
218
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',
219
                ]);
220
            }
221
 
222
            $capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);
223
            $capsuleComment = $capsuleCommentsMapper->fetchOneByUuid($comment_id);
224
 
225
            if(!$capsuleComment) {
226
                return new JsonModel([
227
                    'success' => false,
228
                    'data' => 'ERROR_CAPSULE_COMMENT_NOT_FOUND',
229
                ]);
230
            }
231
 
232
            if($capsuleComment->capsule_id != $capsule->id || $capsuleComment->user_id != $currentUser->id) {
233
                return new JsonModel([
234
                    'success' => false,
235
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE_COMMENT',
236
                ]);
237
            }
238
 
239
 
240
            $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $capsuleComment->added_on);
241
 
242
            return new JsonModel([
243
                'success' => true,
244
                'data' => [
245
                    'date' => $dt->format($serviceDatetimeFormat),
246
                    'rating' => $capsuleComment->rating,
247
                    'comment' => $capsuleComment->comment
248
                ]
249
 
250
            ]);
251
 
252
        }
253
 
254
        return new JsonModel([
255
            'success' => false,
256
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
257
        ]);
258
    }
259
 
260
    public function deleteAction()
261
    {
262
 
263
        $request = $this->getRequest();
264
 
265
        if($request->isPost()) {
266
 
267
            $currentUserPlugin = $this->plugin('currentUserPlugin');
268
            $currentUser = $currentUserPlugin->getUser();
269
 
270
            $capsule_id = $this->params()->fromRoute('capsule_id');
271
            $comment_id = $this->params()->fromRoute('comment_id');
272
 
273
            $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
274
            $capsule = $capsuleMapper->fetchOneByUuid($capsule_id);
275
 
276
            if(!$capsule) {
277
                return new JsonModel([
278
                    'success' => false,
279
                    'data' => 'ERROR_CAPSULE_NOT_FOUND'
280
 
281
                ]);
282
 
283
            }
284
 
285
            $capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
286
            $capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);
287
            if(! $capsuleUser) {
288
                return new JsonModel([
289
                    'success' => false,
290
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',
291
                ]);
292
            }
293
 
294
            $capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);
295
            $capsuleComment = $capsuleCommentsMapper->fetchOneByUuid($comment_id);
296
 
297
            if(!$capsuleComment) {
298
                return new JsonModel([
299
                    'success' => false,
300
                    'data' => 'ERROR_CAPSULE_COMMENT_NOT_FOUND',
301
                ]);
302
            }
303
 
304
            if($capsuleComment->capsule_id != $capsule->id || $capsuleComment->user_id != $currentUser->id) {
305
                return new JsonModel([
306
                    'success' => false,
307
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE_COMMENT',
308
                ]);
309
            }
310
 
311
 
312
            $result =$capsuleCommentsMapper->delete($capsuleComment->id);
313
            if($result) {
314
                return new JsonModel([
315
                    'success' => true,
316
                    'data' => 'LABEL_CAPSULE_COMMENT_HAVE_BEEN_SUCCESSFULLY_DELETE'
317
 
318
                ]);
319
            } else {
320
                return new JsonModel([
321
                    'success' => false,
322
                    'data' => $capsuleCommentsMapper->getError()
323
 
324
                ]);
325
            }
326
 
327
 
328
 
329
        }
330
 
331
        return new JsonModel([
332
            'success' => false,
333
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
334
        ]);
335
    }
336
 
337
    public function addAction()
338
    {
339
 
340
        $request = $this->getRequest();
341
 
342
        if($request->isPost()) {
343
 
344
            $currentUserPlugin = $this->plugin('currentUserPlugin');
345
            $currentUser = $currentUserPlugin->getUser();
346
 
347
            $capsule_id = $this->params()->fromRoute('capsule_id');
348
 
349
 
350
            $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
351
            $capsule = $capsuleMapper->fetchOneByUuid($capsule_id);
352
 
353
            if(!$capsule) {
354
                return new JsonModel([
355
                    'success' => false,
356
                    'data' => 'ERROR_CAPSULE_NOT_FOUND'
357
 
358
                ]);
359
 
360
            }
361
 
362
            $capsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
363
            $capsuleUser = $capsuleUserMapper->fetchOneByUserIdAndCapsuleId($currentUser->id, $capsule->id);
364
            if(! $capsuleUser) {
365
                return new JsonModel([
366
                    'success' => false,
367
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE',
368
                ]);
369
            }
370
 
371
 
372
            $form = new  CapsuleCommentForm();
373
            $dataPost = $request->getPost()->toArray();
374
 
375
            $form->setData($dataPost);
376
 
377
            if($form->isValid()) {
378
                $dataPost = (array) $form->getData();
379
 
380
 
381
                $capsuleComment = new CompanyMicrolearningCapsuleComment();
382
                $capsuleComment->company_id = $capsule->company_id;
383
                $capsuleComment->topic_id = $capsule->topic_id;
384
                $capsuleComment->capsule_id = $capsule->id;
385
                $capsuleComment->user_id = $currentUser->id;
386
                $capsuleComment->comment = $dataPost['comment'];
387
                $capsuleComment->rating = $dataPost['rating'];
388
 
389
 
390
                $capsuleCommentsMapper = CompanyMicrolearningCapsuleCommentMapper::getInstance($this->adapter);
391
                $result = $capsuleCommentsMapper->insert($capsuleComment);
392
                if($result) {
393
                    return new JsonModel([
394
                        'success' => true,
395
                        'data' => 'LABEL_CAPSULE_COMMENT_HAVE_BEEN_SUCCESSFULLY_ADDED'
396
 
397
                    ]);
398
                } else {
399
                    return new JsonModel([
400
                        'success' => false,
401
                        'data' => $capsuleCommentsMapper->getError()
402
 
403
                    ]);
404
                }
405
 
406
 
407
            } else {
408
                $messages = [];
409
                $form_messages = (array) $form->getMessages();
410
                foreach($form_messages  as $fieldname => $field_messages)
411
                {
412
 
413
                    $messages[$fieldname] = array_values($field_messages);
414
                }
415
 
416
                return new JsonModel([
417
                    'success'   => false,
418
                    'data'   => $messages
419
                ]);
420
            }
421
 
422
 
423
 
424
 
425
        }
426
 
427
        return new JsonModel([
428
            'success' => false,
429
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
430
        ]);
431
    }
432
}
433