BasePushNotification.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace App\Notifications\Push;
  3. use App\Enums\PushNotificationCategoryEnum;
  4. use App\Enums\PushNotificationTargetEnum;
  5. use Illuminate\Database\Eloquent\Collection;
  6. abstract class BasePushNotification
  7. {
  8. abstract public function label(): string;
  9. abstract public function title(): string;
  10. abstract public function body(): string;
  11. abstract public function target(): PushNotificationTargetEnum;
  12. abstract public function category(): PushNotificationCategoryEnum;
  13. /**
  14. * Retorna os usuários elegíveis para receber esta notificação agora.
  15. * Não aplica cooldown — isso é responsabilidade do PushNotificationDispatcher.
  16. */
  17. abstract public function eligibleUsers(): Collection;
  18. /**
  19. * Cooldown em dias para esta notificação específica (nível de msg).
  20. */
  21. public function notificationCooldownDays(): int
  22. {
  23. return 28;
  24. }
  25. /**
  26. * Cooldown em dias para a categoria desta notificação (nível de categoria).
  27. * Retorne 0 para desabilitar o cooldown de categoria.
  28. */
  29. public function categoryCooldownDays(): int
  30. {
  31. return 7;
  32. }
  33. /**
  34. * Canal de notificação do Android usado por esta push.
  35. *
  36. * 'diaria' toca o som chamativo (diaria.wav); 'padrao' usa o som de
  37. * notificação do sistema. Só sobrescreva para 'diaria' nas pushes que
  38. * exigem atenção imediata — o canal precisa existir no app de destino
  39. * (ver MainActivity.java dos apps de cliente e prestador).
  40. */
  41. public function androidChannelId(): string
  42. {
  43. return 'padrao';
  44. }
  45. }