BasePushNotification.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. }