commit13
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\PeopleProcess;
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class PeopleApplicationReport
|
||||
{
|
||||
/** @return array<string,int|string|null> */
|
||||
public function counts(PeopleProcess $process, User $actor): array
|
||||
{
|
||||
$frozen = in_array($process->status, ['selected', 'contract_draft'], true);
|
||||
$rows = $frozen ? ($process->selection['rows'] ?? []) : app(PeopleHiring::class)->matrix($process);
|
||||
$complete = count(array_filter($rows, fn ($row) => $row['score_minor'] !== null));
|
||||
$started = count(array_filter($rows, fn ($row) => $row['evaluation_count'] > 0));
|
||||
$triage = app(CandidateTriage::class);
|
||||
$portal = $triage->canRead($actor, $process) && Schema::hasTable('candidate_triage');
|
||||
$received = $portal ? DB::table('candidate_submissions')->where('tenant_id', $process->tenant_id)->where('people_process_id', $process->id)->count() : null;
|
||||
$decisions = $portal ? DB::table('candidate_triage')->where('tenant_id', $process->tenant_id)->where('people_process_id', $process->id)->get(['outcome']) : collect();
|
||||
|
||||
return ['registered' => count($rows), 'evaluation_complete' => $complete, 'evaluation_pending' => count($rows) - $complete,
|
||||
'evaluation_unstarted' => count($rows) - $started, 'evaluation_in_progress' => $started - $complete,
|
||||
'basis' => $frozen ? 'selection_snapshot' : 'current_eligibility',
|
||||
'portal_received' => $received, 'portal_accepted' => $portal ? $decisions->where('outcome', 'accepted_for_analysis')->count() : null,
|
||||
'portal_rejected' => $portal ? $decisions->where('outcome', 'not_accepted')->count() : null,
|
||||
'portal_pending' => $portal ? $triage->pending($process) : null];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user