Files
amare/app/Support/PackageContactLink.php
manoel freitas 900b76ad19
Some checks failed
CI / static (pull_request) Successful in 2m1s
CI / unit (pull_request) Successful in 4m1s
CI / feature (pull_request) Successful in 3m1s
CI / container (pull_request) Successful in 55s
CI / browser (pull_request) Failing after 2m13s
merge: integrar main (MAN-139) na branch de modalidades
Resolve conflito em PackageContactLink: mantém forOrientation do main e a mensagem de orientação da Ata.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 23:43:16 -03:00

54 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Support;
use App\Models\SiteSetting;
final class PackageContactLink
{
public const ORIENTATION_MESSAGE = 'Olá, ainda não sei qual modalidade de assessoria faz sentido para o meu casamento e gostaria de orientação.';
/**
* Resolve the contextual contact link for a wedding package modality.
*
* @return array{href: string, isWhatsapp: bool}
*/
public static function for(SiteSetting $settings, string $packageName): array
{
return self::resolve(
$settings,
'Olá, gostaria de conversar sobre a modalidade '.$packageName.' para meu casamento.',
['servico_interesse' => $packageName],
);
}
/**
* WhatsApp (or briefing fallback) when the visitor does not know which modality to choose.
*
* @return array{href: string, isWhatsapp: bool}
*/
public static function forOrientation(SiteSetting $settings): array
{
return self::resolve($settings, self::ORIENTATION_MESSAGE, []);
}
/**
* @param array<string, string> $briefingQuery
* @return array{href: string, isWhatsapp: bool}
*/
private static function resolve(SiteSetting $settings, string $whatsappMessage, array $briefingQuery): array
{
$digits = preg_replace('/\D/', '', (string) $settings->whatsapp_number);
$isWhatsapp = strlen($digits) >= 10;
return [
'href' => $isWhatsapp
? 'https://wa.me/'.$digits.'?text='.rawurlencode($whatsappMessage)
: route('briefing', $briefingQuery),
'isWhatsapp' => $isWhatsapp,
];
}
}