Proyectos de Subversion LeadersLinked - Services

Rev

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'
            ]);
        }
    }
    
    
       
}