commit13
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\PeopleProcess;
|
||||
|
||||
/** Future RH boundary: no transport, dispatch, employee creation or legal validation. */
|
||||
class PeopleContractHandoff
|
||||
{
|
||||
/** @return array<string,mixed> */
|
||||
public function envelope(PeopleProcess $process): array
|
||||
{
|
||||
abort_if($process->isDirty(), 409, 'A ligação a RH exige uma versão persistida do contrato formalizado.');
|
||||
// Selection approval and today's contract draft must never cross this boundary.
|
||||
abort_unless($process->exists && $process->getAttribute('work_context_key') === 'people.internal'
|
||||
&& $process->status === 'contract_formalized'
|
||||
&& ($process->contract['status'] ?? null) === 'formalized'
|
||||
&& ! empty($process->contract['formalized_at'])
|
||||
&& ! empty($process->contract['reference'])
|
||||
&& $process->selected_application_id !== null, 409, 'A ligação a RH exige contrato interno formalizado.');
|
||||
|
||||
return ['schema' => 'sgc.people.contract_formalized.v1',
|
||||
'idempotency_key' => 'sgc:'.$process->tenant_id.':people:'.$process->id.':contract:'.$process->version,
|
||||
'tenant_id' => $process->tenant_id, 'process_id' => $process->id, 'process_version' => $process->version,
|
||||
'application_id' => $process->selected_application_id, 'kind' => $process->kind,
|
||||
'work_context_key' => $process->getAttribute('work_context_key'),
|
||||
'contract' => $process->contract];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user