File manager - Edit - /var/www/html/homologBancodetalentos/app/Support/TalentBank/ApplicationNotificationPresenter.php
Back
<?php namespace App\Support\TalentBank; use App\Models\TalentBank\Candidate; use App\Models\TalentBank\JobListing; final class ApplicationNotificationPresenter { public static function jobTitle(JobListing $job): string { return optional($job->occupation)->name ?? 'Vaga'; } /** * @param array<string, mixed> $context * @return array{title: string, body: string, subject: string} */ public static function forCandidate(string $type, JobListing $job, Candidate $candidate, array $context = []): array { $vaga = self::jobTitle($job); $statusLabel = isset($context['status']) ? JobApplicationStatus::label((string) $context['status']) : null; return match ($type) { ApplicationNotificationType::APPLICATION_SUBMITTED => [ 'title' => 'Candidatura enviada', 'body' => "Sua candidatura para a vaga \"{$vaga}\" foi registrada com sucesso.", 'subject' => 'Candidatura confirmada — Banco de Talentos', ], ApplicationNotificationType::APPLICATION_VIEWED => [ 'title' => 'Currículo visualizado', 'body' => "A empresa visualizou sua candidatura para \"{$vaga}\".", 'subject' => 'Sua candidatura foi visualizada', ], ApplicationNotificationType::APPLICATION_IN_ANALYSIS => [ 'title' => 'Candidatura em análise', 'body' => "O status da sua candidatura para \"{$vaga}\" foi alterado para \"Em análise\".", 'subject' => 'Sua candidatura foi atualizada', ], ApplicationNotificationType::STATUS_CHANGED => [ 'title' => 'Status atualizado', 'body' => $statusLabel ? "O status da sua candidatura para \"{$vaga}\" foi alterado para \"{$statusLabel}\"." : "Há uma atualização na sua candidatura para \"{$vaga}\".", 'subject' => 'Sua candidatura foi atualizada', ], ApplicationNotificationType::APPLICATION_APPROVED => [ 'title' => 'Candidatura aprovada', 'body' => "Parabéns! Você foi aprovado para a vaga \"{$vaga}\".", 'subject' => 'Você foi aprovado na vaga', ], ApplicationNotificationType::APPLICATION_REJECTED => [ 'title' => 'Candidatura reprovada', 'body' => "Sua candidatura para \"{$vaga}\" foi encerrada com status Reprovado.", 'subject' => 'Atualização na sua candidatura', ], ApplicationNotificationType::INTERVIEW_INVITATION => [ 'title' => 'Convite para entrevista', 'body' => "Você foi convocado para entrevista na vaga \"{$vaga}\".", 'subject' => 'Convite para entrevista', ], ApplicationNotificationType::INTERVIEW_SCHEDULED => [ 'title' => 'Entrevista agendada', 'body' => $context['scheduled_at'] ?? "Sua entrevista para \"{$vaga}\" foi agendada.", 'subject' => 'Entrevista agendada', ], ApplicationNotificationType::JOB_CLOSED => [ 'title' => 'Vaga encerrada', 'body' => "A vaga \"{$vaga}\" foi encerrada. Sua candidatura foi finalizada.", 'subject' => 'Vaga encerrada', ], ApplicationNotificationType::COMPANY_MESSAGE => [ 'title' => 'Nova mensagem da empresa', 'body' => $context['message_preview'] ?? "A empresa enviou uma mensagem sobre a vaga \"{$vaga}\".", 'subject' => 'Nova mensagem sobre sua candidatura', ], default => [ 'title' => 'Atualização na candidatura', 'body' => "Há novidades na sua candidatura para \"{$vaga}\".", 'subject' => 'Atualização — Banco de Talentos', ], }; } /** * @param array<string, mixed> $context * @return array{title: string, body: string, subject: string} */ public static function forCompany(string $type, JobListing $job, Candidate $candidate, array $context = []): array { $vaga = self::jobTitle($job); $nome = $candidate->name ?? 'Candidato'; return match ($type) { ApplicationNotificationType::NEW_APPLICANT => [ 'title' => 'Novo candidato', 'body' => "{$nome} se inscreveu na vaga \"{$vaga}\".", 'subject' => 'Novo candidato inscrito na vaga', ], ApplicationNotificationType::CANDIDATE_UPDATED_RESUME => [ 'title' => 'Currículo atualizado', 'body' => "{$nome} atualizou o currículo após se candidatar à vaga \"{$vaga}\".", 'subject' => 'Candidato atualizou o currículo', ], ApplicationNotificationType::CANDIDATE_REPLIED_MESSAGE => [ 'title' => 'Resposta do candidato', 'body' => "{$nome} respondeu uma mensagem sobre \"{$vaga}\".", 'subject' => 'Candidato respondeu mensagem', ], ApplicationNotificationType::CANDIDATE_CONFIRMED_INTERVIEW => [ 'title' => 'Entrevista confirmada', 'body' => "{$nome} confirmou a entrevista para \"{$vaga}\".", 'subject' => 'Candidato confirmou entrevista', ], ApplicationNotificationType::CANDIDATE_CANCELLED_INTERVIEW => [ 'title' => 'Entrevista cancelada', 'body' => "{$nome} cancelou a entrevista para \"{$vaga}\".", 'subject' => 'Candidato cancelou entrevista', ], ApplicationNotificationType::APPLICATION_WITHDRAWN => [ 'title' => 'Candidatura retirada', 'body' => "{$nome} retirou a candidatura da vaga \"{$vaga}\".", 'subject' => 'Candidato retirou candidatura', ], default => [ 'title' => 'Atualização de candidatura', 'body' => "Atualização de {$nome} na vaga \"{$vaga}\".", 'subject' => 'Atualização — Banco de Talentos', ], }; } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings