Tüm Kararlar (Final)
Zorunlu dinleme. Skip yok, seek yok.
Admin ne yüklerse o çalar.
Dosya boyutu limiti.
Performans öncelikli. DB sorgusu yok.
Rotation: 1→2→3→1→2→3...
Admin + Corporate ayrı ayrı açıp kapatabilir.
Veritabanı Yapısı
GÜNCELLEME: muzibu_corporate_accounts
Mevcut tabloya 4 kolon ekleniyor:
-- Ana şube ayarları (parent_id = null olanlar kullanır)
spot_enabled BOOLEAN DEFAULT TRUE, -- Kurumsal: Spot sistemi açık mı?
spot_songs_between INT DEFAULT 10, -- Kurumsal: Kaç şarkıda bir?
spot_current_index INT DEFAULT 0, -- Rotation: Sıradaki spot
-- Her şube için (tüm kayıtlar kullanır)
spot_is_paused BOOLEAN DEFAULT FALSE -- Şube: Durduruldu mu?
YENİ: muzibu_corporate_spots
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT PK | Auto increment |
| title | VARCHAR(255) | Spot başlığı |
| audio_path | VARCHAR(500) | Dosya yolu |
| duration | INT | Saniye (ffprobe) |
| file_size | INT | Bytes |
| position | INT DEFAULT 0 | Sıralama (drag-drop) |
| is_active | BOOLEAN DEFAULT TRUE | Admin: Spot aktif mi? |
| play_count | INT DEFAULT 0 | Toplam çalınma |
| timestamps | TIMESTAMP | created_at, updated_at |
YENİ: muzibu_corporate_spot_plays
| Kolon | Tip | Açıklama |
|---|---|---|
| id | BIGINT PK | Auto increment |
| spot_id | BIGINT FK | Hangi spot çaldı |
| corporate_account_id | BIGINT FK | Hangi şubede |
| user_id | BIGINT FK NULL | Kim dinledi |
| played_at | TIMESTAMP | Ne zaman |
INDEX (spot_id, played_at)
INDEX (user_id)
Veritabanı Özeti
+4
Kolon (mevcut)
+2
Yeni Tablo
3
Index
Aktif/Pasif Mantığı (3 Katman)
Admin
Tüm sistemi kontrol
spots.is_active
Ana Şube
Kendi kurumunu kontrol
corporate.spot_enabled
Şube
Kendini kontrol
branch.spot_is_paused
Kontrol Matrisi
| Admin | Corporate | Şube | Sonuç |
|---|---|---|---|
| ❌ Pasif | - | - | ÇALMAZ (Sistem kapalı) |
| ✓ Aktif | ❌ Kapalı | - | ÇALMAZ (Kurum kapatmış) |
| ✓ Aktif | ✓ Açık | ⏸ Durdurmuş | ÇALMAZ (Şube durdurmuş) |
| ✓ Aktif | ✓ Açık | ✓ Aktif | ÇALAR ✓ |
Admin Kontrolü
- • Her spot için ayrı ayrı
- •
is_active = false - • Pasif spot hiçbir yerde çalmaz
- • Rotation'dan çıkar
Corporate Kontrolü
- • Tüm kurum için tek ayar
- •
spot_enabled = false - • Tüm şubelerde spot durur
- • Sadece ana şube değiştirebilir
Şube Kontrolü
- • Her şube kendisi için
- •
spot_is_paused = true - • Sadece o şubede durur
- • Diğer şubeler etkilenmez
Admin Panel
Menü Konumu
Spot Listesi Sayfası
Corporate Spots
Kurumsal hesaplarda çalacak spotları yönetin
5
Toplam
3
Aktif
2
Pasif
2.4K
Toplam Çalınma
| Sıra | Spot | Süre | Çalınma | Durum | İşlem | |
|---|---|---|---|---|---|---|
| 1 |
Yılbaşı Kampanyası 1.2 MB • 30 Ara 2025 |
0:45 | 856 | |||
| 2 |
Happy Hour Duyurusu 0.8 MB • 28 Ara 2025 |
0:30 | 642 | |||
| 3 |
Eski Kampanya 0.9 MB • 15 Ara 2025 |
0:35 | 421 |
Spot Yükleme / Düzenleme
Dosyayı sürükle veya tıkla
MP3, WAV, M4A • Max 30 MB
Yılbaşı Kampanyası
kampanya.mp3
Süre
0:45
Boyut
1.2 MB
Format
MP3
Frontend (Kullanıcı Arayüzü)
Kurumsal Panel: Spot Ayarları (Ana Şube)
Spot Ayarları
Tüm şubeleriniz için spot ayarlarını buradan yönetin
Spot Sistemi
Tüm şubelerde spotların çalmasını aç/kapat
Spot Aralığı
Kaç şarkıdan sonra spot çalsın?
Şarkılar en az 30 saniye dinlendiğinde sayılır
3
Aktif Spot
1,245
Bu Ay
5
Aktif Şube
Şube: Sidebar Widget
Spot Aktif
Spotlar
Aktif
Spot Durdurulmuş
Spotlar
Durduruldu
Spotlar çalmıyor
Player: Spot Çalarken
Normal Şarkı
Hayal Kahvesi
Sezen Aksu
Spot Çalarken
Yılbaşı Kampanyası
Şirket Duyurusu
İstatistik Sayfaları
Admin: Spot İstatistikleri
2,456
Toplam Çalınma
847
Bu Hafta
156
Bugün
12
Aktif Kurum
Spot Bazlı Dağılım
Kurum Bazlı (Top 5)
Kurumsal: Şube İstatistikleri
524
Toplam
187
Bu Hafta
42
Bugün
Şube Bazlı Dağılım
| Şube | Durum | Bugün | Bu Hafta | Toplam |
|---|---|---|---|---|
| Merkez (Ana) | Aktif | 18 | 72 | 215 |
| Ankara | Aktif | 12 | 58 | 156 |
| İzmir | Durduruldu | 0 | 24 | 89 |
| Bursa | Aktif | 12 | 33 | 64 |
API Endpoints
Admin API
Corporate API
Player API
Oluşturulacak Dosyalar
Backend
// Migrations
Modules/Muzibu/database/migrations/tenant/
├── add_spot_fields_to_corporate_accounts.php
├── create_corporate_spots_table.php
└── create_corporate_spot_plays_table.php
// Models
Modules/Muzibu/app/Models/
├── CorporateSpot.php
└── CorporateSpotPlay.php
// Controllers
Modules/Muzibu/app/Http/Controllers/
├── Admin/CorporateSpotController.php
└── Api/SpotApiController.php
// Livewire
Modules/Muzibu/app/Http/Livewire/Admin/
└── CorporateSpotManagement.php
// Services
Modules/Muzibu/app/Services/
└── CorporateSpotService.php
Frontend
// Admin Views
resources/views/admin/muzibu/spots/
├── index.blade.php
├── manage.blade.php
└── stats.blade.php
// Frontend Views
resources/views/themes/muzibu/
├── corporate/spot-settings.blade.php
├── corporate/spot-stats.blade.php
└── components/
├── spot-widget.blade.php
└── spot-player.blade.php
// JavaScript
public/themes/muzibu/js/
├── muzibu-store.js (güncelle)
└── player/features/
└── corporate-spot.js (yeni)
Geliştirme Sırası
Veritabanı
3 migration + 2 model + MuzibuCorporateAccount güncelle
Admin Panel
Liste + Form + Drag-drop + Dosya yükleme + İstatistik
Kurumsal Panel
Ayarlar sayfası + İstatistik sayfası
Şube Widget
Sidebar component + Durdur/Devam
Player Entegrasyonu
JS logic + Spot çalma UI + localStorage sayaç
Test & Deploy
Migration + Manuel test + npm run prod + Cache temizle