AutorÃa | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Form\Survey;
use Laminas\InputFilter\InputFilter;
use LeadersLinked\Mapper\IndustryMapper;
use LeadersLinked\Mapper\JobDescriptionMapper;
use LeadersLinked\Mapper\SkillMapper;
use LeadersLinked\Mapper\LanguageMapper;
use Laminas\Db\Adapter\AdapterInterface;
use LeadersLinked\Model\SurveyForm;
use LeadersLinked\Model\SurveyCampaign;
use LeadersLinked\Mapper\SurveyFormMapper;
class SurveyCampaignFilter extends InputFilter
{
/**
*
* @param AdapterInterface $adapter
*/
public function __construct(AdapterInterface $adapter, $company_id, $type)
{
$this->add([
'name' => 'name',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 128,
],
],
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
$this->add([
'name' => 'start_date',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 10,
],
],
[
'name' => \Laminas\Validator\NotEmpty::class,
],
[
'name' => \Laminas\Validator\Date::class,
'options' => [
'format' => 'Y-m-d',
],
],
],
]);
$this->add([
'name' => 'end_date',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 10,
],
],
[
'name' => \Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\GreaterThanOtherField::class,
'options' => [
'token' => 'start_date'
],
],
[
'name' => \Laminas\Validator\Date::class,
'options' => [
'format' => 'Y-m-d',
],
],
],
]);
$this->add([
'name' => 'status',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
]
]);
$this->add([
'name' => 'identity',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
]
]);
$this->add([
'name' => 'form_id',
'required' => false,
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\RecordExistsMultiFields::class,
'options' => [
'adapter' => $adapter,
'table' => SurveyFormMapper::_TABLE,
'field' => 'uuid',
'custom_fields' => [
'company_id' => $company_id
]
]
]
]
]);
$this->add([
'name' => 'status',
'required' => true,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
]
]);
if($type == SurveyCampaign::TYPE_ORGANIZATIONAL_CLIMATE) {
$this->add([
'name' => 'job_description_id',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\RecordExistsMultiValues::class,
'options' => [
'adapter' => $adapter,
'table' => JobDescriptionMapper::_TABLE,
'field' => 'uuid',
'custom_fields' => [
'company_id' => $company_id
]
]
]
]
]);
}
$this->add([
'name' => 'skill_id',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\RecordExistsMultiValues::class,
'options' => [
'adapter' => $adapter,
'table' => SkillMapper::_TABLE,
'field' => 'uuid',
]
]
]
]);
$this->add([
'name' => 'industry_id',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\RecordExistsMultiValues::class,
'options' => [
'adapter' => $adapter,
'table' => IndustryMapper::_TABLE,
'field' => 'uuid',
]
]
]
]);
$this->add([
'name' => 'language',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' =>[
[
'name' =>\Laminas\Validator\NotEmpty::class,
],
[
'name' => \LeadersLinked\Validator\RecordExistsMultiValues::class,
'options' => [
'adapter' => $adapter,
'table' => LanguageMapper::_TABLE,
'field' => 'id',
]
]
]
]);
$this->add([
'name' => 'formatted_address',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
$this->add([
'name' => 'address1',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
]);
$this->add([
'name' => 'address2',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
]);
$this->add([
'name' => 'country',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 128,
],
],
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
$this->add([
'name' => 'state',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 128,
],
],
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
$this->add([
'name' => 'city1',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 128,
],
],
],
]);
$this->add([
'name' => 'city2',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 128,
],
],
],
]);
$this->add([
'name' => 'postal_code',
'required' => false,
'filters' => [
['name' => \Laminas\Filter\StripTags::class],
['name' => \Laminas\Filter\StringTrim::class],
],
'validators' => [
[
'name' => \Laminas\Validator\StringLength::class,
'options' => [
'encoding' => 'UTF-8',
'max' => 6,
],
],
],
]);
$this->add([
'name' => 'latitude',
'required' => false,
'filters' => [
['name' => \LeadersLinked\Filter\Floatval::class],
],
'validators' => [
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
$this->add([
'name' => 'longitude',
'required' => false,
'filters' => [
['name' => \LeadersLinked\Filter\Floatval::class],
],
'validators' => [
[
'name' => \Laminas\Validator\NotEmpty::class,
],
],
]);
}
}