Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 17184 Rev 17185
Línea 555... Línea 555...
555
            $this->logger->err('Error in editAction: ' . $e->getMessage());
555
            $this->logger->err('Error in editAction: ' . $e->getMessage());
556
            return $this->createErrorResponse('ERROR_INTERNAL_SERVER_ERROR');
556
            return $this->createErrorResponse('ERROR_INTERNAL_SERVER_ERROR');
557
        }
557
        }
558
    }
558
    }
Línea -... Línea 559...
-
 
559
 
-
 
560
    /**
-
 
561
     * 
-
 
562
     * Obtener los usuarios de un tópico
-
 
563
     * {@inheritDoc}
-
 
564
     * @see \Laminas\Mvc\Controller\AbstractActionController::usersAction()
-
 
565
     * @return JsonModel
-
 
566
     */
-
 
567
    public function usersAction()
-
 
568
    {
-
 
569
        try {
-
 
570
            $request = $this->getRequest();
-
 
571
 
-
 
572
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
573
            $currentUser    = $currentUserPlugin->getUser();
-
 
574
            $currentCompany = $currentUserPlugin->getCompany();
-
 
575
 
-
 
576
            if(!$currentCompany) {
-
 
577
                return $this->createErrorResponse('ERROR_COMPANY_NOT_FOUND');
-
 
578
            }
-
 
579
 
-
 
580
            if(!$currentUser) {
-
 
581
                return $this->createErrorResponse('ERROR_USER_NOT_FOUND');
-
 
582
            }
-
 
583
 
-
 
584
            if(!$request->isGet()) {
-
 
585
                return $this->createErrorResponse('ERROR_METHOD_NOT_ALLOWED');
-
 
586
            }
-
 
587
 
-
 
588
            $topic_uuid = $this->params()->fromRoute('topic_uuid');
-
 
589
            $type = $this->params()->fromRoute('type'); 
-
 
590
        
-
 
591
            $topicMapper = MicrolearningTopicMapper::getInstance($this->adapter);
-
 
592
            $topic = $topicMapper->fetchOneByUuid($topic_uuid);
-
 
593
            if(!$topic) {
-
 
594
                $this->logger->err('Error in usersAction: ' . $topic_uuid);
-
 
595
                return $this->createErrorResponse('ERROR_TOPIC_NOT_FOUND');
-
 
596
            }
-
 
597
        
-
 
598
            if($topic->company_id != $currentCompany->id) {
-
 
599
                $this->logger->err('Error in usersAction: ' . $topic_uuid);
-
 
600
                return $this->createErrorResponse('ERROR_UNAUTHORIZED');
-
 
601
            }
-
 
602
 
-
 
603
            $queryMapper = QueryMapper::getInstance($this->adapter);
-
 
604
            $sql = $queryMapper->getSql();
-
 
605
            $select = $sql->select();
-
 
606
            $select->columns(['access', 'paid_from', 'paid_to', 'added_on']);
-
 
607
            $select->from(['tb1' => MicrolearningTopicUserMapper::_TABLE] );
-
 
608
            $select->join(['tb2' => UserMapper::_TABLE], 'tb1.user_id = tb2.id', ['uuid', 'first_name', 'last_name', 'email']);
-
 
609
            $select->where->equalTo('tb1.company_id', $topic->company_id);
-
 
610
            $select->where->equalTo('tb1.topic_id', $topic->id);
-
 
611
            
-
 
612
            if($type == 'active') {
-
 
613
                $now = date('Y-m-d H:i:s');
-
 
614
                $select->where->nest->equalTo('access', MicrolearningTopicUser::ACCESS_UNLIMITED)->or->nest()
-
 
615
                ->equalTo('access', MicrolearningTopicUser::ACCESS_PAY_PERIOD)
-
 
616
                ->and->lessThanOrEqualTo('paid_from', $now)->and->greaterThanOrEqualTo('paid_to', $now )->unnest()->unnest();
-
 
617
                
-
 
618
            } 
-
 
619
 
-
 
620
            $select->order(['first_name', 'last_name', 'email']);
-
 
621
            $records  = $queryMapper->fetchAll($select);
-
 
622
            
-
 
623
            $items = [];
-
 
624
            
-
 
625
            foreach($records as $record)
-
 
626
            {          
-
 
627
                switch($record['access'])
-
 
628
                {
-
 
629
                    case MicrolearningTopicUser::ACCESS_UNLIMITED :
-
 
630
                        $details['access'] = 'LABEL_UNLIMIT';
-
 
631
                        break;
-
 
632
                        
-
 
633
                    case MicrolearningTopicUser::ACCESS_REVOKE :
-
 
634
                        $details['access'] = 'LABEL_REVOKED';
-
 
635
                        break;
-
 
636
                        
-
 
637
                    case MicrolearningTopicUser::ACCESS_PAY_PERIOD :
-
 
638
                        $dt_paid_from = \DateTime::createFromFormat('Y-m-d', $record['paid_from']);
-
 
639
                        $dt_paid_to = \DateTime::createFromFormat('Y-m-d', $record['paid_to']);
-
 
640
                        
-
 
641
                        $details['access'] = 'LABEL_PAY_PERIOD';
-
 
642
                        $details['paid_from'] = $dt_paid_from->format('d/m/Y');
-
 
643
                        $details['paid_to'] = $dt_paid_to->format('d/m/Y');
-
 
644
                        break;
-
 
645
                        
-
 
646
                    case MicrolearningTopicUser::ACCESS_SUPENDED :
-
 
647
                        $dt_paid_from = \DateTime::createFromFormat('Y-m-d', $record['paid_from']);
-
 
648
                        $dt_paid_to = \DateTime::createFromFormat('Y-m-d', $record['paid_to']);
-
 
649
                        
-
 
650
                        $details['access'] = 'LABEL_SUSPENDED';
-
 
651
                        $details['paid_from'] = $dt_paid_from->format('d/m/Y');
-
 
652
                        $details['paid_to'] = $dt_paid_to->format('d/m/Y');
-
 
653
                        break;
-
 
654
                        
-
 
655
                    case MicrolearningTopicUser::ACCESS_CANCELLED :
-
 
656
                        $dt_paid_from = \DateTime::createFromFormat('Y-m-d', $record['paid_from']);
-
 
657
                        $dt_paid_to = \DateTime::createFromFormat('Y-m-d', $record['paid_to']);
-
 
658
                        
-
 
659
                        $details['access'] = 'LABEL_CANCELLED';
-
 
660
                        $details['paid_from'] = $dt_paid_from->format('d/m/Y');
-
 
661
                        $details['paid_to'] = $dt_paid_to->format('d/m/Y');
-
 
662
                        break;        
-
 
663
                }
-
 
664
                
-
 
665
                
-
 
666
                $item = [
-
 
667
                    'first_name' => $record['first_name'],
-
 
668
                    'last_name' => $record['last_name'],
-
 
669
                    'email' => $record['email'],
-
 
670
                    'details' => $details,
-
 
671
                ];    
-
 
672
 
-
 
673
                array_push($items, $item);
-
 
674
            }
-
 
675
            
-
 
676
            return new JsonModel([
-
 
677
                'success' => true,
-
 
678
                'data' => [
-
 
679
                    'topic' => $topic->name,
-
 
680
                    'items' => $items, 
-
 
681
                ]    
-
 
682
            ]);    
-
 
683
        } catch (\Exception $e) {
-
 
684
            $this->logger->err('Error in usersAction: ' . $e->getMessage());
-
 
685
            return $this->createErrorResponse('ERROR_INTERNAL_SERVER_ERROR');
-
 
686
        }
-
 
687
    }
559
 
688
 
560
     /**
689
     /**
561
     * Check if request is JSON
690
     * Check if request is JSON
562
     * @param \Laminas\Http\Request $request
691
     * @param \Laminas\Http\Request $request
563
     * @return bool
692
     * @return bool