Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 16701 Rev 16747
Línea 16... Línea 16...
16
use LeadersLinked\Model\FastSurvey;
16
use LeadersLinked\Model\FastSurvey;
17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
17
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
18
use LeadersLinked\Model\Feed;
18
use LeadersLinked\Model\Feed;
19
use LeadersLinked\Mapper\CompanyUserMapper;
19
use LeadersLinked\Mapper\CompanyUserMapper;
20
use LeadersLinked\Mapper\FeedMapper;
20
use LeadersLinked\Mapper\FeedMapper;
-
 
21
use LeadersLinked\Mapper\QueryMapper;
-
 
22
use LeadersLinked\Mapper\UserMapper;
-
 
23
use PhpOffice\PhpSpreadsheet\IOFactory;
-
 
24
use PhpOffice\PhpSpreadsheet\Spreadsheet;
-
 
25
use LeadersLinked\Mapper\FastSurveyVoteMapper;
Línea 21... Línea 26...
21
 
26
 
Línea 22... Línea 27...
22
class FastSurveyController extends AbstractActionController {
27
class FastSurveyController extends AbstractActionController {
23
 
28
 
Línea 94... Línea 99...
94
                
99
                
95
                
100
                
96
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
101
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
97
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/edit');
102
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/edit');
98
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/delete');
103
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/delete');
Línea 99... Línea 104...
99
                $allowResult = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/result');
104
                $allowChart = $acl->isAllowed($currentUser->usertype_id, 'fast-survey/chart');
Línea 152... Línea 157...
152
                    
157
                    
153
                    
158
                    
154
                    $item = [
159
                    $item = [
155
                        'question' => $record->question,
-
 
156
                        'details' => [
160
                        'question' => $record->question,
157
                            'status' => $status,
161
                        'details' => [
158
                            'added_on' => $added_on,
162
                            'added_on' => $added_on,
159
                            'expire_on' => $expire_on,
163
                            'expire_on' => $expire_on,
160
                        ],
164
                        ],
161
                        'votes' => $votes,
165
                        'votes' => $votes,
162
                        'actions' => [
166
                        'actions' => [
163
                            'link_edit' => $allowEdit && !$votes ?   $this->url()->fromRoute('fast-survey/edit', ['id' => $record->uuid ]) : '',
167
                            'link_edit' => $allowEdit && !$votes ?   $this->url()->fromRoute('fast-survey/edit', ['id' => $record->uuid ]) : '',
164
                            'link_delete' => $allowDelete && !$votes ? $this->url()->fromRoute('fast-survey/delete', ['id' => $record->uuid ]) : '',
168
                            'link_delete' => $allowDelete && !$votes ? $this->url()->fromRoute('fast-survey/delete', ['id' => $record->uuid ]) : '',
165
                            'link_result' => $allowResult ? $this->url()->fromRoute('fast-survey/result', ['id' => $record->uuid ]) : '',
169
                            'link_chart' => $allowChart ? $this->url()->fromRoute('fast-survey/chart', ['id' => $record->uuid ]) : '',
Línea 166... Línea 170...
166
                            'link_download' => $allowDownload ? $this->url()->fromRoute('fast-survey/download', ['id' => $record->uuid ]) : '',
170
                            'link_download' => $allowDownload ? $this->url()->fromRoute('fast-survey/download', ['id' => $record->uuid ]) : '',
Línea 505... Línea 509...
505
 
509
 
506
        return new JsonModel($response);
510
        return new JsonModel($response);
Línea -... Línea 511...
-
 
511
    }
-
 
512
    
-
 
513
    
-
 
514
    public function chartAction()
-
 
515
    {
-
 
516
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
517
        $currentUser = $currentUserPlugin->getUser();
-
 
518
        $currentCompany = $currentUserPlugin->getCompany();
-
 
519
 
-
 
520
        
-
 
521
        $id = $this->params()->fromRoute('id');
-
 
522
        
-
 
523
        
-
 
524
        if (!$id) {
-
 
525
            $data = [
-
 
526
                'success' => false,
-
 
527
                'data' => 'ERROR_INVALID_PARAMETER'
-
 
528
            ];
-
 
529
            
-
 
530
            return new JsonModel($data);
-
 
531
        }
-
 
532
        
-
 
533
        $fastSurveyMapper = FastSurveyMapper::getInstance($this->adapter);
-
 
534
        $fastSurvey = $fastSurveyMapper->fetchOneByUuid($id);
-
 
535
        if (!$fastSurvey) {
-
 
536
            $data = [
-
 
537
                'success' => false,
-
 
538
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
539
            ];
-
 
540
            
-
 
541
            return new JsonModel($data);
-
 
542
        }
-
 
543
        
-
 
544
        if($fastSurvey->company_id != $currentCompany->id) {
-
 
545
            $response = [
-
 
546
                'success' => false,
-
 
547
                'data' =>  'ERROR_UNAUTHORIZED'
-
 
548
            ];
-
 
549
            
-
 
550
            return new JsonModel($response);
-
 
551
        }
-
 
552
        
-
 
553
 
-
 
554
        $request = $this->getRequest();
-
 
555
        if ($request->isGet()) {
-
 
556
            $data = [
-
 
557
                'question'  => $fastSurvey->question,
-
 
558
                'labels'    => [$fastSurvey->answer1, $fastSurvey->answer2],
-
 
559
                'values'    => [$fastSurvey->votes1, $fastSurvey->votes2],
-
 
560
            ];
-
 
561
            
-
 
562
            if($fastSurvey->number_of_answers >= 3) {
-
 
563
                array_push($data['labels'], $fastSurvey->answer3);
-
 
564
                array_push($data['values'], $fastSurvey->votes3);
-
 
565
            }  else if($fastSurvey->number_of_answers >= 4) {
-
 
566
                array_push($data['labels'], $fastSurvey->answer4);
-
 
567
                array_push($data['values'], $fastSurvey->votes4);
-
 
568
            }  else if($fastSurvey->number_of_answers == 5) {
-
 
569
                array_push($data['labels'], $fastSurvey->answer5);
-
 
570
                array_push($data['values'], $fastSurvey->votes5);
-
 
571
            }
-
 
572
                
-
 
573
            return new JsonModel([
-
 
574
                'success' => true,
-
 
575
                'data' => $data,
-
 
576
            ]);
-
 
577
 
-
 
578
        } else {
-
 
579
            return new JsonModel([
-
 
580
                'success' => false,
-
 
581
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
Línea -... Línea 582...
-
 
582
            ]);
-
 
583
        }
-
 
584
    }
-
 
585
    
-
 
586
    public function downloadAction()
-
 
587
    {
-
 
588
        $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
589
        $currentUser = $currentUserPlugin->getUser();
-
 
590
        $currentCompany = $currentUserPlugin->getCompany();
-
 
591
        
-
 
592
        
-
 
593
        $id = $this->params()->fromRoute('id');
-
 
594
        
-
 
595
        
-
 
596
        if (!$id) {
-
 
597
            $data = [
-
 
598
                'success' => false,
-
 
599
                'data' => 'ERROR_INVALID_PARAMETER'
-
 
600
            ];
-
 
601
            
-
 
602
            return new JsonModel($data);
-
 
603
        }
-
 
604
        
-
 
605
        $fastSurveyMapper = FastSurveyMapper::getInstance($this->adapter);
-
 
606
        $fastSurvey = $fastSurveyMapper->fetchOneByUuid($id);
-
 
607
        if (!$fastSurvey) {
-
 
608
            $data = [
-
 
609
                'success' => false,
-
 
610
                'data' => 'ERROR_RECORD_NOT_FOUND'
-
 
611
            ];
-
 
612
            
-
 
613
            return new JsonModel($data);
-
 
614
        }
-
 
615
        
-
 
616
        if($fastSurvey->company_id != $currentCompany->id) {
-
 
617
            $response = [
-
 
618
                'success' => false,
-
 
619
                'data' =>  'ERROR_UNAUTHORIZED'
-
 
620
            ];
-
 
621
            
-
 
622
            return new JsonModel($response);
-
 
623
        }
-
 
624
        
-
 
625
        
-
 
626
        $request = $this->getRequest();
-
 
627
        if ($request->isGet()) {
-
 
628
 
-
 
629
 
-
 
630
            
-
 
631
            
-
 
632
            $spreadsheet = new Spreadsheet();
-
 
633
            $spreadsheet->getProperties()->setTitle($fastSurvey->question);
-
 
634
            
-
 
635
 
-
 
636
            $spreadsheet->setActiveSheetIndex(0);
-
 
637
            $spreadsheet->getActiveSheet()->SetCellValue('A1', 'TOTAL DE VOTOS');
-
 
638
            
-
 
639
            if($fastSurvey->number_of_answers >= 3) {
-
 
640
                $spreadsheet->getActiveSheet()->mergeCells('A1:G1');
-
 
641
            }  else if($fastSurvey->number_of_answers >= 4) {
-
 
642
                $spreadsheet->getActiveSheet()->mergeCells('A1:H1');
-
 
643
            }  else if($fastSurvey->number_of_answers == 5) {
-
 
644
                $spreadsheet->getActiveSheet()->mergeCells('A1:I1');
-
 
645
            }
-
 
646
            
-
 
647
            $spreadsheet->getActiveSheet()->SetCellValue('A2', $fastSurvey->answer1);
-
 
648
            $spreadsheet->getActiveSheet()->SetCellValue('A3', $fastSurvey->votes1);
-
 
649
            
-
 
650
            
-
 
651
            $spreadsheet->getActiveSheet()->SetCellValue('B2', $fastSurvey->answer2);
-
 
652
            $spreadsheet->getActiveSheet()->SetCellValue('B3', $fastSurvey->votes2);
-
 
653
            
-
 
654
            if($fastSurvey->number_of_answers >= 3) {
-
 
655
                $spreadsheet->getActiveSheet()->SetCellValue('C2', $fastSurvey->answer3);
-
 
656
                $spreadsheet->getActiveSheet()->SetCellValue('C3', $fastSurvey->votes3);
-
 
657
               
-
 
658
                
-
 
659
            }  else if($fastSurvey->number_of_answers >= 4) {
-
 
660
                
-
 
661
                $spreadsheet->getActiveSheet()->SetCellValue('D2', $fastSurvey->answer4);
-
 
662
                $spreadsheet->getActiveSheet()->SetCellValue('D3', $fastSurvey->votes4);
-
 
663
                
-
 
664
            }  else if($fastSurvey->number_of_answers == 5) {
-
 
665
                
-
 
666
                $spreadsheet->getActiveSheet()->SetCellValue('E2', $fastSurvey->answer5);
-
 
667
                $spreadsheet->getActiveSheet()->SetCellValue('E3', $fastSurvey->votes5);
-
 
668
            }
-
 
669
            
-
 
670
            $spreadsheet->getActiveSheet()->SetCellValue('A5', 'DETALLE DE LOS USUARIOS');
-
 
671
            
-
 
672
            if($fastSurvey->number_of_answers >= 3) {
-
 
673
                $spreadsheet->getActiveSheet()->mergeCells('A5:G5');
-
 
674
            }  else if($fastSurvey->number_of_answers >= 4) {
-
 
675
                $spreadsheet->getActiveSheet()->mergeCells('A5:H5');
-
 
676
            }  else if($fastSurvey->number_of_answers == 5) {
-
 
677
                $spreadsheet->getActiveSheet()->mergeCells('A5:I5');
-
 
678
            }
-
 
679
            
-
 
680
            
-
 
681
            $spreadsheet->getActiveSheet()->SetCellValue('A6', 'Fecha');
-
 
682
            $spreadsheet->getActiveSheet()->SetCellValue('B6', 'Nombre');
-
 
683
            $spreadsheet->getActiveSheet()->SetCellValue('C6', 'Apellido');
-
 
684
            $spreadsheet->getActiveSheet()->SetCellValue('D6', 'Correo electrónico');
-
 
685
            $spreadsheet->getActiveSheet()->SetCellValue('E6', $fastSurvey->answer1);
-
 
686
            $spreadsheet->getActiveSheet()->SetCellValue('F6', $fastSurvey->answer2);
-
 
687
            if($fastSurvey->number_of_answers >= 3) {
-
 
688
                $spreadsheet->getActiveSheet()->SetCellValue('G6', $fastSurvey->answer3);
-
 
689
            }  else if($fastSurvey->number_of_answers >= 4) {
-
 
690
                $spreadsheet->getActiveSheet()->SetCellValue('H6', $fastSurvey->answer4);
-
 
691
            }  else if($fastSurvey->number_of_answers == 5) {
-
 
692
                $spreadsheet->getActiveSheet()->SetCellValue('I6', $fastSurvey->answer5);
-
 
693
            }
-
 
694
            
-
 
695
            /*
-
 
696
             select u.first_name , u.last_name, u.email , v.vote, v.added_on from tbl_fast_survey_votes as v
-
 
697
inner join tbl_users as u on v.user_id = u.id
-
 
698
where v.fast_survey_id = 5
-
 
699
order by v.added_on
-
 
700
             */
-
 
701
            
-
 
702
            $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
703
            $select = $queryMapper->getSql()->select();
-
 
704
            $select->columns(['vote', 'added_on']);
-
 
705
            $select->from(['v' => FastSurveyVoteMapper::_TABLE]);
-
 
706
            $select->join(['u' => UserMapper::_TABLE], 'v.user_id = u.id', ['first_name', 'last_name', 'email']);
-
 
707
            $select->where->equalTo('v.fast_survey_id', $fastSurvey->id);
-
 
708
            $select->order('added_on');
-
 
709
            
-
 
710
            
-
 
711
            $i = 7;
-
 
712
            $records = $queryMapper->fetchAll($select);
-
 
713
            foreach($records as $record)
-
 
714
            {
-
 
715
                $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record['added_on']);
-
 
716
                
-
 
717
                $spreadsheet->getActiveSheet()->SetCellValue('A' . $i, $dt->format('d/m/Y H:i a'));
-
 
718
                $spreadsheet->getActiveSheet()->SetCellValue('B' . $i, $record['first_name']);
-
 
719
                $spreadsheet->getActiveSheet()->SetCellValue('C' . $i, $record['last_name']);
-
 
720
                $spreadsheet->getActiveSheet()->SetCellValue('D' . $i, $record['email']);
-
 
721
                
-
 
722
                switch($record['vote'])
-
 
723
                {
-
 
724
                    case 1 :
-
 
725
                        $spreadsheet->getActiveSheet()->SetCellValue('E' . $i, 'X');
-
 
726
                        break;
-
 
727
                        
-
 
728
                    case 2 :
-
 
729
                        $spreadsheet->getActiveSheet()->SetCellValue('F' . $i, 'X');
-
 
730
                        break;
-
 
731
                        
-
 
732
                    case 3 :
-
 
733
                        $spreadsheet->getActiveSheet()->SetCellValue('G' . $i, 'X');
-
 
734
                        break;
-
 
735
                        
-
 
736
                    case 4 :
-
 
737
                        $spreadsheet->getActiveSheet()->SetCellValue('H' . $i, 'X');
-
 
738
                        break;
-
 
739
                        
-
 
740
                    case 5 :
-
 
741
                        $spreadsheet->getActiveSheet()->SetCellValue('I' . $i, 'X');
-
 
742
                        break;
-
 
743
                        
-
 
744
                }
-
 
745
                
-
 
746
                $i++;
-
 
747
            }
-
 
748
            
-
 
749
            $fileName = Functions::normalizeString($fastSurvey->question) . '_'  . date('d-m-Y-h-i-a', time()) . '.xls';
-
 
750
            $tempFilename = tempnam(sys_get_temp_dir(), 'reporte_pulso_diario_' . time());
-
 
751
            
-
 
752
            $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
-
 
753
            $writer->save($tempFilename);
-
 
754
            
-
 
755
            $content = file_get_contents($tempFilename);
-
 
756
            @unlink($tempFilename);
-
 
757
            
-
 
758
            return new JsonModel([
-
 
759
                'success' => true,
-
 
760
                'data' => [
-
 
761
                    'content' => base64_encode($content),
-
 
762
                    'basename' => $fileName
-
 
763
                    
-
 
764
                ]
-
 
765
            ]);
-
 
766
        } else {
-
 
767
            return new JsonModel([
-
 
768
                'success' => false,
Línea 507... Línea 769...
507
    }
769
                'data' => 'ERROR_METHOD_NOT_ALLOWED'