Proyectos de Subversion LeadersLinked - Services

Rev

Rev 333 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
192 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
7
use Laminas\Mvc\Controller\AbstractActionController;
8
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Mapper\UserMapper;
13
use LeadersLinked\Library\Functions;
14
use LeadersLinked\Mapper\UserPasswordMapper;
15
use LeadersLinked\Form\AccountSetting\NotificationSettingForm;
16
use LeadersLinked\Mapper\UserNotificationSettingMapper;
17
use LeadersLinked\Form\AccountSetting\ChangePasswordForm;
18
use LeadersLinked\Form\AccountSetting\ChangeImageForm;
19
use LeadersLinked\Library\Image;
20
use LeadersLinked\Form\AccountSetting\LocationForm;
21
use LeadersLinked\Model\Location;
22
use LeadersLinked\Mapper\LocationMapper;
23
use LeadersLinked\Form\AccountSetting\PrivacySettingForm;
24
use LeadersLinked\Mapper\UserProfileMapper;
25
use LeadersLinked\Form\AccountSetting\BasicForm;
26
use LeadersLinked\Form\Transaction\FundsAddForm;
27
use LeadersLinked\Mapper\UserBrowserMapper;
28
use LeadersLinked\Mapper\QueryMapper;
29
use LeadersLinked\Mapper\DeviceHistoryMapper;
30
use LeadersLinked\Mapper\DeviceMapper;
31
use Laminas\Hydrator\ArraySerializableHydrator;
32
use Laminas\Db\ResultSet\HydratingResultSet;
33
use Laminas\Paginator\Adapter\DbSelect;
34
use Laminas\Paginator\Paginator;
35
use LeadersLinked\Mapper\UserIpMapper;
36
use LeadersLinked\Model\Transaction;
37
use LeadersLinked\Model\Provider;
38
use LeadersLinked\Mapper\TransactionMapper;
39
use LeadersLinked\Mapper\UserProviderMapper;
40
use LeadersLinked\Model\UserProvider;
41
use LeadersLinked\Model\UserPassword;
42
use LeadersLinked\Model\UserDeleted;
43
use LeadersLinked\Mapper\UserDeletedMapper;
44
use LeadersLinked\Model\UserType;
45
use LeadersLinked\Model\User;
46
use LeadersLinked\Library\QueueEmail;
47
use LeadersLinked\Mapper\EmailTemplateMapper;
48
use LeadersLinked\Model\EmailTemplate;
49
use LeadersLinked\Cache\CacheInterface;
50
use PayPalHttp\HttpException;
51
use PayPalCheckoutSdk\Core\SandboxEnvironment;
52
use PayPalCheckoutSdk\Core\ProductionEnvironment;
53
use PayPalCheckoutSdk\Core\PayPalHttpClient;
54
use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
55
use Laminas\Mvc\I18n\Translator;
203 efrain 56
use LeadersLinked\Mapper\AbuseReportMapper;
57
use LeadersLinked\Model\AbuseReport;
283 www 58
use LeadersLinked\Library\Storage;
192 efrain 59
 
60
 
61
class AbuseReportController extends AbstractActionController
62
{
63
    /**
64
     *
65
     * @var \Laminas\Db\Adapter\AdapterInterface
66
     */
67
    private $adapter;
68
 
69
    /**
70
     *
71
     * @var \LeadersLinked\Cache\CacheInterface
72
     */
73
    private $cache;
74
 
75
 
76
    /**
77
     *
78
     * @var \Laminas\Log\LoggerInterface
79
     */
80
    private $logger;
81
 
82
    /**
83
     *
84
     * @var array
85
     */
86
    private $config;
87
 
88
 
89
    /**
90
     *
91
     * @var \Laminas\Mvc\I18n\Translator
92
     */
93
    private $translator;
94
 
95
 
96
    /**
97
     *
98
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
99
     * @param \LeadersLinked\Cache\CacheInterface $cache
100
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
101
     * @param array $config
102
     * @param \Laminas\Mvc\I18n\Translator $translator
103
     */
104
    public function __construct($adapter, $cache, $logger, $config, $translator)
105
    {
106
        $this->adapter      = $adapter;
107
        $this->cache        = $cache;
108
        $this->logger       = $logger;
109
        $this->config       = $config;
110
        $this->translator   = $translator;
111
    }
112
 
113
 
114
 
115
    public function indexAction()
116
    {
117
        $request = $this->getRequest();
203 efrain 118
 
119
        $request = $this->getRequest();
120
        if ($request->isGet()) {
283 www 121
 
333 www 122
            $storage = Storage::getInstance($this->config, $this->adapter);
283 www 123
 
192 efrain 124
            $currentUserPlugin = $this->plugin('currentUserPlugin');
125
            $currentUser = $currentUserPlugin->getUser();
126
 
203 efrain 127
                $search = $this->params()->fromQuery('search');
128
                $search = empty($search['value']) ? '' : Functions::sanitizeFilterString($search['value']);
192 efrain 129
 
203 efrain 130
                $page               = intval($this->params()->fromQuery('start', 1), 10);
131
                $records_x_page     = intval($this->params()->fromQuery('length', 10), 10);
192 efrain 132
 
133
 
203 efrain 134
                $abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
135
                $paginator = $abuseReportMapper->fetchAllDataTableByUserReportingId($currentUser->id, $page, $records_x_page);
192 efrain 136
 
203 efrain 137
                $userMapper = UserMapper::getInstance($this->adapter);
138
                $users = [];
192 efrain 139
 
140
 
203 efrain 141
                $items = [];
142
                $records = $paginator->getCurrentItems();
143
                foreach ($records as $record)
192 efrain 144
                {
145
 
203 efrain 146
                    $status = '';
147
                    switch($record->status) {
148
                        case AbuseReport::STATUS_PENDING :
149
                            $status = 'LABEL_PENDING';
150
                            break;
151
 
152
                        case AbuseReport::STATUS_IN_REVIEW :
153
                            $status = 'LABEL_IN_REVIEW';
154
                            break;
155
 
156
                        case AbuseReport::STATUS_COMPLETED :
157
                            $status = 'LABEL_COMPLETED';
158
                            break;
192 efrain 159
                    }
160
 
203 efrain 161
                    $reason = '';
162
                    switch($record->reason) {
163
                        case AbuseReport::REASON_ADDICTION :
164
                            $reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';
165
                            break;
192 efrain 166
 
203 efrain 167
                        case AbuseReport::REASON_DISCRIMINATION :
168
                            $reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';
169
                            break;
192 efrain 170
 
203 efrain 171
                        case AbuseReport::REASON_OFENSIVE :
172
                            $reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';
173
                            break;
174
 
175
                        case AbuseReport::REASON_SEXUALITY :
176
                            $reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';
177
                            break;
178
 
179
                        case AbuseReport::REASON_TERRORISM :
180
                            $reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';
181
                            break;
182
 
183
                        case AbuseReport::READON_OTHER :
184
                            $reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';
185
                            break;
186
 
192 efrain 187
                    }
188
 
203 efrain 189
                    $type = '';
190
                    switch($record->type)
191
                    {
192
                        case AbuseReport::TYPE_FEED :
193
                            $type = 'LABEL_ABUSE_TYPE_FEED';
194
                            break;
195
 
196
                        case AbuseReport::TYPE_POST :
197
                            $type = 'LABEL_ABUSE_TYPE_POST';
198
                            break;
199
 
200
                        case AbuseReport::TYPE_INMAIL_MESSAGE :
201
                            $type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';
202
                            break;
203
 
204
 
205
                        case AbuseReport::TYPE_COMMENT :
206
                            $type = 'LABEL_ABUSE_TYPE_COMMENT';
207
                            break;
208
 
209
 
210
                        case AbuseReport::TYPE_CHAT_USER_MESSAGE :
211
                            $type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';
212
                            break;
213
 
214
 
215
                        case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :
216
                            $type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';
217
                            break;
218
 
219
 
192 efrain 220
                    }
221
 
203 efrain 222
                    if(isset($users[$record->user_reported_id])) {
223
                        $user = $users[ $record->user_reported_id ];
224
 
225
                    } else {
226
                        $user = $userMapper->fetchOne( $record->user_reported_id );
227
                        if($user) {
228
                            $users[ $record->user_reported_id ] = $user;
192 efrain 229
                        }
230
                    }
231
 
203 efrain 232
                    if(!$user) {
233
                        continue;
192 efrain 234
 
235
 
236
 
237
                    }
238
 
283 www 239
 
203 efrain 240
                    $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);
283 www 241
 
203 efrain 242
                    $item = [
283 www 243
                        'first_name'    => $user->first_name,
244
                        'last_name'     => $user->last_name,
245
                        'email'         => $user->email,
246
                        'image'         => $storage->getUserImage($user),
247
                        'status'        => $status,
248
                        'reason'        => $reason,
249
                        'type'          => $type,
250
                        'date'          => $dt->format('d/m/Y H:i a'),
251
                        'actions'       => [
203 efrain 252
                            'link_view' => $this->url()->fromRoute('abuse-report/view', ['id' => $record->uuid])
253
                        ],
254
                    ];
192 efrain 255
 
203 efrain 256
                    array_push($items, $item);
192 efrain 257
                }
258
 
259
                return new JsonModel([
203 efrain 260
                    'success' => true,
261
                    'data' => [
262
                        'items' => $items,
263
                        'total' => $paginator->getTotalItemCount(),
264
                    ]
192 efrain 265
                ]);
203 efrain 266
        } else {
192 efrain 267
            return new JsonModel([
268
                'success' => false,
269
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
203 efrain 270
            ]);;
192 efrain 271
        }
272
    }
273
 
203 efrain 274
    public function viewAction()
192 efrain 275
    {
203 efrain 276
 
192 efrain 277
        $request = $this->getRequest();
278
        if($request->isGet()) {
283 www 279
 
333 www 280
            $storage = Storage::getInstance($this->config, $this->adapter);
283 www 281
 
192 efrain 282
            $currentUserPlugin = $this->plugin('currentUserPlugin');
283
            $currentUser = $currentUserPlugin->getUser();
284
 
203 efrain 285
            $request = $this->getRequest();
286
            $id = $this->params()->fromRoute('id');
192 efrain 287
 
203 efrain 288
            if(!$id) {
192 efrain 289
                return new JsonModel([
203 efrain 290
                    'success' => false,
291
                    'data' => 'ERROR_INVALID_PARAMETER'
192 efrain 292
                ]);
293
 
294
            }
295
 
203 efrain 296
            $abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
297
            $abuseReport = $abuseReportMapper->fetchOneByUuid($id);
192 efrain 298
 
203 efrain 299
            if(!$abuseReport) {
192 efrain 300
 
301
                return new JsonModel([
302
                    'success' => false,
203 efrain 303
                    'data' => 'ERROR_ABUSE_REPORT_NOT_FOUND'
192 efrain 304
                ]);
305
 
306
            }
307
 
203 efrain 308
            if($abuseReport->user_reporting_id != $currentUser->id) {
192 efrain 309
                return new JsonModel([
310
                    'success' => false,
203 efrain 311
                    'data' => 'ERROR_UNAUTHORIZED'
192 efrain 312
                ]);
313
            }
314
 
203 efrain 315
            $status = '';
316
            switch($abuseReport->status) {
317
                case AbuseReport::STATUS_PENDING :
318
                    $status = 'LABEL_PENDING';
319
                    break;
192 efrain 320
 
203 efrain 321
                case AbuseReport::STATUS_IN_REVIEW :
322
                    $status = 'LABEL_IN_REVIEW';
323
                    break;
192 efrain 324
 
203 efrain 325
                case AbuseReport::STATUS_COMPLETED :
326
                    $status = 'LABEL_COMPLETED';
327
                    break;
192 efrain 328
            }
329
 
203 efrain 330
            $type = '';
331
            switch($abuseReport->type)
332
            {
333
                case AbuseReport::TYPE_FEED :
334
                    $type = 'LABEL_ABUSE_TYPE_FEED';
335
                    break;
192 efrain 336
 
203 efrain 337
                case AbuseReport::TYPE_POST :
338
                    $type = 'LABEL_ABUSE_TYPE_POST';
339
                    break;
340
 
341
                case AbuseReport::TYPE_INMAIL_MESSAGE :
342
                        $type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';
343
                    break;
344
 
192 efrain 345
 
203 efrain 346
                case AbuseReport::TYPE_COMMENT :
347
                    $type = 'LABEL_ABUSE_TYPE_COMMENT';
348
                    break;
349
 
192 efrain 350
 
203 efrain 351
                case AbuseReport::TYPE_CHAT_USER_MESSAGE :
352
                    $type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';
353
                    break;
354
 
192 efrain 355
 
203 efrain 356
                case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :
357
                    $type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';
358
                    break;
359
 
192 efrain 360
 
361
            }
362
 
363
 
364
 
203 efrain 365
            $reason = '';
366
            switch($abuseReport->reason) {
367
                case AbuseReport::REASON_ADDICTION :
368
                    $reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';
369
                    break;
192 efrain 370
 
203 efrain 371
                case AbuseReport::REASON_DISCRIMINATION :
372
                    $reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';
373
                    break;
192 efrain 374
 
203 efrain 375
                case AbuseReport::REASON_OFENSIVE :
376
                    $reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';
377
                    break;
192 efrain 378
 
203 efrain 379
                case AbuseReport::REASON_SEXUALITY :
380
                    $reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';
381
                    break;
192 efrain 382
 
203 efrain 383
                case AbuseReport::REASON_TERRORISM :
384
                    $reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';
385
                    break;
192 efrain 386
 
203 efrain 387
                case AbuseReport::READON_OTHER :
388
                    $reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';
389
                    break;
192 efrain 390
 
391
            }
392
 
203 efrain 393
            $userMapper = UserMapper::getInstance($this->adapter);
394
            $user = $userMapper->fetchOne($abuseReport->user_reported_id);
283 www 395
 
192 efrain 396
 
203 efrain 397
            $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $abuseReport->added_on);
398
            $data = [
283 www 399
                'first_name'    => $user->first_name,
400
                'last_name'     => $user->last_name,
401
                'email'         => $user->email,
402
                'image'         =>  $storage->getUserImage($user),
403
                'status'        => $status,
404
                'reason'        => $reason,
405
                'type'          => $type,
406
                'commet'        => $abuseReport->comment,
407
                'review'        => $abuseReport->review,
408
                'date'          => $dt->format('d/m/Y H:i a'),
203 efrain 409
 
410
            ];
411
 
192 efrain 412
 
413
 
414
            return new JsonModel([
203 efrain 415
                'success'   => true,
416
                'data'      => $data
417
            ]);
418
 
419
 
420
 
421
        } else {
422
            return new JsonModel([
192 efrain 423
                'success' => false,
424
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
425
            ]);
426
        }
427
    }
428
 
429
 
203 efrain 430
 
192 efrain 431
}