Proyectos de Subversion LeadersLinked - Services

Rev

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