Proyectos de Subversion LeadersLinked - Backend

Rev

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,
                ],
            ],
        ]);
        
        
       
    }
}