Yeni Gereksinim: Trial subscription oluşturulduğunda User tablosundaki
has_used_trial field'i de güncellenmeli!
Mantık:
has_trial = true isehas_used_trial = true yapılmalı
Component hala eski billing_cycle enum kullanıyor (monthly, yearly...)
Sorun: Yeni dinamik cycle sistemi (15 gün, 45 gün, deneme-3-gun...) desteklenmiyor!
cycle_key ve
cycle_metadata field'leri tam kullanılmıyor
Sorun: Seçilen cycle'ın label, badge, promo_text bilgileri kaydedilmiyor!
View'da paused ve
pending_payment status'leri var ama component'te tam desteklenmiyor
Sorun: Abonelik duraklatma ve ödeme bekleme senaryoları eksik!
Plan'ın is_trial field'i kontrol edilmiyor
Sorun: Deneme planı seçildiğinde otomatik trial mantığı çalışmıyor!
currency her zaman 'TRY' olarak hardcoded
Sorun: Plan'ın currency field'i kullanılmıyor (USD/EUR/TRY desteği yok)!
Trial subscription oluşturulduğunda User->has_used_trial güncellenmiyor
Sorun: Kullanıcı manuel trial verildikten sonra tekrar trial alabilir!
Plan seçildiğinde plan'ın billing_cycles JSON field'inden tüm cycle'lar çekilir
Admin dropdown'dan bir cycle seçer (örn: "12-aylik")
Seçilen cycle'ın TÜM bilgileri cycle_metadata field'ine JSON olarak kaydedilir
Başlangıç tarihi + duration_days = Bitiş tarihi
Eğer cycle'da trial_days varsa veya plan is_trial=true ise trial aktif edilir
Eğer has_trial = true ise:
✅ $user->has_used_trial = true set edilir
✅ User database'de update yapılır
✅ Kullanıcı artık tekrar trial alamaz
Plan seçildiğinde cycles çekme, currency set etme, is_trial kontrolü
Cycle seçildiğinde price, duration, trial_days yükleme
cycle_key, cycle_metadata, currency, trial field'lerini doğru kaydetme
Badge, promo_text, compare_price gösterme
$currency, $selected_cycle_metadata
TRY → ₺, USD → $, EUR → €
Ne Yapılacak:
$this->has_trial === true ise:$user = User::find($this->user_id)has_used_trial field'ini güncelle:
Kod Örneği:
if (!$this->subscriptionId) { // Sadece yeni kayıt
Subscription::create($data);
// Trial kullanıldıysa user'ı işaretle
if ($this->has_trial) {
User::where('id', $this->user_id)
->update(['has_used_trial' => true]);
}
}
has_used_trial değişmemeli (false kalmalı)SELECT has_used_trial FROM users WHERE id=Xcycle_key fieldcycle_metadata fieldbilling_cycle enumsubscription_number