Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
66 efrain 1
<?php
2
/**
3
 *
4
 * Controlador: Mis Perfiles
5
 *
6
 */
7
declare(strict_types=1);
8
 
9
namespace LeadersLinked\Controller;
10
 
11
use Laminas\Db\Adapter\AdapterInterface;
12
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
13
use Laminas\Mvc\Controller\AbstractActionController;
14
use Laminas\Log\LoggerInterface;
15
use Laminas\View\Model\ViewModel;
16
use Laminas\View\Model\JsonModel;
17
 
18
use LeadersLinked\Library\Functions;
19
use LeadersLinked\Mapper\QueryMapper;
20
use LeadersLinked\Model\CompanyMicrolearningQuiz;
21
use LeadersLinked\Mapper\CompanyMicrolearningQuizMapper;
22
use LeadersLinked\Form\QuizCreateOrEditForm;
23
use Laminas\Hydrator\ObjectPropertyHydrator;
24
use LeadersLinked\Mapper\CompanyMicrolearningQuestionMapper;
25
use LeadersLinked\Mapper\CompanyMicrolearningAnswerMapper;
26
use LeadersLinked\Model\CompanyMicrolearningQuestion;
27
use LeadersLinked\Model\CompanyMicrolearningAnswer;
28
use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;
29
 
30
class MicroLearningQuizController extends AbstractActionController
31
{
32
    /**
33
     *
34
     * @var AdapterInterface
35
     */
36
    private $adapter;
37
 
38
 
39
    /**
40
     *
41
     * @var AbstractAdapter
42
     */
43
    private $cache;
44
 
45
    /**
46
     *
47
     * @var  LoggerInterface
48
     */
49
    private $logger;
50
 
51
 
52
    /**
53
     *
54
     * @var array
55
     */
56
    private $config;
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
    public function indexAction()
75
    {
76
        $request            = $this->getRequest();
77
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
78
        $currentUser        = $currentUserPlugin->getUser();
79
        $currentCompany     = $currentUserPlugin->getCompany();
80
 
81
        $request = $this->getRequest();
82
        if($request->isGet()) {
83
            $headers  = $request->getHeaders();
84
 
85
            $isJson = false;
86
            if($headers->has('Accept')) {
87
                $accept = $headers->get('Accept');
88
 
89
                $prioritized = $accept->getPrioritized();
90
 
91
                foreach($prioritized as $key => $value) {
92
                    $raw = trim($value->getRaw());
93
 
94
                    if(!$isJson) {
95
                        $isJson = strpos($raw, 'json');
96
                    }
97
 
98
                }
99
            }
100
 
101
            if($isJson) {
102
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
103
                $allowQuestion = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/questions');
104
                $allowAdd = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/add');
105
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/edit');
106
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/delete');
107
                $allowCopy = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/copy');
108
                $allowCheck = $acl->isAllowed($currentUser->usertype_id, 'microlearning/content/quizzes/check');
109
 
110
                $search = $this->params()->fromQuery('search', []);
111
                $search = empty($search['value']) ? '' : filter_var($search['value'], FILTER_SANITIZE_STRING);
112
 
113
                $page               = intval($this->params()->fromQuery('start', 1), 10);
114
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
115
                $order =  $this->params()->fromQuery('order', []);
116
                $order_field        = empty($order[0]['column']) ? 99 :  intval($order[0]['column'], 10);
117
                $order_direction    = empty($order[0]['dir']) ? 'ASC' : strtoupper(filter_var( $order[0]['dir'], FILTER_SANITIZE_STRING));
118
 
119
                $fields =  ['name'];
120
                $order_field = isset($fields[$order_field]) ? $fields[$order_field] : 'name';
121
 
122
                if(!in_array($order_direction, ['ASC', 'DESC'])) {
123
                    $order_direction = 'ASC';
124
                }
125
 
126
 
127
 
128
                $companyMicrolearningSlideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
129
                $companyMicrolearningQuizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
130
                $paginator = $companyMicrolearningQuizMapper->fetchAllDataTableByCompanyId($currentCompany->id,  $search, $page, $records_x_page, $order_field, $order_direction);
131
                $items = [];
132
                foreach($paginator as $record)
133
                {
134
 
135
 
136
                    $slides = $companyMicrolearningSlideMapper->fetchTotalCountByCompanyIdQuizId($currentCompany->id, $record->id);
137
 
138
                    $status_description = '';
139
                    switch ($record->status)
140
                    {
141
                        case CompanyMicrolearningQuiz::STATUS_ACTIVE :
142
                            $status_description = 'LABEL_ACTIVE';
143
                            break;
144
 
145
                        case CompanyMicrolearningQuiz::STATUS_INACTIVE :
146
                            $status_description = 'LABEL_INACTIVE';
147
                            break;
148
                    }
149
 
150
                    $check_description = '';
151
                    switch($record->check)
152
                    {
153
                        case CompanyMicrolearningQuiz::CHECK_OK :
154
                            $check_description = 'LABEL_WITHOUT_ERRORS';
155
                            break;
156
 
157
                        case CompanyMicrolearningQuiz::CHECK_WRONG :
158
                            $check_description = 'LABEL_WITH_ERRORS';
159
                            break;
160
 
161
                        case CompanyMicrolearningQuiz::CHECK_PENDING :
162
                            $check_description = 'LABEL_PENDING';
163
                            break;
164
                    }
165
 
166
                    $params = [
167
                        'quiz_id' => $record->uuid
168
                    ];
169
 
170
                    $item = [
171
                        'name' => $record->name,
172
                        'details' => [
173
                            'status' => $status_description,
174
                            'check' => $check_description,
175
                            'points' => $record->points,
176
                            'max_time' => $record->max_time,
177
                            'slides' => $slides,
178
                        ],
179
                        'actions' => [
180
                            'link_question' => $allowQuestion ? $this->url()->fromRoute('microlearning/content/quizzes/questions', $params) : '',
181
                            'link_edit'     => $allowEdit ? $this->url()->fromRoute('microlearning/content/quizzes/edit', $params) : '',
182
                            'link_delete'   => $allowDelete ? $this->url()->fromRoute('microlearning/content/quizzes/delete', $params) : '',
183
                            'link_copy'     => $allowCopy ? $this->url()->fromRoute('microlearning/content/quizzes/copy', $params) : '',
184
                            'link_check'    => $allowCheck ? $this->url()->fromRoute('microlearning/content/quizzes/check', $params) : '',
185
                        ],
186
                    ];
187
 
188
 
189
                    array_push($items, $item);
190
                }
191
 
192
                $data = [];
193
                $data['items'] = $items;
194
                $data['total'] = $paginator->getTotalItemCount();
195
 
196
                if($allowAdd) {
197
                    $data['link_add'] = $this->url()->fromRoute('microlearning/content/quizzes/add');
198
                }  else {
199
                    $data['link_add'] = '';
200
                }
201
 
202
                $response = [
203
                    'success' => true,
204
                    'data' => $data
205
                ];
206
 
207
                return new JsonModel($response);
208
 
209
 
210
            } else {
211
                $form = new QuizCreateOrEditForm();
212
 
213
                $this->layout()->setTemplate('layout/layout-backend.phtml');
214
                $viewModel = new ViewModel();
215
                $viewModel->setTemplate('leaders-linked/microlearning-quizzes/index.phtml');
216
                $viewModel->setVariables([
217
                    'form' => $form,
218
                ]);
219
                return $viewModel ;
220
            }
221
 
222
        } else {
223
            return new JsonModel([
224
                'success' => false,
225
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
226
            ]);
227
        }
228
    }
229
 
230
    public function addAction()
231
    {
232
        $request            = $this->getRequest();
233
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
234
        $currentUser        = $currentUserPlugin->getUser();
235
        $currentCompany     = $currentUserPlugin->getCompany();
236
 
237
        if($request->isPost()) {
238
            $formCreateOrEdit = new  QuizCreateOrEditForm();
239
            $formCreateOrEdit->setData($request->getPost()->toArray());
240
 
241
            if($formCreateOrEdit->isValid()) {
242
                $dataPost = (array) $formCreateOrEdit->getData();
243
 
244
                $hydrator = new ObjectPropertyHydrator();
245
                $quiz = new CompanyMicrolearningQuiz();
246
                $hydrator->hydrate($dataPost, $quiz);
247
 
248
                $quiz->company_id = $currentCompany->id;
249
 
250
                $quizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
251
                if($quizMapper->insert($quiz)) {
252
 
253
 
254
                    $this->logger->info('Se agrego el quiz ' . $quiz->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
255
 
256
                    $data = [
257
                        'success'   => true,
258
                        'data'   => 'LABEL_RECORD_ADDED'
259
                    ];
260
                } else {
261
                    $data = [
262
                        'success'   => false,
263
                        'data'      => $quizMapper->getError()
264
                    ];
265
 
266
                }
267
 
268
                return new JsonModel($data);
269
 
270
            } else {
271
                $messages = [];
272
                $form_messages = (array) $formCreateOrEdit->getMessages();
273
                foreach($form_messages  as $fieldname => $field_messages)
274
                {
275
 
276
                    $messages[$fieldname] = array_values($field_messages);
277
                }
278
 
279
                return new JsonModel([
280
                    'success'   => false,
281
                    'data'   => $messages
282
                ]);
283
            }
284
 
285
        } else {
286
            $data = [
287
                'success' => false,
288
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
289
            ];
290
 
291
            return new JsonModel($data);
292
        }
293
 
294
        return new JsonModel($data);
295
    }
296
 
297
    /**
298
     *
299
     * Borrar un perfil excepto el público
300
     * @return \Laminas\View\Model\JsonModel
301
     */
302
    public function deleteAction()
303
    {
304
        $request            = $this->getRequest();
305
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
306
        $currentUser        = $currentUserPlugin->getUser();
307
        $currentCompany     = $currentUserPlugin->getCompany();
308
        $quiz_id            = $this->params()->fromRoute('quiz_id');
309
 
310
        $quizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
311
        $quiz = $quizMapper->fetchOneByUuid($quiz_id);
312
        if(!$quiz) {
313
            return new JsonModel([
314
                'success'   => false,
315
                'data'   => 'ERROR_FORM_NOT_FOUND'
316
            ]);
317
        }
318
 
319
        if($quiz->company_id != $currentCompany->id) {
320
            return new JsonModel([
321
                'success'   => false,
322
                'data'   => 'ERROR_UNAUTHORIZED'
323
            ]);
324
        }
325
 
326
        if($request->isPost()) {
327
            $result = $quizMapper->delete($quiz);
328
            if($result) {
329
                $this->logger->info('Se borro el cuestionario : ' .  $quiz->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
330
 
331
                $data = [
332
                    'success' => true,
333
                    'data' => 'LABEL_RECORD_DELETED'
334
                ];
335
            } else {
336
 
337
                $data = [
338
                    'success'   => false,
339
                    'data'      => $quizMapper->getError()
340
                ];
341
 
342
                return new JsonModel($data);
343
            }
344
 
345
        } else {
346
            $data = [
347
                'success' => false,
348
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
349
            ];
350
 
351
            return new JsonModel($data);
352
        }
353
 
354
        return new JsonModel($data);
355
    }
356
 
357
 
358
    public function editAction()
359
    {
360
        $request            = $this->getRequest();
361
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
362
        $currentUser        = $currentUserPlugin->getUser();
363
        $currentCompany     = $currentUserPlugin->getCompany();
364
        $quiz_id            = $this->params()->fromRoute('quiz_id');
365
 
366
        $quizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
367
        $quiz = $quizMapper->fetchOneByUuid($quiz_id);
368
        if(!$quiz) {
369
            return new JsonModel([
370
                'success'   => false,
371
                'data'   => 'ERROR_FORM_NOT_FOUND'
372
            ]);
373
        }
374
 
375
        if($quiz->company_id != $currentCompany->id) {
376
            return new JsonModel([
377
                'success'   => false,
378
                'data'   => 'ERROR_UNAUTHORIZED'
379
            ]);
380
        }
381
 
382
 
383
        if($request->isGet()) {
384
            $data = [
385
                'success' => true,
386
                'data' => [
387
                    'name' => $quiz->name,
388
                    'text' => $quiz->text,
389
                    'status' => $quiz->status,
390
                    'points' => $quiz->points,
391
                    'minimum_points_required' => $quiz->minimum_points_required,
392
                    'max_time' => $quiz->max_time,
393
                    'failed' => $quiz->failed,
394
 
395
                ]
396
            ];
397
 
398
            return new JsonModel($data);
399
        }
400
        else if($request->isPost()) {
401
            $formCreateOrEdit = new  QuizCreateOrEditForm();
402
            $formCreateOrEdit->setData($request->getPost()->toArray());
403
 
404
            if($formCreateOrEdit->isValid()) {
405
                $dataPost = (array) $formCreateOrEdit->getData();
406
 
407
                $hydrator = new ObjectPropertyHydrator();
408
                $hydrator->hydrate($dataPost, $quiz);
409
 
410
                $quiz->check = CompanyMicrolearningQuiz::CHECK_PENDING;
411
                if($quizMapper->update($quiz)) {
412
 
413
                    $this->logger->info('Se edito el cuestionario ' . $quiz->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
414
 
415
                    $data = [
416
                        'success'   => true,
417
                        'data'   => 'LABEL_RECORD_UPDATED'
418
                    ];
419
                } else {
420
                    $data = [
421
                        'success'   => false,
422
                        'data'      => $quizMapper->getError()
423
                    ];
424
 
425
                }
426
 
427
                return new JsonModel($data);
428
 
429
            } else {
430
                $messages = [];
431
                $form_messages = (array) $formCreateOrEdit->getMessages();
432
                foreach($form_messages  as $fieldname => $field_messages)
433
                {
434
 
435
                    $messages[$fieldname] = array_values($field_messages);
436
                }
437
 
438
                return new JsonModel([
439
                    'success'   => false,
440
                    'data'   => $messages
441
                ]);
442
            }
443
        } else {
444
            $data = [
445
                'success' => false,
446
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
447
            ];
448
 
449
            return new JsonModel($data);
450
        }
451
 
452
        return new JsonModel($data);
453
    }
454
 
455
 
456
    public function checkAction()
457
    {
458
        $request            = $this->getRequest();
459
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
460
        $currentUser        = $currentUserPlugin->getUser();
461
        $currentCompany     = $currentUserPlugin->getCompany();
462
        $quiz_id            = $this->params()->fromRoute('quiz_id');
463
 
464
        $quizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
465
        $quiz = $quizMapper->fetchOneByUuid($quiz_id);
466
        if(!$quiz) {
467
            return new JsonModel([
468
                'success'   => false,
469
                'data'   => 'ERROR_QUIZ_NOT_FOUND'
470
            ]);
471
        }
472
 
473
        if($quiz->company_id != $currentCompany->id) {
474
            return new JsonModel([
475
                'success'   => false,
476
                'data'   => 'ERROR_UNAUTHORIZED'
477
            ]);
478
        }
479
 
480
         if($request->isPost()) {
481
            $questionMapper = CompanyMicrolearningQuestionMapper::getInstance($this->adapter);
482
            $answerMapper = CompanyMicrolearningAnswerMapper::getInstance($this->adapter);
483
 
484
            $total_wrong_questions = 0;
485
            $total_point_questions = 0;
486
 
487
 
488
            $questions = $questionMapper->fetchAllByQuizId($quiz->id);
489
 
490
            foreach($questions as $question)
491
            {
492
                $total_point_questions += $question->points;
493
                $answers = $answerMapper->fetchAllByQuizIdAndQuestionId($question->quiz_id, $question->id);
494
 
495
                if($question->type == CompanyMicrolearningQuestion::TYPE_SINGLE_SELECTION ) {
496
                    $number_correct     = 0;
497
                    $number_incorrect   = 0;
498
                    foreach($answers as $answer)
499
                    {
500
                        if($answer->correct == CompanyMicrolearningAnswer::CORRECT_YES) {
501
                            $number_correct++;
502
                        } else {
503
                            $number_incorrect++;
504
                        }
505
                    }
506
 
507
                    if($number_correct == 1 && $number_incorrect >= 1 ) {
508
                        $check_question = CompanyMicrolearningQuestion::CHECK_OK;
509
                    } else {
510
                        $check_question = CompanyMicrolearningQuestion::CHECK_WRONG;
511
                    }
512
                } else if($question->type == CompanyMicrolearningQuestion::TYPE_MULTIPLE_SELECTION ) {
513
                    $number_correct     = 0;
514
                    $number_incorrect   = 0;
515
                    $points = 0;
516
 
517
                    foreach($answers as $answer)
518
                    {
519
                        $points += $answer->points;
520
                        if($answer->correct == CompanyMicrolearningAnswer::CORRECT_YES) {
521
                            $number_correct++;
522
                        } else {
523
                            $number_incorrect++;
524
                        }
525
                    }
526
 
527
                    if($number_correct < 2 || $number_incorrect < 1) {
528
                        $check_question = CompanyMicrolearningQuestion::CHECK_WRONG;
529
                    } else {
530
                        if($points == $question->points) {
531
                            $check_question = CompanyMicrolearningQuestion::CHECK_OK;
532
                        } else {
533
                            $check_question = CompanyMicrolearningQuestion::CHECK_WRONG;
534
                        }
535
 
536
                    }
537
                } else {
538
                    $check_question = CompanyMicrolearningQuestion::CHECK_OK;
539
                }
540
 
541
 
542
                if($check_question == CompanyMicrolearningQuestion::CHECK_WRONG) {
543
                    $quiz->check = CompanyMicrolearningQuiz::CHECK_WRONG;
544
                }
545
 
546
                $question->check = $check_question;
547
                $questionMapper->update($question);
548
            }
549
 
550
            if($quiz->check == CompanyMicrolearningQuiz::CHECK_PENDING) {
551
                $quiz->check = $quiz->points == $total_point_questions ? CompanyMicrolearningQuiz::CHECK_OK : CompanyMicrolearningQuiz::CHECK_WRONG;
552
            }
553
 
554
 
555
            $quizMapper->update($quiz);
556
 
557
            if($quiz->check ==  CompanyMicrolearningQuiz::CHECK_OK) {
558
                $this->logger->info('Se comprobo el cuestionario ' . $quiz->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
559
 
560
                $data = [
561
                    'success'   => true,
562
                    'data'   => 'LABEL_QUIZ_CHECK_OK'
563
                ];
564
            } else {
565
                $messages = [];
566
                if($total_wrong_questions == 1) {
567
                    array_push($messages, '1 LABEL_QUESTION_CHECK_WRONG ');
568
                } else if($total_wrong_questions > 1) {
569
                    array_push($messages,  $total_wrong_questions . 'LABEL_QUESTIONS_CHECK_WRONG ');
570
                }
571
 
572
                if(!$messages) {
573
                    $messages = 'LABEL_QUIZ_CHECK_WRONG';
574
                } else {
575
                    $messages = implode(', ', $messages);
576
                }
577
 
578
                $data = [
579
                    'success'   => false,
580
                    'data'   => $messages
581
                ];
582
            }
583
 
584
 
585
        } else {
586
            $data = [
587
                'success' => false,
588
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
589
            ];
590
 
591
            return new JsonModel($data);
592
        }
593
 
594
        return new JsonModel($data);
595
    }
596
 
597
 
598
 
599
    public function copyAction()
600
    {
601
        $request            = $this->getRequest();
602
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
603
        $currentUser        = $currentUserPlugin->getUser();
604
        $currentCompany     = $currentUserPlugin->getCompany();
605
        $quiz_id            = $this->params()->fromRoute('quiz_id');
606
 
607
        $quizMapper = CompanyMicrolearningQuizMapper::getInstance($this->adapter);
608
        $quiz = $quizMapper->fetchOneByUuid($quiz_id);
609
        if(!$quiz) {
610
            return new JsonModel([
611
                'success'   => false,
612
                'data'   => 'ERROR_QUIZ_NOT_FOUND'
613
            ]);
614
        }
615
 
616
        if($quiz->company_id != $currentCompany->id) {
617
            return new JsonModel([
618
                'success'   => false,
619
                'data'   => 'ERROR_UNAUTHORIZED'
620
            ]);
621
        }
622
 
623
        if($request->isPost()) {
624
 
625
            $quizClone = new CompanyMicrolearningQuiz();
626
 
627
            $quizClone->check = CompanyMicrolearningQuiz::CHECK_PENDING;
628
            $quizClone->status = CompanyMicrolearningQuiz::STATUS_INACTIVE;
629
            $quizClone->company_id = $quiz->company_id;
630
            $quizClone->failed = $quiz->failed;
631
            $quizClone->name = 'COPIA - ' . $quiz->name;
632
            $quizClone->max_time = $quiz->max_time;
633
            $quizClone->minimum_points_required = $quiz->minimum_points_required;
634
            $quizClone->points = $quiz->points;
635
            $quizClone->text = $quiz->text;
636
 
637
            if($quizMapper->insert($quizClone)) {
638
                $this->logger->info('Se copio el quiz ' . $quizClone->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
639
 
640
                $questionMapper = CompanyMicrolearningQuestionMapper::getInstance($this->adapter);
641
                $answerMapper = CompanyMicrolearningAnswerMapper::getInstance($this->adapter);
642
 
643
                $questions = $questionMapper->fetchAllByQuizId($quiz->id);
644
                foreach($questions as $question)
645
                {
646
                    $questionClone = new CompanyMicrolearningQuestion();
647
                    $questionClone->check = CompanyMicrolearningQuestion::CHECK_PENDING;
648
                    $questionClone->company_id = $question->company_id;
649
                    $questionClone->maxlength = $question->maxlength;
650
                    $questionClone->points = $question->points;
651
                    $questionClone->quiz_id = $quizClone->id;
652
                    $questionClone->text = $question->text;
653
                    $questionClone->type = $question->type;
654
 
655
                    if($questionMapper->insert($questionClone)) {
656
                        $answers = $answerMapper->fetchAllByQuizIdAndQuestionId($question->quiz_id, $question->id);
657
                        foreach($answers as $answer)
658
                        {
659
                            $answerClone = new CompanyMicrolearningAnswer();
660
                            $answerClone->company_id = $answer->company_id;
661
                            $answerClone->correct = $answer->correct;
662
                            $answerClone->points = $answer->points;
663
                            $answerClone->question_id = $questionClone->id;
664
                            $answerClone->quiz_id = $quizClone->id;
665
                            $answerClone->text = $answer->text;
666
 
667
                            if(!$answerMapper->insert($answerClone)) {
668
                                $response = [
669
                                    'success'   => false,
670
                                    'data'   => $answerMapper->getError()
671
                                ];
672
                            }
673
                        }
674
                    } else {
675
                        $response = [
676
                            'success'   => false,
677
                            'data'   => $questionMapper->getError()
678
                        ];
679
                    }
680
                }
681
 
682
                $response = [
683
                    'success'   => true,
684
                    'data'   => 'LABEL_RECORD_ADDED'
685
                ];
686
            } else {
687
                $response = [
688
                    'success'   => false,
689
                    'data'   => $quizMapper->getError()
690
                ];
691
 
692
            }
693
 
694
        } else {
695
            $response = [
696
                'success' => false,
697
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
698
            ];
699
        }
700
 
701
        return new JsonModel($response);
702
    }
703
}