Rev 15403 | Rev 16770 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Form\JobDescription;use Laminas\Form\Form;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Log\LoggerInterface;use LeadersLinked\Mapper\JobDescriptionMapper;use LeadersLinked\Mapper\JobDescriptionSubordinateMapper;class JobDescriptionForm extends Form{/**** @param AdapterInterface $adapter* @param int $company_id* @param int $id*/public function __construct($adapter, $company_id, $job_description_id = 0){parent::__construct();$this->setInputFilter(new JobDescriptionFilter($adapter));$this->add(['name' => 'subordinates','type' => \Laminas\Form\Element\Hidden::class,'attributes' => ['id' => 'subordinates',]]);$this->add(['name' => 'competencies','type' => \Laminas\Form\Element\Hidden::class,'attributes' => ['id' => 'competencies',]]);$this->add(['name' => 'name','type' => \Laminas\Form\Element\Text::class,'attributes' => ['maxlength' => 128,'id' => 'name',]]);$this->add(['name' => 'job_description_id_boss','type' => \Laminas\Form\Element\Select::class,'options' => ['empty_option' => 'LABEL_NA','value_options' => $this->optionsJobDescriptions($adapter, $company_id, $job_description_id ),],'attributes' => ['id' => 'job_description_id_boss',]]);$this->add(['name' => 'functions','type' => \Laminas\Form\Element\Textarea::class,'attributes' => ['maxlength' => 1024,'id' => 'functions','rows' => 10]]);$this->add(['name' => 'objectives','type' => \Laminas\Form\Element\Textarea::class,'attributes' => ['maxlength' => 1024,'id' => 'objectives','rows' => 10]]);$this->add(['name' => 'status','type' => \Laminas\Form\Element\Checkbox::class,'attributes' => ['id' => 'status',],'options' => ['use_hidden_element' => 0,'unchecked_value' => \LeadersLinked\Model\JobDescription::STATUS_INACTIVE,'checked_value'=> \LeadersLinked\Model\JobDescription::STATUS_ACTIVE,]]);}/**** @param AdapterInterface $adapter* @param int $company_id* @param int $id* @param LoggerInterface $logger* @return array*/private function optionsJobDescriptions($adapter, $company_id, $job_description_id ){$subordinates = [];if($job_description_id) {$jobDescriptionSubordinateMapper = JobDescriptionSubordinateMapper::getInstance($adapter);$records = $jobDescriptionSubordinateMapper->fetchAllByJobDescriptionIdTopLevel($job_description_id);foreach($records as $record){array_push($subordinates, $record->job_description_id_low_level);}}$jobDescriptionMapper = JobDescriptionMapper::getInstance($adapter);$jobsDescription = $jobDescriptionMapper->fetchAllActiveByCompanyIdWhereIdNotEqual($company_id, $job_description_id);$options = [];foreach($jobsDescription as $jobDescription){if(in_array($jobDescription->id, $subordinates)) {continue;}$options[$jobDescription->uuid] = $jobDescription->name;}return $options;}}