Proyectos de Subversion LeadersLinked - Services

Rev

Rev 1 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php
declare(strict_types = 1);
namespace LeadersLinked\Form\UserProfile;

use Laminas\Db\Adapter\AdapterInterface;
use Laminas\InputFilter\InputFilter;
use LeadersLinked\Mapper\IndustryMapper;
use LeadersLinked\Mapper\CompanySizeMapper;

class ExperienceFilter extends InputFilter
{

    /**
     *
     * @param AdapterInterface $adapter
     */
    public function __construct($adapter)
    {
        $this->add([
            'name' => 'from_year',
            'required' => true,
            'filters' => [
                [
                    'name' => \LeadersLinked\Filter\Intval::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ]
            ]
        ]);

        $this->add([
            'name' => 'to_month',
            'required' => true,
            'filters' => [
                [
                    'name' => \LeadersLinked\Filter\Intval::class
                ]
            ],
            'validators' => [
                [
                    'name' => \LeadersLinked\Validator\NotEmptyConditional::class,
                    'options' => [
                        'token' => 'is_current',
                        'condition' => 1
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'to_year',
            'required' => true,
            'filters' => [
                [
                    'name' => \LeadersLinked\Filter\Intval::class
                ]
            ],
            'validators' => [
                [
                    'name' => \LeadersLinked\Validator\NotEmptyConditional::class,
                    'options' => [
                        'token' => 'is_current',
                        'condition' => 1
                    ]
                ],
                [
                    'name' => \LeadersLinked\Validator\GreaterThanOtherField::class,
                    'options' => [
                        'token' => 'from_year',
                        'label' => 'LABEL_MINIMUM',
                        'inclusive' => true
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'industry_id',
            'required' => true,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ],
                [
                    'name' => \Laminas\Validator\Db\RecordExists::class,
                    'options' => [
                        'adapter' => $adapter,
                        'field' => 'uuid',
                        'table' => IndustryMapper::_TABLE
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'company_size_id',
            'required' => true,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\Db\RecordExists::class,
                    'options' => [
                        'adapter' => $adapter,
                        'field' => 'uuid',
                        'table' => CompanySizeMapper::_TABLE
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'company',
            'required' => true,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ],
                [
                    'name' => \Laminas\Validator\StringLength::class,
                    'options' => [
                        'encoding' => 'UTF-8',
                        'max' => 128
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'title',
            'required' => true,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ],
                [
                    'name' => \Laminas\Validator\StringLength::class,
                    'options' => [
                        'encoding' => 'UTF-8',
                        'max' => 128
                    ]
                ]
            ]
        ]);

        $this->add([
            'name' => 'formatted_address',
            'required' => true,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ]
            ]
        ]);

        $this->add([
            'name' => 'description',
            'required' => false,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ]
        ]);

        $this->add([
            'name' => 'formatted_address',
            'required' => true,
            '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' => 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' => 'state',
            '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' => 'city1',
            '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
                    ]
                ]
            ]
        ]);

        $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' => true,
            'filters' => [
                [
                    'name' => \LeadersLinked\Filter\Floatval::class
                ]
            ],
            'validators' => [

                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ]
            ]
        ]);

        $this->add([
            'name' => 'longitude',
            'required' => true,
            'filters' => [
                [
                    'name' => \LeadersLinked\Filter\Floatval::class
                ]
            ],
            'validators' => [

                [
                    'name' => \Laminas\Validator\NotEmpty::class
                ]
            ]
        ]);

        $this->add([
            'name' => 'is_current',
            'required' => false,
            'filters' => [
                [
                    'name' => \Laminas\Filter\StripTags::class
                ],
                [
                    'name' => \Laminas\Filter\StringTrim::class
                ]
            ],
            'validators' => [
                [
                    'name' => \Laminas\Validator\StringLength::class,
                    'options' => [
                        'encoding' => 'UTF-8',
                        'max' => 1
                    ]
                ]
            ]
        ]);
    }
}