☑️ Trial Checkbox Yaklaşımı

🎯 Neden Checkbox Daha İyi?

❌ Eski: Slug Yaklaşımı

Sistem slug = 'trial' kontrolü yapar

Sorunlar:

  • Slug yanlış yazılabilir (trial, Trial, TRIAL)
  • Slug değiştirilebilir (trial → deneme)
  • Birden fazla "trial" slug olabilir
  • Belirsiz: "Bu trial mı değil mi?"

✅ Yeni: Checkbox Yaklaşımı

Sistem is_trial = true kontrolü yapar

Avantajlar:

  • Net: TRUE veya FALSE
  • Yanlış yazma riski yok
  • Sadece 1 plan is_trial olabilir (validasyon)
  • Admin panelde açık seçim: ☑️

✅ Checkbox = Daha Güvenli & Net

Slug yerine boolean field kullanmak daha profesyonel ve hatasız!

🖼️ Admin Panel'de Nasıl Görünecek?

Subscription Plan Oluştur/Düzenle


⚠️ Önemli: Sistemde sadece 1 plan deneme üyeliği olarak işaretlenebilir. Bu seçeneği işaretlerseniz, diğer planların deneme üyeliği otomatik kaldırılır.

⚙️ Nasıl Çalışacak?

1. Database Migration

subscription_plans tablosuna yeni field:

is_trial BOOLEAN DEFAULT FALSE

2. Admin Panel'de Checkbox

Plan oluştururken/düzenlerken checkbox:

<input type="checkbox" wire:model="inputs.is_trial"> ☑️ Bu bir deneme üyeliğidir

3. Validasyon (SADECE 1 TRIAL)

Checkbox işaretlenirse, sistem kontrol eder:

// Başka trial planı var mı? $existingTrial = SubscriptionPlan::where('is_trial', true) ->where('id', '!=', $this->planId) ->first(); if ($existingTrial) { // HATA: Zaten bir trial planı var! // Veya otomatik diğerini FALSE yap }

4. Sistem Trial Planını Bulma

Kayıt olunca sistem trial planını bulur:

$trialPlan = SubscriptionPlan::where('is_trial', true) ->where('is_active', true) ->first(); if ($trialPlan) { // Trial subscription oluştur }
💡 Avantaj:

Slug yerine is_trial kullanmak:

  • Daha net ve anlaşılır
  • Hata yapma riski yok
  • Validasyon kolay (sadece 1 true olabilir)
  • Database index eklenebilir (performans)

🛡️ Validasyon Senaryoları

Senaryo 1: İkinci Trial Planı Oluşturmaya Çalışıyorsun

Durum: Zaten "Trial" planı var (is_trial = true)

Yeni Plan: "Premium Trial" oluşturuyorsun, checkbox işaretliyorsun

✅ Sistem:

  • Yaklaşım A: Hata mesajı: "Zaten bir deneme planı var!"
  • Yaklaşım B: Eski "Trial" planının is_trial'ını FALSE yap, yeniye TRUE ver
Öneri: Yaklaşım B daha kullanıcı dostu!

Senaryo 2: Mevcut Trial Planının Checkbox'ını Kaldırıyorsun

Durum: "Trial" planı var (is_trial = true)

İşlem: Checkbox'ı kaldırıyorsun (FALSE yapıyorsun)

⚠️ Sistem:

  • Uyarı göster: "Bu planın deneme üyeliği durumu kaldırılacak. Emin misiniz?"
  • Onaylarsa is_trial = FALSE yap
  • Artık sistemde hiç trial planı yok!

🗄️ Database Yapısı

Migration:

Schema::table('subscription_plans', function (Blueprint $table) { $table->boolean('is_trial') ->default(false) ->after('is_active') ->comment('Bu plan deneme üyeliği mi?'); // Performans için index $table->index('is_trial'); });

Örnek Veri:

| id | title | slug | is_trial | is_active | |----|-----------|----------|----------|-----------| | 1 | Trial | trial | TRUE | TRUE | | 2 | Premium | premium | FALSE | TRUE | | 3 | Gold | gold | FALSE | TRUE |
💡 Not:

Sadece 1 plan is_trial = TRUE olabilir. Sistem bunu garanti etmeli (validasyon + unique index).

📋 Özet

✅ Checkbox Yaklaşımı FTW!

  • Güvenli: Slug hatası riski yok
  • Net: TRUE/FALSE, açık seçim
  • Validasyon: Sadece 1 trial garantisi
  • Kullanıcı Dostu: Admin panelde checkbox = Kolay
  • Performans: Boolean index hızlı

Yapılacaklar:

  1. Migration: is_trial field ekle
  2. Admin panel: Checkbox ekle
  3. Validasyon: Sadece 1 trial kontrolü
  4. Sistem: where('is_trial', true) ile bul