Proyectos de Subversion LeadersLinked - Backend

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
9095 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;
16768 efrain 9
 
9095 nelberth 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;
9136 nelberth 16
use LeadersLinked\Model\Feed;
17
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsViewTopicMapper;
18
use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
19
use LeadersLinked\Model\HighPerformanceTeamsGroups;
20
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;
21
use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
9149 nelberth 22
use LeadersLinked\Mapper\FeedMapper;
9290 nelberth 23
use LeadersLinked\Mapper\UserMapper;
9095 nelberth 24
 
9298 nelberth 25
use LeadersLinked\Library\Functions;
26
 
9136 nelberth 27
 
16701 efrain 28
 
9095 nelberth 29
class HighPerformanceTeamsGroupsViewCalendarController extends AbstractActionController
30
{
31
    /**
32
     *
33
     * @var AdapterInterface
34
     */
35
    private $adapter;
36
 
37
    /**
38
     *
39
     * @var  LoggerInterface
40
     */
41
    private $logger;
42
 
43
    /**
44
     *
45
     * @var array
46
     */
47
    private $config;
48
 
49
    /**
50
     *
51
     * @param AdapterInterface $adapter
52
     * @param LoggerInterface $logger
53
     * @param array $config
54
     */
16768 efrain 55
    public function __construct($adapter, $logger, $config)
9095 nelberth 56
    {
16768 efrain 57
        $this->adapter = $adapter;
58
        $this->logger = $logger;
59
        $this->config = $config;
9095 nelberth 60
    }
9135 nelberth 61
 
62
 
9095 nelberth 63
    public function indexAction()
64
    {
9135 nelberth 65
 
9095 nelberth 66
 
9135 nelberth 67
        $currentUserPlugin = $this->plugin('currentUserPlugin');
68
        $currentUser = $currentUserPlugin->getUser();
69
        $currentCompany = $currentUserPlugin->getCompany();
11084 nelberth 70
        $group_uuid =  $this->params()->fromRoute('group_id');
71
        $feed_uuid =  $this->params()->fromRoute('feed_id');
9135 nelberth 72
 
9095 nelberth 73
        $request = $this->getRequest();
74
        if($request->isGet()) {
75
 
76
 
9135 nelberth 77
            $headers  = $request->getHeaders();
9095 nelberth 78
 
9135 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
            }
9141 nelberth 94
 
9318 nelberth 95
            $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
96
            $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
11184 nelberth 97
            $this->layout()->setTemplate('layout/layout-backend');
98
            $viewModel = new ViewModel();
9318 nelberth 99
            if (!$highPerformanceTeamsGroups) {
11184 nelberth 100
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
101
                return $viewModel ;
9318 nelberth 102
            }
103
 
104
            if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
105
 
11184 nelberth 106
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
107
                return $viewModel ;
9318 nelberth 108
 
109
            }
11184 nelberth 110
 
11136 nelberth 111
            $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
112
            $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
113
            if(!$highPerformanceTeamsGroupsMember) {
11184 nelberth 114
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
115
                return $viewModel ;
11136 nelberth 116
            }
117
            if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
11184 nelberth 118
                $viewModel->setTemplate('leaders-linked/no-access/index.phtml');
119
                return $viewModel ;
11136 nelberth 120
            }
121
            $addTopicBoton=true;
122
            if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
123
                $addTopicBoton=false;
124
            }
9922 nelberth 125
 
126
 
127
            $viewModel->setTemplate('leaders-linked/high-performance-teams-groups-view-calendar/index.phtml');
128
            $viewModel->setVariables([
129
                'group_uuid'  =>  $group_uuid,
130
                'group_title'=>$highPerformanceTeamsGroups->title,
131
            ]);
132
            return $viewModel ;
133
 
134
        } else {
135
            return new JsonModel([
136
                'success' => false,
137
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
138
            ]);
139
        }
140
    }
141
 
142
    public function viewAction()
143
    {
144
 
16701 efrain 145
 
14740 efrain 146
        $now  = $utilMapper->getDatebaseNow();
9922 nelberth 147
 
148
        $currentUserPlugin = $this->plugin('currentUserPlugin');
149
        $currentUser = $currentUserPlugin->getUser();
150
        $currentCompany = $currentUserPlugin->getCompany();
11084 nelberth 151
        $group_uuid =  $this->params()->fromRoute('group_id');
152
        $feed_uuid =  $this->params()->fromRoute('feed_id');
9922 nelberth 153
 
154
        $request = $this->getRequest();
155
        if($request->isGet()) {
9142 nelberth 156
 
9922 nelberth 157
 
158
            $headers  = $request->getHeaders();
159
 
160
            $isJson = false;
161
            if($headers->has('Accept')) {
162
                $accept = $headers->get('Accept');
163
 
164
                $prioritized = $accept->getPrioritized();
165
 
166
                foreach($prioritized as $key => $value) {
167
                    $raw = trim($value->getRaw());
168
 
169
                    if(!$isJson) {
170
                        $isJson = strpos($raw, 'json');
171
                    }
172
 
173
                }
174
            }
175
            $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
16701 efrain 176
            $now = $highPerformanceTeamsGroupsMapper->getDatebaseNow();
177
 
9922 nelberth 178
            $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
179
 
180
            if (!$highPerformanceTeamsGroups) {
181
                $data = [
182
                    'success' => false,
183
                    'data' => 'ERROR_RECORD_NOT_FOUND'
184
                ];
185
 
186
                return new JsonModel($data);
187
            }
188
 
189
            if($highPerformanceTeamsGroups->status != HighPerformanceTeamsGroups::STATUS_ACTIVE) {
190
 
191
                return new JsonModel([
192
                    'success' => false,
193
                    'data' => 'ERROR_UNAUTHORIZED'
194
                ]);
195
 
196
            }
11136 nelberth 197
 
198
            $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
199
            $highPerformanceTeamsGroupsMember = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id, $currentUser->id);
200
            if(!$highPerformanceTeamsGroupsMember) {
201
                return new JsonModel([
202
                    'success' => false,
203
                    'data' => 'ERROR_RECORD_NOT_FOUND'
204
                ]);
205
            }
206
            if(!($highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED || $highPerformanceTeamsGroupsMember->status == HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN) ){
207
                return new JsonModel([
208
                    'success' => false,
209
                    'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS'
210
                ]);
211
            }
212
            $addTopicBoton=true;
213
            if($highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_MODERATOR||$highPerformanceTeamsGroupsMember->type==HighPerformanceTeamsGroupsMembers::TYPE_USER){
214
                $addTopicBoton=false;
215
            }
9922 nelberth 216
 
9135 nelberth 217
            if($isJson) {
9255 nelberth 218
                $acl = $this->getEvent()->getViewModel()->getVariable('acl');
9256 nelberth 219
                $allowView = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/calendar');
9135 nelberth 220
 
9144 nelberth 221
 
9281 nelberth 222
                $items = [];
9156 nelberth 223
                $feedMapper = FeedMapper::getInstance($this->adapter);
9264 nelberth 224
                if(isset($feed_uuid)){
14740 efrain 225
                    $record  = $feedMapper->fetchOneByUuid($feed_uuid);
9269 nelberth 226
 
14740 efrain 227
                    if($record->high_performance_group_id!=$highPerformanceTeamsGroups->id){
9264 nelberth 228
                        return new JsonModel([
229
                            'success' => false,
9276 nelberth 230
                            'data' => 'ERROR_METHOD_NOT_ALLOWED'
9264 nelberth 231
                        ]);
9281 nelberth 232
                    }
9290 nelberth 233
 
14740 efrain 234
                    $items = $this->renderFeed($record, $now);
9264 nelberth 235
                }else{
236
                    $records  = $feedMapper->fetchAllTypeCalendar($highPerformanceTeamsGroups->id);
9282 nelberth 237
                    $contador=1;
9271 nelberth 238
                    foreach($records as $record)
239
                    {
240
                        $item = [
241
                            'id' => $record->uuid,
242
                            'title' => 'Reunion #'.$contador,
243
                            'start' => $record->date.'T'.$record->time,
244
                            'color'=>'#00000'.$contador,
11084 nelberth 245
                            'link_feed'=> $allowView ? $this->url()->fromRoute('high-performance-teams/groups/view/calendar/view', ['group_id' => $highPerformanceTeamsGroups->uuid, 'feed_id'=>$record->uuid]) : '',
9271 nelberth 246
                        ];
247
                        $contador++;
248
                        array_push($items, $item);
249
                    }
9281 nelberth 250
                }
9273 nelberth 251
 
9179 nelberth 252
                return new JsonModel([
253
                    'success' => true,
254
                    'data' => [
255
                        'items' => $items,
256
                    ]
257
                ]);
9135 nelberth 258
 
259
            }
9095 nelberth 260
        } else {
9179 nelberth 261
            return new JsonModel([
262
                'success' => false,
263
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
264
            ]);
9095 nelberth 265
        }
266
    }
9135 nelberth 267
 
14740 efrain 268
    private function renderFeed($feed, $now)
9290 nelberth 269
    {
270
 
15351 efrain 271
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
272
        $network = $currentNetworkPlugin->getNetwork();
273
 
9290 nelberth 274
        $userMapper = UserMapper::getInstance($this->adapter);
275
        $user = $userMapper->fetchOne($feed->user_id);
14740 efrain 276
 
277
        $item['owner_time_elapse'] = Functions::timeAgo(  $feed->added_on, $now);
9290 nelberth 278
        $item['feed_priority'] = $feed->priority;
15351 efrain 279
        $item['owner_url'] = 'https://'. $network->main_hostname . '/profile/view/' . $user->uuid;
9290 nelberth 280
        $item['owner_image'] = $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]);
281
        $item['owner_name'] = $user->first_name . ' ' . $user->last_name;
282
        $item['owner_description'] = strip_tags($feed->description, 'p');
283
        $dt = \DateTime::createFromFormat('Y-m-d', $feed->date);
284
        $dt2 = \DateTime::createFromFormat('H:i:s', $feed->time);
285
        $item['owner_meeting_date'] =  $dt->format('d/m/Y');
286
        $item['owner_meeting_time'] =  $dt2->format('h:i a');
287
        $item['owner_meeting_link_type'] =  $feed->link_type;
288
        $item['owner_meeting_link_name'] =  $feed->link_name;
289
 
290
        return $item;
291
    }
292
 
9095 nelberth 293
}