Polymorphic Sistem + Corporate Destegi
30 Aralik 2025 - v2 (Guncellendi)
Playlist sistemi artik playlistables polymorphic tablosunu kullaniyor. Sector, Radio ve Corporate modelleri guncellendi. Admin panele Corporate secimi eklendi.
| Tur | Sahiplik | Dagitim | Gizlilik | Kullanim |
|---|---|---|---|---|
| Sistem Playlist | user_id = NULLis_system = 1 |
✓ playlistables ile Sector, Radio, Corporate |
✓ Public | Admin olusturur Herkes gorur |
| Kisisel Playlist (My Playlists) |
user_id = Xis_system = 0 |
✗ Dagitilmaz Sadece sahibine ait |
✓ Ayarlanabiliris_public |
Kullanici olusturur Kendi listesi |
| Kurumsal Playlist | user_id = NULLis_system = 1 |
✓ playlistables ile Corporate'a ozel |
✗ Private Sadece o firma |
Admin olusturur Firma gorur |
HasPlaylistDistribution trait eklendi, eski playlists() metodu kaldirildi.
Modules/Muzibu/app/Models/Sector.php
HasPlaylistDistribution trait eklendi, eski playlists() metodu kaldirildi.
Modules/Muzibu/app/Models/Radio.php
HasPlaylistDistribution trait eklendi. Artik kurumsal hesaplara playlist dagitilabilir.
Modules/Muzibu/app/Models/MuzibuCorporateAccount.php
sectors(), radios() metodlari polymorphic yapiya cevirildi.
Yeni corporates() metodu eklendi.
Modules/Muzibu/app/Models/Playlist.php
corporate_ids input eklendi. activeCorporates computed property eklendi.
loadPageData ve save metodlari guncellendi.
Modules/Muzibu/app/Http/Livewire/Admin/PlaylistManageComponent.php
Kurumsal Hesaplar secimi icin dual listbox eklendi. Arama ozelligi calisiyor.
Modules/Muzibu/resources/views/admin/livewire/playlist-manage-component.blade.php
┌─────────────────────────────────────────────────────────────────────────────────┐
│ MUZIBU PLAYLISTS │
├─────────────────────────────────────────────────────────────────────────────────┤
│ playlist_id | user_id | title | is_system | is_public | is_radio │
├─────────────┬─────────┬────────────┬───────────┬───────────┬────────────┤
│ 1 │ NULL │ Pop Hits │ 1 │ 1 │ 0 │ ← Sistem
│ 2 │ NULL │ Chill Mix │ 1 │ 1 │ 0 │ ← Sistem
│ 3 │ 5 │ Gym Music │ 0 │ 0 │ 0 │ ← Kisisel (User 5)
└─────────────┴─────────┴────────────┴───────────┴───────────┴────────────┘
│
┌─────────────────┼─────────────────┐
│ │
▼ ▼
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ PLAYLISTABLES (DAGITIM) │ │ PLAYLIST_SONG (SARKILAR) │
├───────────────────────────────┤ ├───────────────────────────────┤
│ playlist_id │ type │ id │ │ playlist_id │ song_id │ pos │
├─────────────┼──────────┼──────┤ ├─────────────┼─────────┼─────┤
│ 1 │ sector │ 2 │ │ 1 │ 101 │ 1 │
│ 1 │ sector │ 5 │ │ 1 │ 102 │ 2 │
│ 1 │ radio │ 3 │ │ 1 │ 103 │ 3 │
│ 2 │ corporate│ 1 │ │ 3 │ 201 │ 1 │
└─────────────┴──────────┴──────┘ └─────────────┴─────────┴─────┘
Sistem playlist (1,2) → playlistables ile DAGITILIR
Kisisel playlist (3) → user_id ile SAHIPLIK belirlenir
// MuzibuServiceProvider.php
Relation::morphMap([
'sector' => Sector::class,
'radio' => Radio::class,
'corporate' => MuzibuCorporateAccount::class,
]);
Kisisel playlist'ler icin user_id kullanmak DOGRU yaklasim.
playlistable sistemi DAGITIM icindir, sahiplik icin degil.
// Kisisel playlist olusturma
$playlist = Playlist::create([
'user_id' => auth()->id(), // SAHIPLIK
'title' => ['tr' => 'Benim Listem'],
'is_system' => false,
'is_public' => false, // Gizli
]);
// Kullanicinin playlist'lerini cekme
$myPlaylists = Playlist::where('user_id', auth()->id())->get();
Mutlu, Huzunlu, Enerjik, Romantik
Pop, Rock, Jazz, Elektronik
Sabah, Ogle, Aksam, Gece
a99e41e0e
Playlist polymorphic system: Update models and admin UI