Bug Analizi Subscription

Dashboard vs Admin Panel: Kalan Süre Farkı

28 Aralık 2025 | User ID: 1

Problem Özeti

Dashboard (/dashboard)

389g 5s

Bitiş: 22.01.2027

Admin Panel (/admin/subscription)

359g 5s

Bitiş: 23.12.2026

Fark: 30 gün

Basit Anlatım (Herkes İçin)

Ne oldu?
Aynı kullanıcı için iki farklı sayfada iki farklı "kalan gün" gösteriliyor. Dashboard'da 389 gün, Admin Panel'de 359 gün yazıyor.

Neden oluyor?
Bu kullanıcının iki ayrı abonelik kaydı var:

  • Aktif Abonelik: 23 Aralık 2026'da bitiyor (359 gün)
  • Bekleyen Abonelik: 22 Ocak 2027'de bitiyor (389 gün)

Dashboard → "Toplam ne kadar kaldı?" sorusuna cevap veriyor (aktif + bekleyen aboneliklerin toplamı).

Admin Panel → "Şu anki aktif abonelik ne zaman bitiyor?" sorusuna cevap veriyor.

Bu bir hata değil, tasarım kararı. İki sayfa farklı bilgi gösteriyor. Ancak kullanıcı kafası karışabilir, tutarlı olması önerilir.

Teknik Detaylar (Geliştiriciler İçin)

Veri Kaynakları

Sayfa Veri Kaynağı Değer
Dashboard tenant_muzibu_1528d0.users.subscription_expires_at 2027-01-22 02:54:57
Admin Panel subscriptions.current_period_end (status=active) 2026-12-23 02:54:57

User ID: 1 - Subscription Kayıtları

ID Plan ID Status Period End Kalan
54 15 active 2026-12-23 359 gün
82 12 pending 2027-01-22 389 gün

Kod Akışı

Dashboard

  • 1. DashboardController::index()
  • 2. calculateTimeLeft($user->subscription_expires_at)
  • 3. Tenant DB'den users.subscription_expires_at
  • 4. = 2027-01-22 (active + pending max)

Admin Panel

  • 1. SubscriptionComponent::render()
  • 2. getEffectiveStatus($subscription)
  • 3. subscription.current_period_end
  • 4. = 2026-12-23 (sadece active)

İlgili Dosyalar

  • Modules/Muzibu/app/Http/Controllers/Front/DashboardController.php :41 (calculateTimeLeft)
  • Modules/Subscription/resources/views/admin/livewire/subscription-component.blade.php :374-396
  • app/Models/User.php :451 (recalculateSubscriptionExpiry)

Kök Neden (Root Cause)

Subscription Zincir Sistemi

Sistemde "subscription chaining" özelliği var. Kullanıcı yeni abonelik satın aldığında, mevcut aboneliği bitmeden "pending" durumunda yeni bir kayıt oluşturuluyor. Bu sayede abonelikler zincirleniyor.

users.subscription_expires_at Hesaplaması

recalculateSubscriptionExpiry() fonksiyonu, active + pending subscription'ların en son bitiş tarihini users.subscription_expires_at kolonuna yazıyor.

Admin Panel Sorgusu

Admin panel sadece status='active' olan subscription'ı gösteriyor. Pending olanlar ayrı satırlarda listelenir ama "kalan süre" hesaplaması sadece aktif kayıt için yapılıyor.

Çözüm Önerileri

1

Tutarlılık Sağla

Her iki sayfada da aynı veri kaynağını kullan. Önerilen: users.subscription_expires_at (toplam kalan süre gösterir).

2

Admin Panel'de İki Bilgi Göster

"Aktif Abonelik Bitiş: 359g" ve "Toplam Kalan: 389g" şeklinde her iki değeri de göster.

3

Pending Subscription Görünürlüğü

Admin panel'de pending subscription'ların da "kalan süre" bilgisi gösterilebilir.

Sonuç

Bu bir bug değil, farklı tasarım kararlarından kaynaklanan tutarsızlık.

Dashboard doğru bilgiyi gösteriyor (toplam kalan süre: 389 gün).

Admin Panel da doğru bilgiyi gösteriyor (aktif abonelik bitiş: 359 gün).

Kullanıcı deneyimi için tutarlı gösterim önerilir.