Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
4388 nelberth 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Authentication\AuthenticationService;
7
use Laminas\Authentication\Result as AuthResult;
8
use Laminas\Db\Adapter\AdapterInterface;
9
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
10
use Laminas\Mvc\Controller\AbstractActionController;
11
use Laminas\Mvc\I18n\Translator;
12
use Laminas\Log\LoggerInterface;
13
use Laminas\View\Model\ViewModel;
14
use Laminas\View\Model\JsonModel;
15
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
16
 
4396 nelberth 17
use LeadersLinked\Mapper\IndustryMapper;
18
use LeadersLinked\Mapper\GroupTypeMapper;
19
use LeadersLinked\Mapper\GroupMemberMapper;
20
use LeadersLinked\Mapper\QueryMapper;
21
use LeadersLinked\Model\GroupMember;
22
 
4388 nelberth 23
class HighPerformanceTeamsMyGroupsController extends AbstractActionController
24
{
25
    /**
26
     *
27
     * @var AdapterInterface
28
     */
29
    private $adapter;
30
 
31
 
32
    /**
33
     *
34
     * @var AbstractAdapter
35
     */
36
    private $cache;
37
 
38
    /**
39
     *
40
     * @var  LoggerInterface
41
     */
42
    private $logger;
43
 
44
    /**
45
     *
46
     * @var array
47
     */
48
    private $config;
49
 
50
 
51
 
52
    /**
53
     *
54
     * @param AdapterInterface $adapter
55
     * @param AbstractAdapter $cache
56
     * @param LoggerInterface $logger
57
     * @param array $config
58
     */
59
    public function __construct($adapter, $cache , $logger, $config)
60
    {
61
        $this->adapter      = $adapter;
62
        $this->cache        = $cache;
63
        $this->logger       = $logger;
64
        $this->config       = $config;
65
 
66
 
67
    }
68
    public function indexAction()
69
    {
4396 nelberth 70
        $currentUserPlugin = $this->plugin('currentUserPlugin');
71
        $currentUser = $currentUserPlugin->getUser();
4388 nelberth 72
 
73
        $request = $this->getRequest();
74
        if($request->isGet()) {
75
 
76
 
4396 nelberth 77
            $headers  = $request->getHeaders();
4388 nelberth 78
 
4396 nelberth 79
            $isJson = false;
80
            if($headers->has('Accept')) {
81
                $accept = $headers->get('Accept');
82
 
83
                $prioritized = $accept->getPrioritized();
84
 
85
                foreach($prioritized as $key => $value) {
86
                    $raw = trim($value->getRaw());
87
 
88
                    if(!$isJson) {
89
                        $isJson = strpos($raw, 'json');
90
                    }
91
 
92
                }
93
            }
94
 
95
            if($isJson) {
96
                $search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));
97
 
98
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
99
                $allowView = $acl->isAllowed($currentUser->usertype_id, 'group/view');
100
                $allowEdit = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/edit');
101
                $allowDelete = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/delete');
102
 
103
 
104
                $queryMapper = QueryMapper::getInstance($this->adapter);
105
 
106
                $select = $queryMapper->getSql()->select(GroupMapper::_TABLE);
107
                $select->columns(['id', 'uuid', 'name', 'privacy',  'image', 'status']);
108
                $select->where->equalTo('status', Group::STATUS_ACTIVE);
109
 
110
                if($search) {
111
                    $select->where->like('name', '%' . $search . '%');
112
                }
113
                $select->where->equalTo('user_id', $currentUser->id);
114
                $select->order('name ASC');
115
 
116
                $records = $queryMapper->fetchAll($select);
117
 
118
 
119
                $values = [
120
                    Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',
121
                    Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'
122
                ];
123
 
124
 
125
                $items = [];
126
                foreach($records as $record)
127
                {
128
 
129
                    $item = [
130
                        'name' => $record['name'],
131
                        'privacy' => $values[$record['privacy']],
132
                        'image' => $this->url()->fromRoute('storage', ['type' => 'group', 'code' => $record['uuid'], 'filename' => $record['image'] ]),
133
                        'link_view' => $allowView ? $this->url()->fromRoute('group/view', ['id' => $record['uuid'] ])  : '',
134
                        'link_edit' => $allowEdit ? $this->url()->fromRoute('group/my-groups/edit', ['id' => $record['uuid'] ])  : '',
135
                        'link_delete' => $allowDelete ? $this->url()->fromRoute('group/my-groups/delete', ['id' => $record['uuid'] ]) : '',
136
 
137
                    ];
138
 
139
                    array_push($items, $item);
140
                }
141
 
142
 
143
 
144
                $response = [
145
                    'success' => true,
146
                    'data' => $items
147
                ];
148
 
149
                return new JsonModel($response);
150
 
151
 
152
            } else {
153
                $industries = [];
154
                $industryMapper = IndustryMapper::getInstance($this->adapter);
155
                $records = $industryMapper->fetchAllActives();
156
                foreach($records as $record)
157
                {
158
                    $industries[$record->uuid] = $record->name;
159
                }
160
 
161
                $groupTypes = [];
162
                $groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);
163
                $records = $groupTypeMapper->fetchAllActives();
164
                foreach($records as $record)
165
                {
166
                    $groupTypes[$record->uuid] = $record->name;
167
                }
168
 
169
                $formAdd = new CreateForm($this->adapter);
170
 
171
                $this->layout()->setTemplate('layout/layout-backend');
172
                $viewModel = new ViewModel();
173
                $viewModel->setTemplate('leaders-linked/high-performance-teams-my-groups/index.phtml');
174
                $viewModel->setVariables([
175
                    'industries' => $industries,
176
                    'types' => $groupTypes,
177
                    'formAdd' => $formAdd
178
                ]);
179
                return $viewModel ;
180
            }
181
 
4388 nelberth 182
        } else {
183
            return new JsonModel([
184
                'success' => false,
185
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
4396 nelberth 186
            ]);
4388 nelberth 187
        }
188
    }
4396 nelberth 189
 
4388 nelberth 190
}