TAMAMLANDI

Muzibu Playlist Sistemi

Polymorphic Sistem + Corporate Destegi

30 Aralik 2025 - v2 (Guncellendi)

TUM GUNCELLEMELER TAMAMLANDI!

Playlist sistemi artik playlistables polymorphic tablosunu kullaniyor. Sector, Radio ve Corporate modelleri guncellendi. Admin panele Corporate secimi eklendi.

✓ Modeller

  • ✓ Sector.php
  • ✓ Radio.php
  • ✓ MuzibuCorporateAccount.php
  • ✓ Playlist.php

✓ Admin Panel

  • ✓ PlaylistManageComponent
  • ✓ Corporate secimi UI
  • ✓ Dual listbox calisiyor

✓ Veritabani

  • ✓ playlistables tablosu
  • ✓ 161 kayit mevcut
  • ✓ morphMap tanimli

🎵 Playlist Turleri

Tur Sahiplik Dagitim Gizlilik Kullanim
Sistem Playlist user_id = NULL
is_system = 1
✓ playlistables ile
Sector, Radio, Corporate
✓ Public Admin olusturur
Herkes gorur
Kisisel Playlist
(My Playlists)
user_id = X
is_system = 0
✗ Dagitilmaz
Sadece sahibine ait
✓ Ayarlanabilir
is_public
Kullanici olusturur
Kendi listesi
Kurumsal Playlist user_id = NULL
is_system = 1
✓ playlistables ile
Corporate'a ozel
✗ Private
Sadece o firma
Admin olusturur
Firma gorur

🛠 Yapilan Degisiklikler

Sector.php Guncellendi

HasPlaylistDistribution trait eklendi, eski playlists() metodu kaldirildi.

Modules/Muzibu/app/Models/Sector.php

Radio.php Guncellendi

HasPlaylistDistribution trait eklendi, eski playlists() metodu kaldirildi.

Modules/Muzibu/app/Models/Radio.php

MuzibuCorporateAccount.php Guncellendi

HasPlaylistDistribution trait eklendi. Artik kurumsal hesaplara playlist dagitilabilir.

Modules/Muzibu/app/Models/MuzibuCorporateAccount.php

Playlist.php Guncellendi

sectors(), radios() metodlari polymorphic yapiya cevirildi. Yeni corporates() metodu eklendi.

Modules/Muzibu/app/Models/Playlist.php

PlaylistManageComponent.php Guncellendi

corporate_ids input eklendi. activeCorporates computed property eklendi. loadPageData ve save metodlari guncellendi.

Modules/Muzibu/app/Http/Livewire/Admin/PlaylistManageComponent.php

Playlist Admin UI Guncellendi

Kurumsal Hesaplar secimi icin dual listbox eklendi. Arama ozelligi calisiyor.

Modules/Muzibu/resources/views/admin/livewire/playlist-manage-component.blade.php

🗃 Veritabani Mimarisi


┌─────────────────────────────────────────────────────────────────────────────────┐
│                           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
                

💡 morphMap Tanimlari

// MuzibuServiceProvider.php
Relation::morphMap([
    'sector' => Sector::class,
    'radio' => Radio::class,
    'corporate' => MuzibuCorporateAccount::class,
]);

👤 Kisisel Playlist Stratejisi

✓ KARAR: user_id Kullan

Kisisel playlist'ler icin user_id kullanmak DOGRU yaklasim. playlistable sistemi DAGITIM icindir, sahiplik icin degil.

💡 Kisisel Playlist Ornegi

// 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();

🔮 Gelecek Entity'ler (Eklenebilir)

💜

Mood

Mutlu, Huzunlu, Enerjik, Romantik

🎶

Genre

Pop, Rock, Jazz, Elektronik

Time Slot

Sabah, Ogle, Aksam, Gece

💻 Git Commit

a99e41e0e

Playlist polymorphic system: Update models and admin UI