commit13
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\PeopleProcess;
|
||||
use App\Models\User;
|
||||
|
||||
class PeopleSelectionReport
|
||||
{
|
||||
/** @return array<string,string|null> */
|
||||
public function facts(PeopleProcess $process, User $actor): array
|
||||
{
|
||||
$access = app(PeopleAccess::class);
|
||||
$contract = $access->can($actor, $process, 'contract') || $access->can($actor, $process, 'contract_view');
|
||||
$selection = $process->selection ?? [];
|
||||
$state = match ($process->status) {
|
||||
'selection_review' => 'Proposta por conferir',
|
||||
'selected', 'contract_draft' => 'Selecção aprovada',
|
||||
default => ($selection['outcome'] ?? null) === 'returned' ? 'Proposta devolvida' : 'Sem proposta de selecção',
|
||||
};
|
||||
$pending = match ($process->status) {
|
||||
'draft' => 'Conferir abertura', 'open' => 'Concluir recepção e triagem de candidaturas',
|
||||
'assessment' => ($selection['outcome'] ?? null) === 'returned' ? 'Rever avaliação e proposta devolvida' : 'Concluir avaliação e preparar proposta',
|
||||
'selection_review' => 'Conferir proposta por pessoa independente',
|
||||
'selected' => 'Preparar minuta contratual',
|
||||
'contract_draft' => 'Minuta preparada; formalização não registada neste percurso',
|
||||
default => 'Consultar processo',
|
||||
};
|
||||
|
||||
return ['selection_state' => $state, 'proposed_at' => $selection['created_at'] ?? null,
|
||||
'decided_at' => $selection['decision_at'] ?? null, 'pending' => $pending,
|
||||
'contract_visibility' => $contract ? 'Consulta autorizada' : 'Sem acesso aos dados da minuta',
|
||||
'contract_reference' => $contract ? ($process->contract['reference'] ?? null) : 'Sem acesso',
|
||||
'contract_prepared_at' => $contract ? ($process->contract['prepared_at'] ?? null) : 'Sem acesso',
|
||||
'contract_starts_on' => $contract ? ($process->contract['starts_on'] ?? null) : 'Sem acesso'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user