Rev 1 | Rev 187 | 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\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\DeviceMapper;
use LeadersLinked\Model\Application;
class MicrolearningReportsController 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 overviewAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentCompany = $currentUserPlugin->getCompany();
$request = $this->getRequest();
if($request->isGet()) {
$reportsLastWeek = [];
$reportsCapsuleResume = [];
$reportsStudentsTotal = [];
$companyMicrolearningExtendUserCompanyMapper = CompanyMicrolearningExtendUserCompanyMapper::getInstance($this->adapter);
$extendCompanies = $companyMicrolearningExtendUserCompanyMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendCompanies as $extendCompany)
{
$reportsLastWeek['companies'][$extendCompany->id] = [
'name' => $extendCompany->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['companies'][$extendCompany->id] = [
'name' => $extendCompany->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['companies'][$extendCompany->id] = [
'name' => $extendCompany->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserFunctionMapper = CompanyMicrolearningExtendUserFunctionMapper::getInstance($this->adapter);
$extendFunctions = $companyMicrolearningExtendUserFunctionMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendFunctions as $extendFunction)
{
$reportsLastWeek['functions'][$extendFunction->id] = [
'name' => $extendFunction->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['functions'][$extendFunction->id] = [
'name' => $extendFunction->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['functions'][$extendFunction->id] = [
'name' => $extendFunction->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserGroupMapper = CompanyMicrolearningExtendUserGroupMapper::getInstance($this->adapter);
$extendGroups = $companyMicrolearningExtendUserGroupMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendGroups as $extendGroup)
{
$reportsLastWeek['groups'][$extendGroup->id] = [
'name' => $extendGroup->name,
'total' => 0,
'value' => 0
];
$reportsCapsuleResume['groups'][$extendGroup->id] = [
'name' => $extendFunction->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['groups'][$extendGroup->id] = [
'name' => $extendGroup->name,
'total' => 0,
];
}
$companyMicrolearningExtendUserInstitutionMapper = CompanyMicrolearningExtendUserInstitutionMapper::getInstance($this->adapter);
$extendInstitutions = $companyMicrolearningExtendUserInstitutionMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendInstitutions as $extendInstitution)
{
$reportsLastWeek['institutions'][$extendInstitution->id] = [
'name' => $extendInstitution->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['institutions'][$extendInstitution->id] = [
'name' => $extendInstitution->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['institutions'][$extendInstitution->id] = [
'name' => $extendInstitution->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserProgramMapper = CompanyMicrolearningExtendUserProgramMapper::getInstance($this->adapter);
$extendPrograms = $companyMicrolearningExtendUserProgramMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendPrograms as $extendProgram)
{
$reportsLastWeek['programs'][$extendProgram->id] = [
'name' => $extendProgram->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['programs'][$extendProgram->id] = [
'name' => $extendProgram->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['programs'][$extendProgram->id] = [
'name' => $extendProgram->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserPartnerMapper = CompanyMicrolearningExtendUserPartnerMapper::getInstance($this->adapter);
$extendPartners = $companyMicrolearningExtendUserPartnerMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendPartners as $extendPartner)
{
$reportsLastWeek['partners'][$extendPartner->id] = [
'name' => $extendPartner->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['partners'][$extendPartner->id] = [
'name' => $extendPartner->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['partners'][$extendPartner->id] = [
'name' => $extendPartner->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserSectorMapper = CompanyMicrolearningExtendUserSectorMapper::getInstance($this->adapter);
$extendSectors = $companyMicrolearningExtendUserSectorMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendSectors as $extendSector)
{
$reportsLastWeek['sectors'][$extendSector->id] = [
'name' => $extendSector->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['sectors'][$extendSector->id] = [
'name' => $extendSector->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['sectors'][$extendSector->id] = [
'name' => $extendSector->name,
'total' => 0,
] ;
}
$companyMicrolearningExtendUserStudentTypeMapper = CompanyMicrolearningExtendUserStudentTypeMapper::getInstance($this->adapter);
$extendStudentTypes = $companyMicrolearningExtendUserStudentTypeMapper->fetchAllByCompanyId($currentCompany->id);
foreach($extendStudentTypes as $extendStudentType)
{
$reportsLastWeek['student_types'][$extendStudentType->id] = [
'name' => $extendStudentType->name,
'total' => 0,
'value' => 0
] ;
$reportsCapsuleResume['student_types'][$extendStudentType->id] = [
'name' => $extendStudentType->name,
'total' => 0,
'value' => 0
] ;
$reportsStudentsTotal['student_types'][$extendStudentType->id] = [
'name' => $extendStudentType->name,
'total' => 0,
] ;
}
$companyMicrolearningUserProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
$minLastWeek = date('Y-m-d', strtotime(' -180 days'));
$maxLastWeek = date('Y-m-d');
$companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
$companyUsersLogWithActivityLastWeek = $companyMicrolearningUserLogMapper->fetchAllUserIdsLastWeekByCompanyId($currentCompany->id, $minLastWeek, $maxLastWeek);
//header('Content-type: text/plain');
// print_r($companyUsersLogWithActivityLastWeek);
$date = date('Y-m-d');
$companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
$user_ids = $companyMicrolearningCapsuleUserMapper->fetchAllDistinctUserIdActiveByCompanyIdAndDate($currentCompany->id, $date);
$studentsTotal = count($user_ids);
$studentsStarted = 0;
$userIdsWithAllCapsulesCompleted = [];
foreach($user_ids as $user_id)
{
$countSlides = $companyMicrolearningUserProgressMapper->fetchCountAllSlideCompletedByCompanyIdAndUserId($currentCompany->id, $user_id);
if($countSlides) {
$studentsStarted++;
}
$incompleted = false;
$capsuleUsers = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($user_id);
foreach($capsuleUsers as $capsuleUser)
{
$userProgress = $companyMicrolearningUserProgressMapper->fetchOneByUseridAndCapsuleId($capsuleUser->user_id, $capsuleUser->capsule_id);
if($userProgress) {
if(!$userProgress->completed) {
$incompleted = true;
break;
}
} else {
$incompleted = true;
break;
}
}
if(!$incompleted) {
array_push($userIdsWithAllCapsulesCompleted, $user_id);
}
}
$studentsWithoutStarting = $studentsTotal - $studentsStarted;
$reportsLastWeek['general'] = ['total' => $studentsTotal, 'value' => count($companyUsersLogWithActivityLastWeek) ];
$reportsCapsuleResume['general'] = ['total' => $studentsTotal, 'value' => count($userIdsWithAllCapsulesCompleted) ];
$companyMicrolearningExtendUserMapper = CompanyMicrolearningExtendUserMapper::getInstance($this->adapter);
$records = $companyMicrolearningExtendUserMapper->fetchAllByCompanyId($currentCompany->id);
foreach($records as $record)
{
if($record->extend_company_id) {
$reportsLastWeek['companies'][$record->extend_company_id]['total'] += 1;
$reportsStudentsTotal['companies'][$record->extend_company_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['companies'][$record->extend_company_id]['value'] += 1;
}
$reportsCapsuleResume['companies'][$record->extend_company_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['companies'][$record->extend_company_id]['value'] += 1;
}
}
if($record->extend_function_id) {
$reportsLastWeek['functions'][$record->extend_function_id]['total'] += 1;
$reportsStudentsTotal['functions'][$record->extend_function_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['functions'][$record->extend_function_id]['value'] += 1;
}
$reportsCapsuleResume['functions'][$record->extend_function_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['functions'][$record->extend_function_id]['value'] += 1;
}
}
if($record->extend_group_id) {
$reportsLastWeek['groups'][$record->extend_group_id]['total'] += 1;
$reportsStudentsTotal['groups'][$record->extend_group_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['groups'][$record->extend_group_id]['value'] += 1;
}
$reportsCapsuleResume['groups'][$record->extend_group_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['groups'][$record->extend_group_id]['value'] += 1;
}
}
if($record->extend_institution_id) {
$reportsLastWeek['institutions'][$record->extend_institution_id]['total'] += 1;
$reportsStudentsTotal['institutions'][$record->extend_institution_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['institutions'][$record->extend_institution_id]['value'] += 1;
}
$reportsCapsuleResume['institutions'][$record->extend_institution_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['institutions'][$record->extend_institution_id]['value'] += 1;
}
}
if($record->extend_program_id) {
$reportsLastWeek['programs'][$record->extend_program_id]['total'] += 1;
$reportsStudentsTotal['programs'][$record->extend_program_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['programs'][$record->extend_program_id]['value'] += 1;
}
$reportsCapsuleResume['programs'][$record->extend_program_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['programs'][$record->extend_program_id]['value'] += 1;
}
}
if($record->extend_partner_id) {
$reportsLastWeek['partners'][$record->extend_partner_id]['total'] += 1;
$reportsStudentsTotal['partners'][$record->extend_partner_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['partners'][$record->extend_partner_id]['value'] += 1;
}
$reportsCapsuleResume['partners'][$record->extend_partner_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['partners'][$record->extend_partner_id]['value'] += 1;
}
}
if($record->extend_sector_id) {
$reportsLastWeek['sectors'][$record->extend_sector_id]['total'] += 1;
$reportsStudentsTotal['sectors'][$record->extend_sector_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['sectors'][$record->extend_sector_id]['value'] += 1;
}
$reportsCapsuleResume['sectors'][$record->extend_sector_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['sectors'][$record->extend_sector_id]['value'] += 1;
}
}
if($record->extend_student_type_id) {
$reportsLastWeek['student_types'][$record->extend_student_type_id]['total'] += 1;
$reportsStudentsTotal['student_types'][$record->extend_student_type_id]['total'] += 1;
if(in_array($record->user_id, $companyUsersLogWithActivityLastWeek )) {
$reportsLastWeek['student_types'][$record->extend_student_type_id]['value'] += 1;
}
$reportsCapsuleResume['student_types'][$record->extend_student_type_id]['total'] += 1;
if(in_array($record->user_id, $userIdsWithAllCapsulesCompleted )) {
$reportsCapsuleResume['student_types'][$record->extend_student_type_id]['value'] += 1;
}
}
}
/*
header('Content-type: text/plain');
print_r($reportsStudentsTotal); exit;
*/
$this->layout()->setTemplate('layout/layout-backend.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/microlearning-reports/overview.phtml');
$viewModel->setVariables([
'reportsLastWeek' => $reportsLastWeek,
'reportsCapsuleResume' => $reportsCapsuleResume,
'reportsStudentsTotal' => $reportsStudentsTotal,
'reportStudents' => [
'total' => $studentsTotal,
'started' => $studentsStarted,
'withoutStarting' => $studentsWithoutStarting,
]
]);
return $viewModel ;
}
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function progressAction()
{
$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) {
$date = date('Y-m-d');
$companyMicrolearningProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
$companyMicrolearningUserLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
$companyMicrolearningCapsuleUserMapper = CompanyMicrolearningCapsuleUserMapper::getInstance($this->adapter);
$companyMicrolearningSlideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
$queryMapper = QueryMapper::getInstance($this->adapter);
$selectCapsuleUser = $queryMapper->getSql()->select();
$selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)') ]);
$selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
$selectCapsuleUser->where->equalTo('company_id', $currentCompany->id);
$selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
//echo $select->getSqlString($this->adapter->platform); exit;
$select = $queryMapper->getSql()->select();
$select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
$select->from(UserMapper::_TABLE);
$select->where->in('id', $selectCapsuleUser);
$select->order(['first_name', 'last_name']);
$students = [];
$records = $queryMapper->fetchAll($select);
foreach($records as $record)
{
$capsules = $companyMicrolearningCapsuleUserMapper->fetchAllActiveByUserId($record['id']);
$totalCapsules = count($capsules);
$totalCapsulesStarted = 0;
$totalCapsulesCompleted = 0;
$totalSlides = 0;
$totalSlidesStarted = 0;
$totalSlidesCompleted = 0;
foreach($capsules as $capsule)
{
$userProgress = $companyMicrolearningProgressMapper->fetchOneByUseridAndCapsuleId($capsule->user_id, $capsule->capsule_id);
if($userProgress) {
$totalCapsulesStarted++;
if($userProgress->completed) {
$totalCapsulesCompleted++;
}
}
$slides = $companyMicrolearningSlideMapper->fetchAllByCompanyIdAndTopicIdAndCapsuleId($capsule->company_id, $capsule->topic_id, $capsule->capsule_id);
$totalSlides = count($slides);
foreach($slides as $slide)
{
$userProgress = $companyMicrolearningProgressMapper->fetchOneByUserIdAndSlideId($capsule->user_id, $slide->id);
if($userProgress) {
$totalSlidesStarted++;
if($userProgress->completed) {
$totalSlidesCompleted++;
}
}
}
}
$student = [
'uuid' => $record['uuid'],
'first_name' => $record['first_name'],
'last_name' => $record['last_name'],
'email' => $record['email'],
'total_capsules' => $totalCapsules,
'total_capsules_incomplete' => ( $totalCapsules - $totalCapsulesCompleted ),
'total_capsules_started' => $totalCapsulesStarted,
'total_capsules_completed' => $totalCapsulesCompleted,
'total_slides' => $totalSlides,
'total_slides_started' => $totalSlidesStarted,
'total_slides_completed' => $totalSlidesCompleted,
'totql_slides_incompleted' => ($totalSlides - $totalSlidesCompleted ) ,
'first_date' => '',
'first_time' => '',
'last_date' => '',
'last_time' => '',
];
$first_added_on = $companyMicrolearningUserLogMapper->fetchFirstDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
if($first_added_on) {
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $first_added_on);
if($dt) {
$student['first_date'] = $dt->format('d/m/Y');
$student['first_time'] = $dt->format('h:i a');
}
}
$last_added_on = $companyMicrolearningUserLogMapper->fetchLastDateByCompanyIdAndUserId($currentCompany->id, $record['id']);
if($last_added_on) {
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $last_added_on);
if($dt) {
$student['last_date'] = $dt->format('d/m/Y');
$student['last_time'] = $dt->format('h:i a');
}
}
array_push($students, $student);
}
return new JsonModel([
'success' => true,
'data' => $students
]);
} else {
$form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
$this->layout()->setTemplate('layout/layout-backend.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/microlearning-reports/progress.phtml');
$viewModel->setVariables([
'form' => $form
]);
return $viewModel ;
}
}
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function devicesAction()
{
$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) {
$date = date('Y-m-d');
$deviceMapper = DeviceMapper::getInstance($this->adapter);
$queryMapper = QueryMapper::getInstance($this->adapter);
$selectCapsuleUser = $queryMapper->getSql()->select();
$selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)') ]);
$selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
$selectCapsuleUser->where->equalTo('company_id', $currentCompany->id);
$selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
//echo $select->getSqlString($this->adapter->platform); exit;
$select = $queryMapper->getSql()->select();
$select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email']);
$select->from(UserMapper::_TABLE);
$select->where->in('id', $selectCapsuleUser);
$select->order(['first_name', 'last_name']);
$students = [];
$records = $queryMapper->fetchAll($select);
foreach($records as $record)
{
$record_devices = $deviceMapper->fetchAllByUserId($record['id']);
$devices = [];
foreach($record_devices as $device)
{
/*if($device->application_id != Application::LEADERSLINKED) {
continue;
}*/
$dt = \DateTime::createFromFormat('Y-m-d H:i:s', $device->updated_on);
array_push($devices, [
'brand' => $device->brand,
'manufacturer' => $device->manufacturer,
'model' => $device->model,
'platform' => $device->platform,
'version' => $device->version,
'token' => $device->token ? 'LABEL_YES' : 'LABEL_NO',
'updated_on' => $dt->format('d/m/Y h:i a')
]);
}
$student = [
'uuid' => $record['uuid'],
'first_name' => $record['first_name'],
'last_name' => $record['last_name'],
'email' => $record['email'],
'devices' => $devices
];
array_push($students, $student);
}
return new JsonModel([
'success' => true,
'data' => $students
]);
} else {
$form = new ExtendUserMicrolearningForm($this->adapter, $currentCompany->id);
$this->layout()->setTemplate('layout/layout-backend.phtml');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/microlearning-reports/devices.phtml');
$viewModel->setVariables([
'form' => $form
]);
return $viewModel ;
}
}
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
}