Rev 192 | Rev 333 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Controller;
use Laminas\Db\Adapter\AdapterInterface;
use Laminas\Mvc\Controller\AbstractActionController;
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
use Laminas\Log\LoggerInterface;
use Laminas\View\Model\ViewModel;
use Laminas\View\Model\JsonModel;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Library\Functions;
use LeadersLinked\Mapper\UserPasswordMapper;
use LeadersLinked\Form\AccountSetting\NotificationSettingForm;
use LeadersLinked\Mapper\UserNotificationSettingMapper;
use LeadersLinked\Form\AccountSetting\ChangePasswordForm;
use LeadersLinked\Form\AccountSetting\ChangeImageForm;
use LeadersLinked\Library\Image;
use LeadersLinked\Form\AccountSetting\LocationForm;
use LeadersLinked\Model\Location;
use LeadersLinked\Mapper\LocationMapper;
use LeadersLinked\Form\AccountSetting\PrivacySettingForm;
use LeadersLinked\Mapper\UserProfileMapper;
use LeadersLinked\Form\AccountSetting\BasicForm;
use LeadersLinked\Form\Transaction\FundsAddForm;
use LeadersLinked\Mapper\UserBrowserMapper;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\DeviceHistoryMapper;
use LeadersLinked\Mapper\DeviceMapper;
use Laminas\Hydrator\ArraySerializableHydrator;
use Laminas\Db\ResultSet\HydratingResultSet;
use Laminas\Paginator\Adapter\DbSelect;
use Laminas\Paginator\Paginator;
use LeadersLinked\Mapper\UserIpMapper;
use LeadersLinked\Model\Transaction;
use LeadersLinked\Model\Provider;
use LeadersLinked\Mapper\TransactionMapper;
use LeadersLinked\Mapper\UserProviderMapper;
use LeadersLinked\Model\UserProvider;
use LeadersLinked\Model\UserPassword;
use LeadersLinked\Model\UserDeleted;
use LeadersLinked\Mapper\UserDeletedMapper;
use LeadersLinked\Model\UserType;
use LeadersLinked\Model\User;
use LeadersLinked\Library\QueueEmail;
use LeadersLinked\Mapper\EmailTemplateMapper;
use LeadersLinked\Model\EmailTemplate;
use LeadersLinked\Cache\CacheInterface;
use PayPalHttp\HttpException;
use PayPalCheckoutSdk\Core\SandboxEnvironment;
use PayPalCheckoutSdk\Core\ProductionEnvironment;
use PayPalCheckoutSdk\Core\PayPalHttpClient;
use PayPalCheckoutSdk\Orders\OrdersCreateRequest;
use Laminas\Mvc\I18n\Translator;
use LeadersLinked\Mapper\AbuseReportMapper;
use LeadersLinked\Model\AbuseReport;
class AbuseReportController extends AbstractActionController
{
/**
*
* @var \Laminas\Db\Adapter\AdapterInterface
*/
private $adapter;
/**
*
* @var \LeadersLinked\Cache\CacheInterface
*/
private $cache;
/**
*
* @var \Laminas\Log\LoggerInterface
*/
private $logger;
/**
*
* @var array
*/
private $config;
/**
*
* @var \Laminas\Mvc\I18n\Translator
*/
private $translator;
/**
*
* @param \Laminas\Db\Adapter\AdapterInterface $adapter
* @param \LeadersLinked\Cache\CacheInterface $cache
* @param \Laminas\Log\LoggerInterface LoggerInterface $logger
* @param array $config
* @param \Laminas\Mvc\I18n\Translator $translator
*/
public function __construct($adapter, $cache, $logger, $config, $translator)
{
$this->adapter = $adapter;
$this->cache = $cache;
$this->logger = $logger;
$this->config = $config;
$this->translator = $translator;
}
public function indexAction()
{
$request = $this->getRequest();
$request = $this->getRequest();
if ($request->isGet()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$search = $this->params()->fromQuery('search');
$search = empty($search['value']) ? '' : Functions::sanitizeFilterString($search['value']);
$page = intval($this->params()->fromQuery('start', 1), 10);
$records_x_page = intval($this->params()->fromQuery('length', 10), 10);
$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
$paginator = $abuseReportMapper->fetchAllDataTableByUserReportingId($currentUser->id, $page, $records_x_page);
$userMapper = UserMapper::getInstance($this->adapter);
$users = [];
$items = [];
$records = $paginator->getCurrentItems();
foreach ($records as $record)
{
$status = '';
switch($record->status) {
case AbuseReport::STATUS_PENDING :
$status = 'LABEL_PENDING';
break;
case AbuseReport::STATUS_IN_REVIEW :
$status = 'LABEL_IN_REVIEW';
break;
case AbuseReport::STATUS_COMPLETED :
$status = 'LABEL_COMPLETED';
break;
}
$reason = '';
switch($record->reason) {
case AbuseReport::REASON_ADDICTION :
$reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';
break;
case AbuseReport::REASON_DISCRIMINATION :
$reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';
break;
case AbuseReport::REASON_OFENSIVE :
$reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';
break;
case AbuseReport::REASON_SEXUALITY :
$reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';
break;
case AbuseReport::REASON_TERRORISM :
$reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';
break;
case AbuseReport::READON_OTHER :
$reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';
break;
}
$type = '';
switch($record->type)
{
case AbuseReport::TYPE_FEED :
$type = 'LABEL_ABUSE_TYPE_FEED';
break;
case AbuseReport::TYPE_POST :
$type = 'LABEL_ABUSE_TYPE_POST';
break;
case AbuseReport::TYPE_INMAIL_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';
break;
case AbuseReport::TYPE_COMMENT :
$type = 'LABEL_ABUSE_TYPE_COMMENT';
break;
case AbuseReport::TYPE_CHAT_USER_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';
break;
case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';
break;
}
if(isset($users[$record->user_reported_id])) {
$user = $users[ $record->user_reported_id ];
} else {
$user = $userMapper->fetchOne( $record->user_reported_id );
if($user) {
$users[ $record->user_reported_id ] = $user;
}
}
if(!$user) {
continue;
}
//print_r($record); exit;
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $record->added_on);
$item = [
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image], ['force_canonical' => true]),
'status' => $status,
'reason' => $reason,
'type' => $type,
'date' => $dt->format('d/m/Y H:i a'),
'actions' => [
'link_view' => $this->url()->fromRoute('abuse-report/view', ['id' => $record->uuid])
],
];
array_push($items, $item);
}
return new JsonModel([
'success' => true,
'data' => [
'items' => $items,
'total' => $paginator->getTotalItemCount(),
]
]);
} else {
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);;
}
}
public function viewAction()
{
$request = $this->getRequest();
if($request->isGet()) {
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$request = $this->getRequest();
$id = $this->params()->fromRoute('id');
if(!$id) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_INVALID_PARAMETER'
]);
}
$abuseReportMapper = AbuseReportMapper::getInstance($this->adapter);
$abuseReport = $abuseReportMapper->fetchOneByUuid($id);
if(!$abuseReport) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_ABUSE_REPORT_NOT_FOUND'
]);
}
if($abuseReport->user_reporting_id != $currentUser->id) {
return new JsonModel([
'success' => false,
'data' => 'ERROR_UNAUTHORIZED'
]);
}
$status = '';
switch($abuseReport->status) {
case AbuseReport::STATUS_PENDING :
$status = 'LABEL_PENDING';
break;
case AbuseReport::STATUS_IN_REVIEW :
$status = 'LABEL_IN_REVIEW';
break;
case AbuseReport::STATUS_COMPLETED :
$status = 'LABEL_COMPLETED';
break;
}
$type = '';
switch($abuseReport->type)
{
case AbuseReport::TYPE_FEED :
$type = 'LABEL_ABUSE_TYPE_FEED';
break;
case AbuseReport::TYPE_POST :
$type = 'LABEL_ABUSE_TYPE_POST';
break;
case AbuseReport::TYPE_INMAIL_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_INMAIL_MESSAGE';
break;
case AbuseReport::TYPE_COMMENT :
$type = 'LABEL_ABUSE_TYPE_COMMENT';
break;
case AbuseReport::TYPE_CHAT_USER_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_CHAT_USER_MESSAGE';
break;
case AbuseReport::TYPE_CHAT_GROUP_MESSAGE :
$type = 'LABEL_ABUSE_TYPE_CHAT_GROUP_MESSAGE';
break;
}
$reason = '';
switch($abuseReport->reason) {
case AbuseReport::REASON_ADDICTION :
$reason = 'LABEL_ABUSE_REPORT_REASON_ADDICTION';
break;
case AbuseReport::REASON_DISCRIMINATION :
$reason = 'LABEL_ABUSE_REPORT_REASON_DISCRIMINATION';
break;
case AbuseReport::REASON_OFENSIVE :
$reason = 'LABEL_ABUSE_REPORT_REASON_OFENSIVE';
break;
case AbuseReport::REASON_SEXUALITY :
$reason = 'LABEL_ABUSE_REPORT_REASON_SEXUALITY';
break;
case AbuseReport::REASON_TERRORISM :
$reason = 'LABEL_ABUSE_REPORT_REASON_TERRORISM';
break;
case AbuseReport::READON_OTHER :
$reason = 'LABEL_ABUSE_REPORT_REASON_OTHER';
break;
}
$userMapper = UserMapper::getInstance($this->adapter);
$user = $userMapper->fetchOne($abuseReport->user_reported_id);
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $abuseReport->added_on);
$data = [
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'email' => $user->email,
'image' => $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $user->uuid, 'filename' => $user->image], ['force_canonical' => true]),
'status' => $status,
'reason' => $reason,
'type' => $type,
'commet' => $abuseReport->comment,
'review' => $abuseReport->review,
'date' => $dt->format('d/m/Y H:i a'),
];
return new JsonModel([
'success' => true,
'data' => $data
]);
} else {
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
}
}