| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- namespace App\Notifications\Push;
- use App\Enums\PushNotificationCategoryEnum;
- use App\Enums\PushNotificationTargetEnum;
- use Illuminate\Database\Eloquent\Collection;
- abstract class BasePushNotification
- {
- abstract public function label(): string;
- abstract public function title(): string;
- abstract public function body(): string;
- abstract public function target(): PushNotificationTargetEnum;
- abstract public function category(): PushNotificationCategoryEnum;
- /**
- * Retorna os usuários elegíveis para receber esta notificação agora.
- * Não aplica cooldown — isso é responsabilidade do PushNotificationDispatcher.
- */
- abstract public function eligibleUsers(): Collection;
- /**
- * Cooldown em dias para esta notificação específica (nível de msg).
- */
- public function notificationCooldownDays(): int
- {
- return 28;
- }
- /**
- * Cooldown em dias para a categoria desta notificação (nível de categoria).
- * Retorne 0 para desabilitar o cooldown de categoria.
- */
- public function categoryCooldownDays(): int
- {
- return 7;
- }
- /**
- * Canal de notificação do Android usado por esta push.
- *
- * 'diaria' toca o som chamativo (diaria.wav); 'padrao' usa o som de
- * notificação do sistema. Só sobrescreva para 'diaria' nas pushes que
- * exigem atenção imediata — o canal precisa existir no app de destino
- * (ver MainActivity.java dos apps de cliente e prestador).
- */
- public function androidChannelId(): string
- {
- return 'padrao';
- }
- }
|