37 lines
2.2 KiB
PHP
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']];
|
|
}
|
|
}
|