Admin Panel Analizi

Subscription Manage Sayfası

/admin/subscription/manage - Sistem Analizi

Basit Anlatım (Herkes İçin)

Bu Sayfa Ne Yapıyor?

Subscription Manage sayfası, kullanıcılara abonelik oluşturmak ve düzenlemek için kullanılıyor. Bir kullanıcıya yeni bir premium abonelik vermek istediğinizde bu sayfadan yapıyorsunuz.

Mevcut Özellikler

  • Kullanıcı Seçimi: Kime abonelik vereceğinizi seçiyorsunuz
  • Plan Seçimi: Hangi paketi seçeceğinizi belirliyorsunuz (örn: Premium)
  • Süre Seçimi: 15 gün, 1 ay, 3 ay, 1 yıl gibi seçenekler
  • Tarih Ayarlama: Başlangıç ve bitiş tarihleri
  • Deneme Süresi: Ücretsiz deneme verip vermeyeceğiniz
  • Otomatik Yenileme: Süre dolduğunda otomatik uzatılsın mı

Abonelik Zinciri Nedir?

Bir kullanıcıya birden fazla abonelik satabilirsiniz. Örneğin bugün 1 aylık aldı, gelecek ay için de 3 aylık aldı. Bunlar "zincir" oluşturur - biri bitince diğeri otomatik başlar.

Geliştirme İhtiyacı

Sayfanın hangi özelliklerini geliştirmek istediğinizi belirtin. Mevcut sistem zaten oldukça kapsamlı.

Teknik Detaylar (Geliştiriciler İçin)

Dosya Yapısı

Modules/Subscription/
├── App/Http/Livewire/Admin/
│   ├── SubscriptionManageComponent.php  ← Ana component
│   ├── SubscriptionComponent.php           ← Liste sayfası
│   ├── SubscriptionPlanComponent.php       ← Plan listesi
│   └── SubscriptionPlanManageComponent.php ← Plan formu
├── resources/views/admin/livewire/
│   ├── subscription-manage-component.blade.php  ← Form view
│   └── subscription-component.blade.php     ← Liste view
├── App/Models/
│   ├── Subscription.php      ← Abonelik modeli
│   └── SubscriptionPlan.php  ← Plan modeli
└── routes/admin.php

Route Tanımları

// Modules/Subscription/routes/admin.php

GET /admin/subscription/manage/{id?} → SubscriptionManageComponent

GET /admin/subscription/ → SubscriptionComponent (liste)

GET /admin/subscription/stats → SubscriptionStatsComponent

Livewire Component Properties

Form Alanları

  • $user_id - Kullanıcı ID
  • $subscription_plan_id - Plan ID
  • $cycle_key - Süre anahtarı (aylik, yillik...)
  • $status - active|trial|paused|cancelled|expired
  • $started_at - Başlangıç tarihi
  • $current_period_end - Bitiş tarihi
  • $has_trial - Deneme var mı
  • $trial_days - Deneme gün sayısı
  • $auto_renew - Otomatik yenileme

Dinamik Cycle Sistemi

  • $cycles - Plan'dan gelen cycle listesi
  • $selectedCycle - Seçili cycle detayları
  • Cycle Yapısı:
  • • label (çoklu dil)
  • • duration_days
  • • price / compare_price
  • • trial_days
  • • badge / promo_text

Veritabanı Şeması

subscriptions tablosu

  • subscription_id (PK)
  • user_id (FK → users)
  • subscription_plan_id (FK)
  • subscription_number (unique)
  • status (enum)
  • cycle_key, cycle_metadata (JSON)
  • price_per_cycle, currency
  • started_at, current_period_end
  • has_trial, trial_days, trial_ends_at
  • auto_renew, cancelled_at
  • metadata (JSON - order_id, corporate...)

subscription_plans tablosu

  • subscription_plan_id (PK)
  • title, description (JSON - çoklu dil)
  • slug (unique)
  • currency, tax_rate
  • billing_cycles (JSON - dinamik fiyatlar)
  • features (JSON)
  • device_limit
  • is_trial, is_featured, is_active
  • sort_order

Status Değerleri

active

Aktif abonelik

trial

Deneme süresi

pending

Sırada bekliyor

pending_payment

Ödeme bekliyor

expired

Süresi dolmuş

cancelled

İptal edilmiş

Subscription Chain Sistemi

Kullanıcı #123 Abonelik Zinciri:
┌─────────────────────────────────────────────────────┐
│ ACTIVE (chain_position: 1)                         │
│ 1 Ocak → 1 Şubat                                    │
└─────────────────────────────────────────────────────┘
          ↓
┌─────────────────────────────────────────────────────┐
│ PENDING (chain_position: 2)                        │
│ 1 Şubat → 1 Mart                                    │
└─────────────────────────────────────────────────────┘
          ↓
┌─────────────────────────────────────────────────────┐
│ PENDING (chain_position: 3)                        │
│ 1 Mart → 1 Nisan                                    │
└─────────────────────────────────────────────────────┘

// Silme durumunda → rechainUserSubscriptions() otomatik düzenler

Mevcut Form Yapısı (UI)

Sol Kolon (col-lg-8)

Card 1: Abonelik Bilgileri

  • • Kullanıcı Seçimi (select2, disabled düzenlemede)
  • • Plan Seçimi (select, wire:change ile cycle güncelle)
  • • Süre Seçeneği (dinamik radio/select)
  • • Cycle Detayları (info alert)

Card 2: Tarihler

  • • Başlangıç Tarihi (datetime-local)
  • • Bitiş Tarihi (otomatik hesaplanır)

Sağ Kolon (col-lg-4)

Card 3: Durum

Status select (6 seçenek)

Card 4: Deneme Süresi

  • • Has Trial (checkbox)
  • • Trial Days (number, koşullu gösterim)

Card 5: Yenileme

Auto Renew (checkbox)

Card 6: Kaydet

Submit Button

Geliştirme Önerileri

Eklenebilecek Özellikler

  • • Toplu abonelik oluşturma (CSV import)
  • • Abonelik klonlama
  • • Hızlı uzatma butonları (+7 gün, +30 gün)
  • • Abonelik notları/yorumları
  • • Fiyat override (manuel fiyat)
  • • Kurumsal hesap entegrasyonu

UX İyileştirmeleri

  • • Kullanıcı arama autocomplete
  • • Tarih seçici iyileştirmesi
  • • Önizleme modu (kaydetmeden önce)
  • • Daha iyi validation mesajları
  • • Keyboard shortcuts

Hangi özelliği geliştirmek istediğinizi belirtin, detaylı plan hazırlayalım.

15 Ocak 2026 • Muzibu.com