Düzeltildi v2

Subscription Süre Farkı - Düzeltme Raporu

28 Aralık 2025

Yapılan Düzeltmeler

1

SubscriptionObserver Güncellendi

Subscription oluşturulduğunda, güncellendiğinde veya silindiğinde users.subscription_expires_at otomatik olarak yeniden hesaplanacak.

app/Observers/SubscriptionObserver.php
2

Admin Panel'e "Toplam Kalan" Kolonu Eklendi

Subscription listesinde artık hem "Bu Üyelik" (aktif abonelik bitiş) hem de "Toplam Kalan" (aktif + pending) görünüyor.

Modules/Subscription/resources/views/admin/livewire/subscription-component.blade.php

Öncesi / Sonrası

Öncesi

  • Dashboard: 389 gün
  • Admin Panel: 359 gün
  • Tek kolon (karışık)

Sonrası

  • Dashboard: 389 gün (toplam)
  • Admin Panel: 359g (bu üyelik) + 389g (toplam)
  • İki kolon (net ayrım)

subscription_expires_at Nasıl Hesaplanıyor?

Veritabanında Saklı (Cache)

users.subscription_expires_at değeri her seferinde hesaplanmıyor, veritabanında saklanıyor. Bu sayede her sayfa yüklemesinde ek sorgu yapılmıyor.

Ne Zaman Güncelleniyor?

Tetikleyici Dosya
Subscription oluşturulduğunda SubscriptionObserver::created()
Subscription güncellendiğinde SubscriptionObserver::updated()
Subscription silindiğinde SubscriptionObserver::deleted()
Ödeme tamamlandığında Order.php:309
Pending→Active geçişinde ProcessSubscriptionTransitions
Kurumsal üyelik oluşturulduğunda CorporateSubscriptionService

Hesaplama Mantığı

recalculateSubscriptionExpiry() fonksiyonu:

  1. Kullanıcının tüm active ve pending subscription'larını al
  2. current_period_end değerine göre sırala (DESC)
  3. En son bitiş tarihini users.subscription_expires_at'e yaz

Veri Akışı

subscriptions

ID:54 (active)

ID:82 (pending)

recalculateSubscriptionExpiry()

MAX(current_period_end)

users

subscription_expires_at

2027-01-22 (389g)

Sonuç

subscription_expires_at her seferinde hesaplanmıyor, veritabanında saklanıyor (performans için).

SubscriptionObserver'a eklenen recalculateUserExpiry() ile artık her subscription değişikliğinde otomatik güncelleniyor.

Admin Panel'de artık hem "Bu Üyelik" hem "Toplam Kalan" görünüyor.