Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16768 | Autoría | Ultima modificación | Ver Log |

<?php
declare(strict_types=1);

namespace LeadersLinked\Controller;

use Laminas\Authentication\AuthenticationService;
use Laminas\Authentication\Result as AuthResult;
use Laminas\Db\Adapter\AdapterInterface;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Mvc\I18n\Translator;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
use LeadersLinked\Form\CreateFeedForm;
use LeadersLinked\Library\Functions;
use LeadersLinked\Mapper\UserMapper;

use LeadersLinked\Mapper\CompanyMapper;
use LeadersLinked\Mapper\TopicMapper;
use LeadersLinked\Model\Feed;
use LeadersLinked\Model\HighPerformanceTeamsGroups;
use LeadersLinked\Mapper\FeedMapper;
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
use LeadersLinked\Form\HighPerformanceTeamsGroupsMembersForm;
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;

class HighPerformanceTeamsGroupsViewForoArticlesViewController extends AbstractActionController
{
    /**
     *
     * @var \Laminas\Db\Adapter\AdapterInterface
     */
    private $adapter;
    
    /**
     *
     * @var \LeadersLinked\Cache\CacheInterface
     */
    private $cache;
    
    
    /**
     *
     * @var \Laminas\Log\LoggerInterface
     */
    private $logger;
    
    /**
     *
     * @var array
     */
    private $config;
    
    
    /**
     *
     * @var \Laminas\Mvc\I18n\Translator
     */
    private $translator;
    
    
    /**
     *
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
     * @param \LeadersLinked\Cache\CacheInterface $cache
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
     * @param array $config
     * @param \Laminas\Mvc\I18n\Translator $translator
     */
    public function __construct($adapter, $cache, $logger, $config, $translator)
    {
        $this->adapter      = $adapter;
        $this->cache        = $cache;
        $this->logger       = $logger;
        $this->config       = $config;
        $this->translator   = $translator;
    }
    
    public function indexAction()
    {
       
        $currentUserPlugin = $this->plugin('currentUserPlugin');
        $currentUser = $currentUserPlugin->getUser();
        $currentCompany = $currentUserPlugin->getCompany();
        $group_uuid =  $this->params()->fromRoute('group_id');
        $category_uuid =  $this->params()->fromRoute('category_id');
        $article_uuid =  $this->params()->fromRoute('article_id');
        $request = $this->getRequest();

        if(!$group_uuid) {
            $data = [
                'success'   => false,
                'data'   => 'ERROR_INVALID_PARAMETER'
            ];
            
            return new JsonModel($data);
        }
        if(!$article_uuid) {
            $data = [
                'success'   => false,
                'data'   => 'ERROR_INVALID_PARAMETER'
            ];
            
            return new JsonModel($data);
        }
        if(!$category_uuid) {
            $data = [
                'success'   => false,
                'data'   => 'ERROR_INVALID_PARAMETER'
            ];
            
            return new JsonModel($data);
        }
        
      
        $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
        $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
        $this->layout()->setTemplate('layout/layout-backend');
        $viewModel = new ViewModel();
        if (!$highPerformanceTeamsGroups) {
            $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
            return $viewModel;
        }
        if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
            $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
            return $viewModel;

        } 
        $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
        $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
        if(!$highPerformanceTeamsGroupsMember) {
            $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
            return $viewModel;
        }
        if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
            $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
            return $viewModel;
        }

        $topicMapper = TopicMapper::getInstance($this->adapter);
        $topic = $topicMapper->fetchOneByUuidAndGroupId($category_uuid,$highPerformanceTeamsGroups->id);

        if(!$topic){
            $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
            return $viewModel;
        }

        if($request->isGet()) {
            $formAdd = new CreateFeedForm($this->adapter);
            $this->layout()->setTemplate('layout/layout-backend');
            $viewModel = new ViewModel();
            $viewModel->setTemplate('leaders-linked/high-performance-teams-groups-view-foro-articles-view/index.phtml');
            $viewModel->setVariables([
                'formAdd' => $formAdd,  
                'group_uuid'=>$group_uuid,
                'group_title'=>$highPerformanceTeamsGroups->title,
                'category_uuid'=>$category_uuid,
                'article_uuid'=>$article_uuid         
            ]);
            return $viewModel ;
            
            
        } else {
            return new JsonModel([
                'success' => false,
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
            ]);;
        }
    }
}