🎁 Trial Sistemi - Tam Yönetim Kılavuzu

❓ Trial Planını Kim Oluşturacak?

Cevap: Admin Panelden Manuel Oluşturulacak

Trial planı normal bir subscription plan gibi admin panelden oluşturulacak, ama özel özellikleri olacak:

📋 Trial Planı Nasıl Oluşturulacak?

1. Admin Panel → Subscription Plans → Yeni Plan Ekle

Normal plan ekleme ekranını kullanacaksın.

2. Plan Bilgileri:
  • Plan Adı: "Trial" (veya "Deneme Üyeliği")
  • Slug: trial (ÖNEMLİ: Sistem bu slug'ı kullanacak!)
  • Açıklama: "7 gün ücretsiz deneme"
  • Fiyat: ₺0.00
  • Para Birimi: TRY
3. Cycle Ekle (SADECE 1 TANE!):
  • Cycle Adı: "7 Günlük Trial"
  • Süre: 7 gün
  • Fiyat: ₺0.00
  • NOT: Trial planında sadece TEK cycle olmalı!
⚠️ ÖNEMLİ:
  • Trial planının slug'ı trial olmalı (sistem bu slug ile bulacak)
  • Sadece 1 cycle olmalı (çoklu cycle mantıksız)
  • Fiyat ₺0.00 olmalı
  • Plan aktif olmalı (is_active = true)

⏰ Trial Süresi Nereden Gelecek?

Yaklaşım 1: Setting'den

Setting tablosunda trial_days field'i:

✅ Artıları:

  • Tek yerden yönetim
  • Kolay değiştirme

❌ Eksileri:

  • Trial plan ile senkronizasyon sorunu
  • İki yerde değiştirmek gerek (plan + setting)
  • Karmaşık

Yaklaşım 2: Trial Planından

Trial planının cycle süresini kullan:

✅ Artıları:

  • Tek kaynak gerçeği (plan)
  • Senkronizasyon yok
  • Basit ve temiz
  • Plan süresini değiştirdin → Trial değişti

❌ Eksileri:

  • Yok (En iyi yaklaşım)

✅ ÖNERİLEN: Yaklaşım 2 (Plan Süresinden)

Sistem trial planını bulacak (slug = 'trial') ve o planın cycle süresini kullanacak. Bu sayede tek yerden yönetim sağlanır.

💡 Nasıl Çalışacak?

1. Kullanıcı kayıt olur

2. Sistem trial planını bulur: SubscriptionPlan::where('slug', 'trial')->first()

3. O planın ilk (ve tek) cycle'ını alır

4. Cycle süresini kullanarak subscription oluşturur (örn: 7 gün)

🤖 Kayıt Olunca Trial Otomatik Nasıl Atanacak?

📍 Mantık:

Adım 1: Kullanıcı Kayıt Olur

Normal kayıt işlemi (email, şifre vb.)

Adım 2: Sistem Kontrol Eder

Kullanıcı daha önce trial kullandı mı?

  • user.has_used_trial == true → Trial verme!
  • user.has_used_trial == false → Trial ver!

Adım 3: Trial Subscription Oluştur

Otomatik olarak yeni subscription kaydı:

  • plan_id = Trial planının ID'si
  • status = active
  • starts_at = Şimdi
  • ends_at = 7 gün sonra (plan cycle süresinden)
  • price_per_cycle = ₺0.00

Adım 4: has_used_trial İşaretle

Kullanıcının has_used_trial field'ını true yap. Artık bir daha trial alamaz!

⚠️ Kritik:
  • has_used_trial bir defa true oldu mu, bir daha false olmaz!
  • Kullanıcı subscription'ı silse bile trial alamaz
  • Bu field users tablosunda olmalı (yeni migration gerekli)

👀 Trial Durumunu Nasıl Göreceğiz?

1️⃣ Admin Panel - Subscriptions Listesi

Subscriptions tablosunda trial subscription'ları göreceksin:

  • Plan: "Trial" (plan adı gösterilecek)
  • Status: "Active" veya "Expired"
  • Bitiş Tarihi: "2025-12-11 23:59:59"
  • Fiyat: ₺0.00

2️⃣ User Detail Sayfası

Kullanıcı detay sayfasında badge gösterilecek:

  • Trial aktifse: 🎁 Trial Aktif (5 gün kaldı)
  • Trial bittiyse: Trial Kullanıldı
  • Trial kullanmadıysa: Trial Kullanılabilir

3️⃣ Database Sorgusu

SQL ile trial subscription'larını bulma:

SELECT s.*, sp.title 
FROM subscriptions s
JOIN subscription_plans sp ON s.plan_id = sp.subscription_plan_id
WHERE sp.slug = 'trial'
AND s.status = 'active';

🔧 Trial Süresini Nasıl Değiştireceğiz?

Yöntem: Trial Planının Cycle Süresini Güncelle

Admin panel → Subscription Plans → "Trial" planını düzenle:

Şu An: 7 Günlük Trial

Cycle: "7 Günlük Trial" → Süre: 7 gün

Değiştir: 14 Günlük Trial

Cycle süresini düzenle: 7 → 14 gün

Sonuç:

Yeni kayıt olan kullanıcılar 14 günlük trial alacak!

⚠️ Not:
  • Süre değişikliği sadece yeni kullanıcılar için geçerli
  • Mevcut aktif trial'lar etkilenmez
  • Örnek: Ahmet'in 7 günlük trial'ı devam eder, yeni Mehmet 14 gün alır

📋 Özet - Tüm Süreç

1. Admin İlk Kurulum (Bir Kere):
  • Trial planı oluştur (slug: trial, fiyat: ₺0.00, süre: 7 gün)
  • has_used_trial field'ini users tablosuna ekle (migration)
2. Kullanıcı Kayıt Olunca (Otomatik):
  • Sistem has_used_trial kontrol eder
  • False ise → Trial subscription oluşturur
  • has_used_trial = true işaretler
  • Kullanıcıya "7 gün trial başladı" mesajı gösterir
3. Trial Aktifken:
  • Kullanıcı premium özelliklere erişir (sınırsız dinleme)
  • user->isPremium()true döner
  • Admin panelde trial subscription görünür
4. Trial Bitince (Otomatik):
  • Günlük cron job çalışır
  • Bugün biten trial'ları bulur
  • status = expired yapar
  • Kullanıcı normal üye olur (30 saniye limit)
5. Trial Süresini Değiştirmek (İsteğe Bağlı):
  • Admin panel → Trial planı → Cycle süresini güncelle
  • 7 gün → 14 gün gibi
  • Yeni kullanıcılar yeni süreyi alır