Proyectos de Subversion LeadersLinked - Services

Rev

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