Proyectos de Subversion LeadersLinked - Backend

Rev

Autoría | Ultima modificación | Ver Log |

<?php

declare(strict_types=1);

namespace LeadersLinked\Form\Microlearning;

use Laminas\Form\Form;
use Laminas\Db\Adapter\AdapterInterface;
use LeadersLinked\Mapper\MicrolearningTopicMapper;
use LeadersLinked\Mapper\MicrolearningCapsuleMapper;
use LeadersLinked\Mapper\QueryMapper;
use LeadersLinked\Mapper\MicrolearningCapsuleUserMapper;
use Laminas\Db\Sql\Expression;
use LeadersLinked\Mapper\UserMapper;
use LeadersLinked\Model\User;

class StudentReportForm extends Form
{

    /**
     * 
     * @param AdapterInterface $adapter
     * @param int $company_id
     */
    public function __construct($adapter, $company_id) 
    {
        parent::__construct();
        $this->setInputFilter(new StudentReportFilter($adapter));
        
        $this->add([
            'name' => 'student_uuid',
            'type' => \Laminas\Form\Element\Select::class,
            'attributes' => [
                'id' => 'student_uuid',
            ],
            'options' => [
                'value_options' => $this->getSelectStudentOptions($adapter, $company_id)
            ]
        ]);
        
        
        

    }
    
    /**
     *
     * @param AdapterInterface $adapter
     */
    private function getSelectStudentOptions($adapter, $company_id)
    {
        
        $user_ids = [];
        $options = [];
        
        $mapper = QueryMapper::getInstance($adapter);
        $select = $mapper->getSql()->select();
        $select->columns(['user_id' => new Expression('DISTINCT(user_id)')]);
        $select->from(['tb1' => MicrolearningCapsuleUserMapper::_TABLE]);
        $select->where->equalTo('company_id', $company_id);
        
        $records = $mapper->fetchAll($select);
        foreach($records as $record)
        {
            array_push($user_ids, $record['user_id']);  
        }
        
        $mapper = QueryMapper::getInstance($adapter);
        $select = $mapper->getSql()->select();
        $select->columns(['uuid', 'first_name', 'last_name', 'email']);
        $select->from(['tb1' => UserMapper::_TABLE]);
        $select->where->in('id', $user_ids);
        $select->where->equalTo('status', User::STATUS_ACTIVE);
        $select->order('first_name ASC, last_name ASC');
        
        
        
        $records = $mapper->fetchAll($select);
        foreach($records as $record)
        {
            $options[ $record['uuid'] ] =  ucwords(strtolower(trim($record['first_name'] . '  ' . $record['last_name']))) . ' (' . strtolower($record['email']) .  ')';  
        }
        return $options;
    }
    
   
}