Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5751 | Rev 5848 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Mapper\PostMapper;
13
use LeadersLinked\Mapper\FeedMapper;
5765 efrain 14
use LeadersLinked\Model\ContentReaction;
1 www 15
use LeadersLinked\Model\Feed;
16
use LeadersLinked\Mapper\LocationMapper;
17
use LeadersLinked\Mapper\UserMapper;
18
use LeadersLinked\Mapper\NotificationMapper;
19
use LeadersLinked\Mapper\UserProfileMapper;
20
use LeadersLinked\Mapper\ProfileVisitMapper;
21
use LeadersLinked\Mapper\ConnectionMapper;
22
use LeadersLinked\Form\Feed\CreateForm;
23
use LeadersLinked\Form\Feed\ShareForm;
4842 efrain 24
use LeadersLinked\Model\Network;
4911 efrain 25
use LeadersLinked\Library\Functions;
5205 efrain 26
use LeadersLinked\Mapper\CompanyMapper;
27
use LeadersLinked\Mapper\CompanyServiceMapper;
1 www 28
 
29
class DashboardController extends AbstractActionController
30
{
31
    /**
32
     *
33
     * @var AdapterInterface
34
     */
35
    private $adapter;
36
 
37
 
38
    /**
39
     *
40
     * @var AbstractAdapter
41
     */
42
    private $cache;
43
 
44
    /**
45
     *
46
     * @var  LoggerInterface
47
     */
48
    private $logger;
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
 
69
 
70
    public function indexAction()
71
    {
5765 efrain 72
 
73
 
74
 
1 www 75
        $currentUserPlugin = $this->plugin('currentUserPlugin');
76
        $currentUser = $currentUserPlugin->getUser();
77
 
4842 efrain 78
        $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
79
        $currentNetwork = $currentNetworkPlugin->getNetwork();
80
 
1 www 81
        $userMapper = UserMapper::getInstance($this->adapter);
82
        $user = $userMapper->fetchOne($currentUser->id);
83
 
84
        $request = $this->getRequest();
85
        if($request->isGet()) {
86
 
5205 efrain 87
 
1 www 88
 
5205 efrain 89
 
90
 
91
 
92
 
93
 
1 www 94
            $headers  = $request->getHeaders();
95
 
96
            $isJson = false;
97
            if($headers->has('Accept')) {
98
                $accept = $headers->get('Accept');
99
 
100
                $prioritized = $accept->getPrioritized();
101
 
102
                foreach($prioritized as $key => $value) {
103
                    $raw = trim($value->getRaw());
104
 
105
                    if(!$isJson) {
106
                        $isJson = strpos($raw, 'json');
107
                    }
108
 
109
                }
110
            }
111
 
112
            if($isJson) {
113
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
4714 efrain 114
                //$visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
1 www 115
 
4714 efrain 116
                $visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
117
 
4842 efrain 118
                if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER)  {
119
                    $connectionMapper = ConnectionMapper::getInstance($this->adapter);
120
                    $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
121
                } else {
122
                    if($currentNetwork->default == Network::DEFAULT_YES) {
123
                        $connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
124
                    } else {
125
                        $connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
126
                    }
127
                }
1 www 128
 
129
                if($user->location_id) {
130
                    $locationMapper = LocationMapper::getInstance($this->adapter);
131
                    $location = $locationMapper->fetchOne($user->location_id);
132
 
133
                    $country = $location->country;
134
                } else {
135
                    $country = '';
136
                }
137
 
138
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
139
 
140
                return new JsonModel([
141
                    'user_uuid' => $user->uuid,
142
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
143
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
144
                    'country' => $country,
145
                    'visits' => $visits,
146
                    'connections' => $connections,
147
                    'image_size' => $image_size,
148
                ]);
149
 
150
            } else {
3298 efrain 151
 
1 www 152
                $feed_uuid = $this->params()->fromRoute('feed');
153
                if($feed_uuid) {
154
                    $feedMapper = FeedMapper::getInstance($this->adapter);
3146 efrain 155
                    $feed = $feedMapper->fetchOneByUuidAnyStatus($feed_uuid);
1 www 156
                } else {
3298 efrain 157
                    $feed = '';
1 www 158
                }
159
 
160
 
161
 
162
 
163
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
4714 efrain 164
               // $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
165
                $visits = $profileVisitMapper->getTotalByVisitedIdGroupVisitorId($currentUser->id);
1 www 166
 
167
 
4842 efrain 168
                if($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER)  {
169
                    $connectionMapper = ConnectionMapper::getInstance($this->adapter);
170
                    $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
171
                } else {
172
                    if($currentNetwork->default == Network::DEFAULT_YES) {
173
                        $connections = $userMapper->fetchCountActiveByDefaultNetworkId($currentNetwork->id);
174
                    } else {
175
                        $connections = $userMapper->fetchCountActiveByOtherNetworkId($currentNetwork->id);
176
                    }
177
 
178
                    $connections--;
179
                }
1 www 180
 
4842 efrain 181
 
182
 
1 www 183
                if($user->location_id) {
184
                    $locationMapper = LocationMapper::getInstance($this->adapter);
185
                    $location = $locationMapper->fetchOne($user->location_id);
186
 
187
                    $country = $location->country;
188
                } else {
189
                    $country = '';
190
                }
191
 
192
                $userProfileMapper = UserProfileMapper::getInstance($this->adapter);
193
                $userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
194
 
195
 
5751 efrain 196
                $imageSize = $this->config['leaderslinked.image_sizes.feed_image_upload'];
1 www 197
 
198
                $formFeed = new CreateForm();
199
                $formShare = new ShareForm();
200
 
3146 efrain 201
 
3298 efrain 202
                if($feed) {
5751 efrain 203
                    $routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user', 'feed' => $feed->uuid]);
3146 efrain 204
                } else {
5751 efrain 205
                    $routeTimeline = $this->url()->fromRoute('feed/timeline', ['id' => $currentUser->uuid, 'type' => 'user']);
3146 efrain 206
                }
207
 
208
 
209
 
210
 
211
 
1 www 212
                $this->layout()->setTemplate('layout/layout.phtml');
213
                $viewModel = new ViewModel();
214
                $viewModel->setVariables([
215
                    'user_uuid' => $user->uuid,
216
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
217
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
218
                    'description' => empty($userProfile->description) ? '' :  trim($userProfile->description) ,
219
                    'country' => $country,
220
                    'visits' => $visits,
221
                    'connections' => $connections,
3146 efrain 222
                    'feed' => '',
5751 efrain 223
                    'routeTimeline' => $routeTimeline,
1 www 224
                    'formFeed' => $formFeed,
225
                    'formShare' => $formShare,
5751 efrain 226
                    'imageSize' => $imageSize,
1 www 227
                ]);
228
                $viewModel->setTemplate('leaders-linked/dashboard/index.phtml');
229
                return $viewModel ;
230
            }
231
        }
232
 
233
        return new JsonModel([
234
           'success' => false,
235
           'data' => 'ERROR_METHOD_NOT_ALLOWED'
236
        ]);
237
    }
238
 
60 efrain 239
    public function dashboard2Action()
1 www 240
    {
60 efrain 241
        $currentUserPlugin = $this->plugin('currentUserPlugin');
242
        $currentUser = $currentUserPlugin->getUser();
1 www 243
 
60 efrain 244
        $userMapper = UserMapper::getInstance($this->adapter);
245
        $user = $userMapper->fetchOne($currentUser->id);
246
 
247
        $request = $this->getRequest();
248
        if($request->isGet()) {
249
 
250
 
251
            $headers  = $request->getHeaders();
252
 
253
            $isJson = false;
254
            if($headers->has('Accept')) {
255
                $accept = $headers->get('Accept');
256
 
257
                $prioritized = $accept->getPrioritized();
258
 
259
                foreach($prioritized as $key => $value) {
260
                    $raw = trim($value->getRaw());
261
 
262
                    if(!$isJson) {
263
                        $isJson = strpos($raw, 'json');
264
                    }
265
 
266
                }
267
            }
268
 
269
            if($isJson) {
270
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
271
                $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
272
 
273
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
274
                $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
275
 
276
 
277
                if($user->location_id) {
278
                    $locationMapper = LocationMapper::getInstance($this->adapter);
279
                    $location = $locationMapper->fetchOne($user->location_id);
280
 
281
                    $country = $location->country;
282
                } else {
283
                    $country = '';
284
                }
285
 
286
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
287
 
288
                return new JsonModel([
289
                    'user_uuid' => $user->uuid,
290
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
291
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
292
                    'country' => $country,
293
                    'visits' => $visits,
294
                    'connections' => $connections,
295
                    'image_size' => $image_size,
296
                ]);
297
 
298
            } else {
299
                $feed_uuid = $this->params()->fromRoute('feed');
300
                if($feed_uuid) {
301
                    $feedMapper = FeedMapper::getInstance($this->adapter);
302
                    $feed = $feedMapper->fetchOneByUuid($feed_uuid);
303
                    if($feed && $feed->type == Feed::TYPE_UPDATE && $feed->user_id == $currentUser->id && $feed->status == Feed::STATUS_PUBLISHED) {
304
                        $notificationMapper = NotificationMapper::getInstance($this->adapter);
305
                        $notificationMapper->markAllNotificationsAsReadByUserIdAndFeedId($currentUser->id, $feed->id);
306
                    } else {
307
                        $feed_uuid = '';
308
                    }
309
                } else {
310
                    $feed_uuid = '';
311
                }
312
 
313
 
314
 
315
 
316
                $profileVisitMapper = ProfileVisitMapper::getInstance($this->adapter);
317
                $visits = $profileVisitMapper->getTotalByVisitedId($currentUser->id);
318
 
319
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
320
                $connections = $connectionMapper->fetchTotalConnectionByUser($currentUser->id);
321
 
322
 
323
                if($user->location_id) {
324
                    $locationMapper = LocationMapper::getInstance($this->adapter);
325
                    $location = $locationMapper->fetchOne($user->location_id);
326
 
327
                    $country = $location->country;
328
                } else {
329
                    $country = '';
330
                }
331
 
332
                $userProfileMapper = UserProfileMapper::getInstance($this->adapter);
333
                $userProfile = $userProfileMapper->fetchOnePublicByUserId($currentUser->id);
334
 
335
 
336
                $image_size = $this->config['leaderslinked.image_sizes.feed_image_upload'];
337
 
338
                $formFeed = new CreateForm();
339
                $formShare = new ShareForm();
340
 
341
                $this->layout()->setTemplate('layout/layout.phtml');
342
                $viewModel = new ViewModel();
343
                $viewModel->setVariables([
344
                    'user_uuid' => $user->uuid,
345
                    'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image]),
346
                    'fullname' => trim($user->first_name . ' ' . $user->last_name),
347
                    'description' => empty($userProfile->description) ? '' :  trim($userProfile->description) ,
348
                    'country' => $country,
349
                    'visits' => $visits,
350
                    'connections' => $connections,
351
                    'feed' => $feed_uuid,
352
                    'formFeed' => $formFeed,
353
                    'formShare' => $formShare,
354
                    'image_size' => $image_size,
355
                ]);
356
                $viewModel->setTemplate('leaders-linked/dashboard/dashboard2.phtml');
357
                return $viewModel ;
358
            }
359
        }
360
 
1 www 361
        return new JsonModel([
60 efrain 362
            'success' => false,
363
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
1 www 364
        ]);
365
    }
366
}