$applications */ public function __construct( public string $formSubmissionId, public ?string $provisionedSubjectType, public ?string $provisionedSubjectId, public array $applications, ) {} public function applyStatus(): ApplyStatus { if ($this->applications === []) { return ApplyStatus::COMPLETED; } $successes = $this->successCount(); $failures = $this->failureCount(); if ($failures === 0) { return ApplyStatus::COMPLETED; } if ($successes === 0) { return ApplyStatus::FAILED; } return ApplyStatus::PARTIAL; } public function successCount(): int { return count(array_filter($this->applications, fn (BindingApplicationResult $r): bool => $r->success)); } public function failureCount(): int { return count(array_filter($this->applications, fn (BindingApplicationResult $r): bool => ! $r->success)); } /** * @return list */ public function failures(): array { return array_values(array_filter( $this->applications, fn (BindingApplicationResult $r): bool => ! $r->success, )); } }