presseportale/app/Enums/BoostPlacement.php
Kevin Adametz 0474d22347 Boost-Slot-Grenzen (5/3) + Kategorie-Boost zum halben Satz
Entscheidung 13.07.: verkauft wird nur, was sichtbar ist — max. 5
gleichzeitige Boosts je Startseite, 3 je Branchenseite (= die sichtbaren
Plaetze; Hero-Slider damit vertagt). Neue Stufe Kategorie-Boost (nur
Branchenseite, 6/10/18 Credits = 50 % aufgerundet); der Startseiten-Boost
(12/20/35) erscheint weiter auf Start- UND Branchenseite.

- boosts.placement (home/category, Bestand = home) + BoostPlacement-Enum;
  Preise/Slots in config/credits.php (boost_category, boost_slots)
- BoostService::slotAvailability() je Ausgabe (Portal x Sprache, Kategorie
  zusaetzlich je Rubrik); ausgebucht -> soldOut-Exception mit fruehestem
  freien Termin; Verlaengerungen halten ihren Slot, Stufen verlaengern
  unabhaengig; Kategorie-Boost invalidiert nur Kategorie-Caches
- Startseite zeigt nur Home-Boosts; Branchenseite: Kategorie-Boosts mit
  Vorrang (ihre 3 Slots sind die Garantie), Home-Boosts fuellen den Rest
- Add-on-Panel der PM-Seite: zwei Boost-Angebote, bei vollem Inventar
  "Derzeit ausgebucht — frei ab" statt Kauf-Buttons (serverseitig gegated);
  Buchungsseiten-Preisliste um die Kategorie-Staffel ergaenzt

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-13 12:28:03 +00:00

34 lines
922 B
PHP

<?php
namespace App\Enums;
/**
* Platzierungs-Stufe eines Boosts (Entscheidung 13.07.2026): der
* Startseiten-Boost (voller Preis) erscheint auf Startseite UND Branchenseite,
* der Kategorie-Boost (halber Preis) nur auf der Branchenseite. Beide Stufen
* haben ein eigenes Slot-Inventar je Ausgabe (config credits.boost_slots).
*/
enum BoostPlacement: string
{
case Home = 'home';
case Category = 'category';
public function label(): string
{
return match ($this) {
self::Home => 'Startseiten-Boost',
self::Category => 'Kategorie-Boost',
};
}
/**
* Wo die Platzierung sichtbar ist (für Add-on-UI und Kauf-Mails).
*/
public function placementDescription(): string
{
return match ($this) {
self::Home => 'Startseite und Branchenseite',
self::Category => 'Branchenseite der Rubrik',
};
}
}