Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16766 | Rev 16769 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

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