diff --git a/config/schema/webform_replicado.schema.yml b/config/schema/webform_replicado.schema.yml new file mode 100644 index 0000000..d325c1a --- /dev/null +++ b/config/schema/webform_replicado.schema.yml @@ -0,0 +1,8 @@ +# Schema for the configuration files of the webform_replicado module. +webform_replicado.settings: + type: config_object + label: 'webform_replicado settings' + mapping: + example: + type: string + label: 'Example' diff --git a/src/Element/DepartamentosElement.php b/src/Element/DepartamentosElement.php new file mode 100644 index 0000000..d300662 --- /dev/null +++ b/src/Element/DepartamentosElement.php @@ -0,0 +1,102 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateDepartamentos'], + ], + ]; + } + + + + + +public static function validateDepartamentos(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); + + $departamentos = [ + 'departamento de antropologia', + 'departamento de ciencia politica', + 'departamento de filosofia', + 'departamento de geografia', + 'departamento de historia', + 'departamento de letras classicas e vernaculas', + 'departamento de letras modernas', + 'departamento de letras orientais', + 'departamento de linguistica', + 'departamento de sociologia', + 'departamento de teoria literaria e literatura comparada', + 'antropologia', + 'ciencia politica', + 'filosofia', + 'geografia', + 'historia', + 'letras classicas e vernaculas', + 'letras modernas', + 'letras orientais', + 'linguistica', + 'sociologia', + 'teoria literaria e literatura comparada', + 'fla', + 'flp', + 'flf', + 'flg', + 'flh', + 'flc', + 'flm', + 'flo', + 'fll', + 'fsl', + 'flt', + ]; + +$valido = FALSE; + + foreach ($departamentos as $departamento) { + if (str_contains($value, $departamento)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { + $form_state->setError( + $element, + t('Esse departamento não é da FFLCH.') + ); + } + } +} + + \ No newline at end of file diff --git a/src/Element/HabilitacaoElement.php b/src/Element/HabilitacaoElement.php new file mode 100644 index 0000000..3d02114 --- /dev/null +++ b/src/Element/HabilitacaoElement.php @@ -0,0 +1,80 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateHabilitacao'], + ], + ]; + } + + +public static function validateHabilitacao(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); + + $habilitacoes = [ + 'portugues', + 'grego', + 'latim', + 'alemao', + 'espanhol', + 'frances', + 'ingles', + 'italiano', + 'arabe', + 'armenio', + 'chines', + 'coreano', + 'hebraico', + 'japones', + 'russo', + 'linguistica', +]; + +$valido = FALSE; + + foreach ($habilitacoes as $habilitacao) { + if (str_contains($value, $habilitacao)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { + $form_state->setError( + $element, + t('Essa habilitação não consta.') + ); + } + } +} \ No newline at end of file diff --git a/src/Element/NumeroUspElement.php b/src/Element/NumeroUspElement.php new file mode 100644 index 0000000..c3909bd --- /dev/null +++ b/src/Element/NumeroUspElement.php @@ -0,0 +1,81 @@ + TRUE, + '#element_validate' => [ + [$class, 'validateNumeroUsp'], + ], + ]; + } + + /** + * Validates the USP number. + */ + public static function validateNumeroUsp(&$element, FormStateInterface $form_state,&$complete_form): void { + + $value = str_replace(['.', '-'], '', $element['#value']); + + $tipo = $form_state->getValue('tipo_de_vinculo'); + + switch ($tipo) { + + case 'intercambista': + case 'funcionario': + if (strlen($value) != 7) { + $form_state->setError( + $element, + t('O Número USP deve possuir 7 dígitos.') + ); + } + break; + + case 'docente': + case 'graduacao': + case 'pos': + default: + if (strlen($value) != 8) { + $form_state->setError( + $element, + t('O Número USP deve possuir 8 dígitos.') + ); + } + break; + } + //validação para garantir que o número usp existe + + //$config = [ + //'host' => '192.168.100.89', + //'port' => 1498, + //'database' => 'rep_dbc', + //'username' => 'dbmaint_read', + //'password' => 'secret', + //'codundclg' => '8', + //'codundclgs' => '8,84', + //'pathlog' => 'path/to/your.log', + //'sybase' => true, + //'usarCache' => false, + //'debug' => false, + //'debugLevel' => 1, + // $validação = $config->get('validação') + //]; + + } + +} \ No newline at end of file diff --git a/src/Element/PosGradElement.php b/src/Element/PosGradElement.php new file mode 100644 index 0000000..f1660f8 --- /dev/null +++ b/src/Element/PosGradElement.php @@ -0,0 +1,90 @@ + TRUE, + '#element_validate' => [ + [$class, 'validatePosGrad'], + ], + ]; + } + + + +public static function validatePosGrad(&$element, FormStateInterface $form_state, &$complete_form): void { + + $value = $element['#value']; + + $value = mb_strtolower($element['#value'], 'UTF-8'); + + $value = strtr($value, [ + 'á' => 'a', 'à' => 'a', 'ã' => 'a', 'â' => 'a', + 'é' => 'e', 'ê' => 'e', + 'í' => 'i', + 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', + 'ú' => 'u', + 'ç' => 'c', + ]); + + $programas = [ + 'antropologia social', + 'ciencia politica', + 'estudos comparados de literaturas de linguas portuguesa', + 'estudos linguisticos e literarios em ingles', + 'filologia e lingua portuguesa', + 'filosofia', + 'geografia fisica', + 'geografia humana', + 'historia economica', + 'historia social', + 'humanidades, direitos e outras legitimidades', + 'letras classicas', + 'letras estrangeiras e traducao', + 'letra', + 'lingua e literartura alema', + 'lingua espanhola e literaturas espanhola e hispano-americana', + 'lingua, literatura e cultura italianas', + 'lingua, literatura e cultura japonesas', + 'linguistica', + 'literatura brasileira', + 'literatura portuguesa', + 'mestrado profissional em letras em rede nacional', + 'profletras', + 'sociologia', + 'teoria literaria e literatura comparada', + ]; + + $valido = FALSE; + + foreach ($programas as $programa) { + if (str_contains($value, $programa)) { + $valido = TRUE; + break; + } + } + + if (!$valido) { + $form_state->setError( + $element, + t('Esse programa não consta na Pós-Graduação.') + ); + } + } +} diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php new file mode 100644 index 0000000..75dd7aa --- /dev/null +++ b/src/Form/SettingsForm.php @@ -0,0 +1,69 @@ + 'textarea', + '#title' => $this->t('Validação'), + '#description' => $this->t('Validação das informações'), + '#default_value' => $this->config('webform_replicado.settings')->get('validação'), +]; + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function validateForm(array &$form, FormStateInterface $form_state): void { + // @todo Validate the form here. + // Example: + // @code + // if ($form_state->getValue('example') === 'wrong') { + // $form_state->setErrorByName( + // 'message', + // $this->t('The value is not correct.'), + // ); + // } + // @endcode + parent::validateForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state): void { + $this->config('webform_replicado.settings') + ->set('validação', $form_state->getValue('validação')) + ->save(); + parent::submitForm($form, $form_state); + } + +} diff --git a/src/Plugin/WebformElement/DepartamentosElement.php b/src/Plugin/WebformElement/DepartamentosElement.php new file mode 100644 index 0000000..01f43e2 --- /dev/null +++ b/src/Plugin/WebformElement/DepartamentosElement.php @@ -0,0 +1,17 @@ +