Rev 15388 | Rev 15548 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Cache\Storage\Adapter\AbstractAdapter;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Form\ExtendUserMicrolearningForm;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Mapper\UserMapper;use Laminas\Db\Sql\Expression;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleUserMapper;use LeadersLinked\Model\CompanyMicrolearningCapsuleUser;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleMapper;use LeadersLinked\Mapper\CompanyMicrolearningUserProgressMapper;use LeadersLinked\Mapper\CompanyMicrolearningSlideMapper;use LeadersLinked\Mapper\CompanyMicrolearningUserLogMapper;use Google\Service\Classroom\Student;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserCompanyMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserFunctionMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserGroupMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserInstitutionMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserProgramMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserPartnerMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserSectorMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserStudentTypeMapper;use LeadersLinked\Mapper\CompanyMicrolearningExtendUserMapper;use LeadersLinked\Mapper\CompanyMicrolearningTopicMapper;use LeadersLinked\Mapper\DeviceMapper;use LeadersLinked\Model\Application;use LeadersLinked\Mapper\CompanyMicrolearningUserMapper;use LeadersLinked\Model\CompanyMicrolearningExtendUser;use LeadersLinked\Form\TopicCapsuleForm;use LeadersLinked\Mapper\CompanyMicrolearningCapsuleCommentMapper;use Laminas\Hydrator\ArraySerializableHydrator;use Laminas\Db\ResultSet\HydratingResultSet;use Laminas\Paginator\Adapter\DbSelect;use Laminas\Paginator\Paginator;use LeadersLinked\Model\CompanyMicrolearningUserProgress;use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Writer\Xlsx;use PhpOffice\PhpSpreadsheet\Calculation\TextData\Replace;use LeadersLinked\Form\TopicReportForm;use LeadersLinked\Model\User;use LeadersLinked\Mapper\CompanyUserMapper;use Laminas\Db\Sql\Select;use LeadersLinked\Form\StudentReportForm;use LeadersLinked\Model\UserType;use LeadersLinked\Model\CompanyUser;class ReportController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @param AdapterInterface $adapter* @param AbstractAdapter $cache* @param LoggerInterface $logger* @param array $config*/public function __construct($adapter, $cache, $logger, $config){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;}public function indexAction(){$this->layout()->setTemplate('layout/layout-backend.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/microlearning-reports/index.phtml');return $viewModel;}public function usersBlockedAction(){// $currentUserPlugin = $this->plugin('currentUserPlugin');// $currentUser = $currentUserPlugin->getUser();// $currentCompany = $currentUserPlugin->getCompany();// $request = $this->getRequest();// if($request->isGet())// {// $headers = $request->getHeaders();// $isJson = false;// if($headers->has('Accept')) {// $accept = $headers->get('Accept');// $prioritized = $accept->getPrioritized();// foreach($prioritized as $key => $value) {// $raw = trim($value->getRaw());// if(!$isJson) {// $isJson = strpos($raw, 'json');// }// }// }// if($isJson) {// $acl = $this->getEvent()->getViewModel()->getVariable('acl');// $allowDownload = $acl->isAllowed($currentUser->usertype_id, 'reports/users-blocked/excel');// $queryMapper = QueryMapper::getInstance($this->adapter);// if($currentCompany) {// $user_ids = [];// $select = $queryMapper->getSql()->select(CompanyUserMapper::_TABLE);// $select->columns(['user_id']);// $select->where->equalTo('company_id', $currentCompany->id);// $select->where->equalTo('status', CompanyUser::STATUS_ACCEPTED);// $records = $queryMapper->fetchAll($select);// foreach($records as $record)// {// if(!in_array($record['user_id'], $user_ids)) {// array_push($user_ids , $record['user_id']);// }// }// $select = $queryMapper->getSql()->select(CompanyMicrolearningCapsuleUserMapper::_TABLE);// $select->columns(['user_id']);// $select->where->equalTo('company_id', $currentCompany->id);// $select->where->in('access', [CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED, CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD]);// $records = $queryMapper->fetchAll($select);// foreach($records as $record)// {// if(!in_array($record['user_id'], $user_ids)) {// array_push($user_ids , $record['user_id']);// }// }// $select = $queryMapper->getSql()->select(UserMapper::_TABLE);// $select->columns([// 'id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image',// 'blocked', 'login_attempt', 'email_verified'// ]);// $select->where->in('id', $user_ids);// $select->where->equalTo('status', User::STATUS_ACTIVE);// $select->where->equalTo('blocked', User::BLOCKED_YES);// $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES );// $select->where->equalTo('network_id', $currentUser->network_id);// $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);// $select->order('first_name ASC, last_name ASC');// } else {// $select = $queryMapper->getSql()->select(UserMapper::_TABLE);// $select->columns(['id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image',// 'blocked', 'login_attempt', 'email_verified']);// $select->where->equalTo('status', User::STATUS_ACTIVE);// $select->where->equalTo('blocked', User::BLOCKED_YES);// $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES );// $select->where->equalTo('network_id', $currentUser->network_id);// $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);// $select->order('first_name ASC, last_name ASC');// }// $items = [];// $records = $queryMapper->fetchAll($select);// foreach($records as $record)// {// if($record['last_activity_on']) {// $dt_last_activity_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['last_activity_on']);// $last_activity_on = $dt_last_activity_on->format('d/m/Y h:i a');// } else {// $last_activity_on = '';// }// $item = [// 'uuid' => $record['uuid'],// 'first_name' => ucwords(strtolower($record['first_name'])),// 'last_name' => ucwords(strtolower($record['last_name'])),// 'email' => strtolower($record['email']),// 'last_activity_on' => $last_activity_on// ];// array_push($items, $item);// }// $data = [// 'items' => $items// ];// if($allowDownload) {// $data['link_download'] = $this->url()->fromRoute('reports/users-blocked/excel' );// } else {// $data['link_download'] = '';// }// return new JsonModel([// 'success' => true,// 'data' => $data// ]);// } else {// $this->layout()->setTemplate('layout/layout-backend');// $viewModel = new ViewModel();// $viewModel->setTemplate('leaders-linked/reports/users-blocked.phtml');// return $viewModel ;// }// } else {// return new JsonModel([// 'success' => false,// 'data' => 'ERROR_METHOD_NOT_ALLOWED'// ]);// }}public function usersBlockedExcelAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$currentCompany = $currentUserPlugin->getCompany();$request = $this->getRequest();if ($request->isGet()) {$queryMapper = QueryMapper::getInstance($this->adapter);if ($currentCompany) {$user_ids = [];$select = $queryMapper->getSql()->select(CompanyUserMapper::_TABLE);$select->columns(['user_id']);$select->where->equalTo('company_id', $currentCompany->id);$select->where->equalTo('status', CompanyUser::STATUS_ACCEPTED);$records = $queryMapper->fetchAll($select);foreach ($records as $record) {if (!in_array($record['user_id'], $user_ids)) {array_push($user_ids, $record['user_id']);}}$select = $queryMapper->getSql()->select(CompanyMicrolearningCapsuleUserMapper::_TABLE);$select->columns(['user_id']);$select->where->equalTo('company_id', $currentCompany->id);$select->where->in('access', [CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED, CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD]);$records = $queryMapper->fetchAll($select);foreach ($records as $record) {if (!in_array($record['user_id'], $user_ids)) {array_push($user_ids, $record['user_id']);}}$select = $queryMapper->getSql()->select(UserMapper::_TABLE);$select->columns(['id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image','blocked', 'login_attempt', 'email_verified']);$select->where->in('id', $user_ids);$select->where->equalTo('status', User::STATUS_ACTIVE);$select->where->equalTo('blocked', User::BLOCKED_YES);$select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);$select->where->equalTo('network_id', $currentUser->network_id);$select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);$select->order('first_name ASC, last_name ASC');} else {$select = $queryMapper->getSql()->select(UserMapper::_TABLE);$select->columns(['id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image','blocked', 'login_attempt', 'email_verified']);$select->where->equalTo('status', User::STATUS_ACTIVE);$select->where->equalTo('blocked', User::BLOCKED_YES);$select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);$select->where->equalTo('network_id', $currentUser->network_id);$select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);$select->order('first_name ASC, last_name ASC');}$items = [];$records = $queryMapper->fetchAll($select);foreach ($records as $record) {if ($record['last_activity_on']) {$dt_last_activity_on = \DateTime::createFromFormat('Y-m-d H:i:s', $record['last_activity_on']);$last_activity_on = $dt_last_activity_on->format('d/m/Y h:i a');} else {$last_activity_on = '';}$item = ['uuid' => $record['uuid'],'first_name' => $record['first_name'],'last_name' => $record['last_name'],'email' => $record['email'],'last_activity_on' => $last_activity_on];array_push($items, $item);}$spreadsheet = new Spreadsheet();$spreadsheet->getProperties()->setTitle("Usuarios Bloqueados");$spreadsheet->setActiveSheetIndex(0);$spreadsheet->getActiveSheet()->SetCellValue('A1', 'Fecha:');$spreadsheet->getActiveSheet()->SetCellValue('B1', date('d/m/Y h:i a'));$spreadsheet->getActiveSheet()->SetCellValue('A3', 'Nombre');$spreadsheet->getActiveSheet()->SetCellValue('B3', 'Apellido');$spreadsheet->getActiveSheet()->SetCellValue('C3', 'Correo electrónico');$spreadsheet->getActiveSheet()->SetCellValue('D3', 'Ultima actividad');$i = 4;foreach ($records as $record) {$spreadsheet->getActiveSheet()->SetCellValue('A' . $i, ucwords(strtolower(trim($record['first_name']))));$spreadsheet->getActiveSheet()->SetCellValue('B' . $i, ucwords(strtolower(trim($record['last_name']))));$spreadsheet->getActiveSheet()->SetCellValue('C' . $i, strtolower(trim($record['email'])));$spreadsheet->getActiveSheet()->SetCellValue('D' . $i, $record['last_activity_on']);$i++;}$fileName = 'reporte_usuarios_bloqueados_' . time() . '.xls';$tempFilename = tempnam(sys_get_temp_dir(), 'reporte_usuarios_bloqueados_' . time());$writer = IOFactory::createWriter($spreadsheet, 'Xls');$writer->save($tempFilename);$content = file_get_contents($tempFilename);@unlink($tempFilename);return new JsonModel(['success' => true,'data' => ['content' => base64_encode($content),'basename' => $fileName]]);} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}}