# Kolay Abonelik — İnternet & TV Abonelik Bayi Yönetim Sistemi

Laravel 12 / PHP 8.3 üzerinde kurgulanan, kurumsal seviyede İnternet & TV Abonelik Satış ve Bayi Yönetim Platformu. Bu ortamda PHP/Composer çalıştırılamadığından tüm dosyalar elle, Laravel 12 konvansiyonlarına birebir uyacak şekilde yazılmıştır; `composer install` sonrası doğrudan çalışır durumdadır.

## İçerik

- `database/migrations` — 18 migration, tüm tablolar ve foreign key ilişkileri (bkz. `docs/ERD.md`)
- `app/Models`, `app/Enums` — Eloquent modeller, ilişkiler, cast'ler, accessor'lar (cari bakiye vb.)
- `app/Services/CommissionService.php`, `app/Observers/SubscriptionObserver.php` — Yüzdelik/Sabit/Karma komisyon hesaplama ve abonelik tamamlanınca otomatik hakediş üretimi
- `app/Policies`, `app/Providers/AuthServiceProvider.php`, `database/seeders/RolesAndPermissionsSeeder.php` — RBAC (Master Admin, Satış Bayisi, İçerik Bayisi)
- `app/Http/Controllers/Panel` — Yönetim paneli: Dashboard, Bayi, Abonelik, Firma, Paket, Ödeme, Kategori, İçerik, Başvuru, Rapor, Kullanıcı, Rol, Ayar controller'ları
- `app/Http/Controllers/Site` — Pazarlama sitesi: ana sayfa, paket listeleme/filtreleme/karşılaştırma, online başvuru formu, blog/SSS
- `app/Http/Controllers/Api` + `app/Http/Resources` — Sanctum korumalı REST API
- `app/DataTables` — Yajra DataTables (bayi ve abonelik listeleri için sunucu taraflı tablo)
- `app/Exports` — Excel/CSV export sınıfları (satış, bayi performans, finans raporu) + `panel/reports/pdf.blade.php` ile PDF export
- `app/Notifications` — Yeni başvuru, ödeme girişi, hakediş hesaplandı, abonelik durumu değişti bildirimleri (mail + database)
- `app/Http/Controllers/Auth` — Giriş, çıkış, rate limiting, Google2FA kurulum/onay/doğrulama akışı
- `resources/views` — Tailwind CDN ile panel ve site arayüzleri (layout, dashboard grafikleri, tüm CRUD sayfaları)
- `docs/ERD.md` — Mermaid ERD diyagramı ve tasarım kararlarının gerekçesi

## Kurulum (kendi makinenizde / sunucuda)

```bash
composer create-project laravel/laravel:^12.0 kolayabonelik
# Bu depodaki app/, database/, routes/, config/, resources/, bootstrap/, .env.example
# dosyalarını yeni projenin üzerine kopyalayın, sonra:

composer install

cp .env.example .env
php artisan key:generate
# .env içindeki DB_* ve REDIS_* bilgilerini düzenleyin

php artisan migrate --seed
php artisan storage:link
```

Seeder sonrası giriş bilgileri (hepsi `Password123!`):
- Master Admin: `admin@kolayabonelik.com`
- Satış Bayisi: `satisbayi@kolayabonelik.com`
- İçerik Bayisi: `icerikbayi@kolayabonelik.com`

## Önemli notlar

- Bu ortamda PHP/Composer çalıştırılamadığı için `php artisan migrate` / `route:list` ile canlı bir doğrulama yapılamadı. Tüm dosyalar elle, dikkatle yazıldı ve parantez/söz dizimi bütünlüğü script ile kontrol edildi; yine de kendi ortamınızda `composer install` sonrası `php artisan route:list` ve `php artisan migrate --seed` çalıştırarak doğrulamanızı öneririz.
- Two-Factor Authentication `pragmarx/google2fa-laravel` + `pragmarx/google2fa-qrcode` paketlerini kullanır; `composer.json` içinde tanımlıdır.
- DataTables sadece Bayiler ve Abonelikler listelerinde (ajax uç noktası + Blade fallback) örnek olarak kuruldu; diğer listeler basit sayfalama (`paginate`) kullanır.
- Dosya yüklemeleri (kimlik görseli, dekont) `private` disk'e, logo/paket/içerik görselleri `public` disk'e kaydedilir — `php artisan storage:link` çalıştırmayı unutmayın.
- E-posta bildirimleri `.env` içindeki `MAIL_*` ayarlarına bağlıdır; kuyruk (queue) kullanıldığından `php artisan queue:work` çalışır durumda olmalıdır.

## Sonraki adımlar için öneriler

- Testler (Pest/PHPUnit) henüz yazılmadı.
- Mobil uygulama için REST API genişletilebilir (şu an bayi/abonelik/paket/firma uçları mevcut).
- Aktivasyon e-postaları, şifre sıfırlama akışı Laravel'in standart mekanizmalarıyla eklenebilir.
