Tüm Kararlar (Final)
Skip serbest, zorlama yok.
Admin + Ana şube tarih belirler.
Admin + Ana şube sıralama belirler.
Performans öncelikli.
Dosya boyutu limiti.
Admin ne yüklerse o.
Kurum Admin'i override edebilir.
Admin → Corporate → Şube
Veritabanı Yapısı
YENİ: muzibu_corporate_spots (Admin'in yüklediği spotlar)
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT PK | Auto increment |
| title | VARCHAR(255) | Spot başlığı |
| audio_path | VARCHAR(500) | Dosya yolu |
| duration | INT | Saniye |
| file_size | INT | Bytes |
| position | INT DEFAULT 0 | Admin sıralaması (global default) |
| starts_at | TIMESTAMP NULL | Admin başlangıç tarihi (NULL = her zaman) |
| ends_at | TIMESTAMP NULL | Admin bitiş tarihi (NULL = süresiz) |
| is_active | BOOLEAN DEFAULT TRUE | Admin kontrolü (false = hiçbir yerde çalmaz) |
| play_count | INT DEFAULT 0 | Toplam çalınma |
| timestamps | TIMESTAMP | created_at, updated_at |
YENİ: muzibu_corporate_spot_schedules (Kurum bazlı override)
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT PK | Auto increment |
| spot_id | BIGINT FK | Hangi spot |
| corporate_account_id | BIGINT FK | Hangi kurum (ana şube) |
| position | INT NULL | Kurum sıralaması (NULL = Admin'inki) |
| starts_at | TIMESTAMP NULL | Kurum başlangıç (NULL = Admin'inki) |
| ends_at | TIMESTAMP NULL | Kurum bitiş (NULL = Admin'inki) |
| is_enabled | BOOLEAN DEFAULT TRUE | Kurum kontrolü (false = bu kurumda çalmaz) |
| timestamps | TIMESTAMP | created_at, updated_at |
INDEX (corporate_account_id)
YENİ: muzibu_corporate_spot_plays (Çalınma logları)
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT PK | |
| spot_id | BIGINT FK | Hangi spot |
| corporate_account_id | BIGINT FK | Hangi şube |
| user_id | BIGINT FK NULL | Kim dinledi |
| was_skipped | BOOLEAN DEFAULT FALSE | Atlandı mı? |
| played_at | TIMESTAMP | Ne zaman |
GÜNCELLEME: muzibu_corporate_accounts (4 kolon ekleme)
spot_enabled BOOLEAN DEFAULT TRUE -- Ana şube: Sistem açık mı?
spot_songs_between INT DEFAULT 10 -- Ana şube: Kaç şarkıda bir?
spot_current_index INT DEFAULT 0 -- Rotation index
spot_is_paused BOOLEAN DEFAULT FALSE -- Her şube: Durduruldu mu?
Veritabanı Özeti
3
Yeni Tablo
+4
Kolon
Override
Sistem
Esnek
Yapı
Kontrol & Override Yapısı
3 Katmanlı Kontrol Hiyerarşisi
1. Admin
Global kontrol
• is_active (spot bazlı)
• position (global sıra)
• starts_at / ends_at
2. Ana Şube
Kurum bazlı override
• spot_enabled (kurum)
• is_enabled (spot bazlı)
• position (kurum sırası)
• starts_at / ends_at
3. Şube
Şube bazlı durdur
• spot_is_paused
(sadece durdur/devam)
Override Mantığı
Tarih Override
Sıralama Override
Spot Çalması İçin Tüm Koşullar
-- Spot çalabilir mi?
WHERE spot.is_active = TRUE -- Admin aktif
AND corporate.spot_enabled = TRUE -- Kurum aktif
AND branch.spot_is_paused = FALSE -- Şube durdurulmamış
AND (schedule.is_enabled IS NULL OR schedule.is_enabled = TRUE) -- Kurum spot'u kapatmamış
AND (
COALESCE(schedule.starts_at, spot.starts_at) IS NULL
OR COALESCE(schedule.starts_at, spot.starts_at) <= NOW()
)
AND (
COALESCE(schedule.ends_at, spot.ends_at) IS NULL
OR COALESCE(schedule.ends_at, spot.ends_at) >= NOW()
)
ORDER BY COALESCE(schedule.position, spot.position)
Kontrol Matrisi
| Admin | Corporate | Spot (Kurum) | Şube | Tarih | Sonuç |
|---|---|---|---|---|---|
| ❌ Pasif | - | - | - | - | ÇALMAZ |
| ✓ | ❌ Kapalı | - | - | - | ÇALMAZ |
| ✓ | ✓ | ❌ Devre dışı | - | - | ÇALMAZ |
| ✓ | ✓ | ✓ | ⏸ Durdu | - | ÇALMAZ |
| ✓ | ✓ | ✓ | ✓ | Geçmemiş/Geçmiş | ÇALMAZ |
| ✓ | ✓ | ✓ | ✓ | Tarih OK | ÇALAR ✓ |
Admin Panel
Spot Listesi
Corporate Spots
| Sıra | Spot | Tarih Aralığı | Süre | Durum | İşlem | |
|---|---|---|---|---|---|---|
| 1 |
Yılbaşı Kampanyası 1.2 MB |
25 Ara - 05 Oca |
0:45 | Aktif | ||
| 2 |
Genel Duyuru 0.8 MB |
Süresiz |
0:30 | Aktif |
Spot Yükleme / Düzenleme Formu
Dosyayı sürükle veya tıkla
Max 30 MB
Boş = Her zaman
Boş = Süresiz
Yılbaşı Kampanyası
kampanya.mp3
Süre
0:45
Boyut
1.2 MB
Format
MP3
Kurumsal Panel (Ana Şube)
Spot Yönetimi (Ana Şube)
Kurumsal Spot Ayarları
Spotları kurum için özelleştirin
Spot Sistemi
Tüm şubelerde
Spotları Yönet
Yılbaşı Kampanyası
Admin tarihi: 25 Ara - 05 Oca
Özel tarih
28 Ara - 02 Oca
Genel Duyuru
Admin tarihi: Süresiz
Admin tarihi
Happy Hour
Admin tarihi: Süresiz
Sıralamayı değiştirmek için sürükle-bırak yapın. Tarih/durum düzenlemek için kalem ikonuna tıklayın.
Spot Düzenleme (Kurum Override)
Yılbaşı Kampanyası
0:45 • Admin tarihi: 25 Ara - 05 Oca
Bu ayarlar sadece sizin kurumunuzu etkiler. Diğer kurumlar Admin tarihlerini kullanmaya devam eder.
Şube Sidebar Widget
Aktif
Spotlar
3 şarkı sonra
Durdurulmuş
Spotlar
Durduruldu
Player
Spot Çalarken Player Görünümü
Normal Şarkı
Hayal Kahvesi
Sezen Aksu
Spot Çalarken
Yılbaşı Kampanyası
Atla butonu: Kullanıcı isterse spotu atlayabilir. Atlama "was_skipped=true" olarak loglanır.
İstatistik Sayfaları
Admin İstatistikleri
2,456
Toplam Çalınma
18%
Atlama Oranı
Kurum Bazlı
Kurumsal İstatistikler
524
Toplam
187
Bu Hafta
Şube Bazlı
API Endpoints
Admin
Corporate
Player
Geliştirme Sırası
4 migration + 2 model + ilişkiler
CRUD + tarih + sıralama + istatistik
Ayarlar + override + sıralama + istatistik
Sidebar + durdur/devam
JS logic + UI + skip button
Migration + test + build