Files
nala c6373365bf
tests / ci (push) Canceled after 0s
commit9
2026-10-30 20:02:30 +02:00

37 lines
2.2 KiB
PHP

<?php
namespace App\Services;
use Illuminate\Support\Facades\Validator;
class PeopleForms
{
public const STAFF = ['department' => 'Departamento e reporte', 'location' => 'Local e modalidade de trabalho', 'responsibilities' => 'Responsabilidades e tarefas essenciais',
'methods' => 'Métodos de selecção e perguntas nucleares', 'accessibility' => 'Contacto e medidas de acessibilidade', 'integration' => 'Integração e formação previstas', 'financial' => 'Condições de emprego, remuneração e benefícios'];
public const SERVICE = ['scope' => 'Âmbito do serviço e exclusões', 'relationship' => 'Enquadramento da relação e validação prevista', 'methodology' => 'Proposta técnica e metodologia esperada',
'availability' => 'Disponibilidade e condições de execução', 'deliverables' => 'Entregáveis, marcos e prazos', 'acceptance' => 'Critérios de aceitação e responsável',
'financial' => 'Orçamento, honorários, despesas e condições de pagamento'];
/** @param array<string,mixed> $input
* @return array<string,mixed>|null
*/
public function validate(array $input, string $kind): ?array
{
if (! array_key_exists('annex', $input)) {
return null; // Earlier clients and processes retain their initial form.
}
$fields = $kind === 'staff' ? self::STAFF : self::SERVICE;
$rules = ['annex' => 'required|array:fields,requirements', 'annex.fields' => 'present|array:'.implode(',', array_keys($fields)),
'annex.requirements' => 'present|array|max:50', 'annex.requirements.*.description' => 'required|string|max:1000',
'annex.requirements.*.classification' => 'required|in:mandatory,desirable', 'annex.requirements.*.verification' => 'required|string|max:2000',
'annex.requirements.*.equivalences' => 'nullable|string|max:2000'];
foreach (array_keys($fields) as $key) {
$rules['annex.fields.'.$key] = 'nullable|string|max:5000';
}
$valid = Validator::make($input, $rules)->validate()['annex'];
return ['version' => 1, 'template' => $kind === 'staff' ? 'A' : 'C', 'fields' => $valid['fields'], 'requirements' => $valid['requirements']];
}
}