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\Db\Adapter\AdapterInterface;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
use LeadersLinked\Model\HighPerformanceTeamsGroups;
use LeadersLinked\Model\Feed;
use LeadersLinked\Form\HighPerformanceTeamsGroupsFeedForm;
use LeadersLinked\Form\TopicForm;
use LeadersLinked\Form\HighPerformanceTeamsGroupsMembersTypeForm;
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;


class HighPerformanceTeamsGroupsViewController 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');
        $topic_uuid   = $this->params()->fromRoute('topic_id');
 

        if(!isset($topic_uuid)){
            $topic_uuid='';
        }
        
        $urgent   = $this->params()->fromRoute('urgent');
        if(!isset($urgent)){
            $urgent='';
        }


        $request = $this->getRequest();
        if($request->isGet()) {
            $headers  = $request->getHeaders();
            
            $isJson = false;
            if($headers->has('Accept')) {
                $accept = $headers->get('Accept');
                
                $prioritized = $accept->getPrioritized();
                
                foreach($prioritized as $key => $value) {
                    $raw = trim($value->getRaw());
                    
                    if(!$isJson) {
                        $isJson = strpos($raw, 'json');
                    }
                    
                }
            }
            $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);
            $member = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id,$currentUser->id);
            if(!$member){
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
                return $viewModel ;
            }
            $rolAdmin=true;
            if($member->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$member->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
                $rolAdmin=false;
            }
            $formAddTask = new PlanningObjectivesAndGoalsTaskForm($this->adapter, $currentCompany->id);
            $formFeed = new HighPerformanceTeamsGroupsFeedForm($this->adapter);
            $formTopicNomal = new TopicForm();
            $formMemberEdit = new HighPerformanceTeamsGroupsMembersTypeForm();
            $formAddObjective = new PlanningObjectivesAndGoalsObjectivesForm();
            $formAddGoal = new PlanningObjectivesAndGoalsGoalsForm();
            $this->layout()->setTemplate('layout/layout-backend');
            $viewModel = new ViewModel();
            $viewModel->setTemplate('leaders-linked/high-performance-teams-groups-view/index.phtml');
            $viewModel->setVariables([
                'formFeed'    =>  $formFeed,
                'group_uuid'  =>  $group_uuid,
                'topic_uuid'=>$topic_uuid,
                'formTopicNormal' => $formTopicNomal,
                'urgent'=>$urgent,
                'type_meeting'=>Feed::FILE_TYPE_MEETING,
                'group_title'=>$highPerformanceTeamsGroups->title,
                'formMemberEdit'=>$formMemberEdit,
                'rolAdmin'=>$rolAdmin,
                'formAddObjective'=>$formAddObjective,
                'formAddGoal'=>$formAddGoal,
                'formAddTask'=>$formAddTask,
            ]);
            return $viewModel ;
            
            
        } else {
            return new JsonModel([
                'success' => false,
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
            ]);
        }
    
        
    }

   
    
}