wiensa / support-ticket
Laravel 12 Support Ticket System Package
Requires
- php: ^8.2
- illuminate/database: ^12.0
- illuminate/support: ^12.0
Requires (Dev)
- laravel/framework: ^12.0
- laravel/pint: ^1.13.7
- orchestra/testbench: ^9.0
- pestphp/pest: ^2.28.1
- phpstan/phpstan: 1.10.56
- rector/rector: 0.19.5
README
Bu paket, Laravel uygulamalarınız için tam özellikli bir destek bileti sistemi sunar. Kullanıcılarınızın destek taleplerini kolayca yönetmenize olanak tanır.
Özellikler
- Kullanıcı Talepleri: Kullanıcılar destek talebi oluşturabilir, görüntüleyebilir ve yanıtlayabilir
- Kategori Sistemi: Talepleri farklı kategorilere ayırma
- Dosya Ekleri: Taleplere ve yanıtlara dosya ekleme desteği
- Bildirimler: E-posta bildirimleri ve webhook entegrasyonları
- Admin Paneli: Tüm destek taleplerini yönetme
- Ayarlar Yönetimi: Sistem ayarlarını admin panelinden değiştirme
- API Desteği: RESTful API entegrasyonu
- Yetkilendirme: Laravel Gate ve Policy sistemi ile tam entegrasyon
- Morph İlişkileri: Herhangi bir kullanıcı modeli ile kullanılabilir
- Modern UI: Bootstrap 5 ile responsive tasarım
- Filtreleme ve Arama: Gelişmiş arama ve filtreleme özellikleri
Ekran Görüntüleri
Kullanıcı Arayüzü
Admin Arayüzü
Kurulum
Composer aracılığıyla paketi yükleyin:
composer require wiensa/support-ticket
Paket yapılandırması, görünümleri ve migrationları yayınlamak için aşağıdaki komutu çalıştırın:
php artisan supportticket:install
Migrationları çalıştırın:
php artisan migrate
Temel verileri eklemek için seed komutunu çalıştırın:
php artisan db:seed --class=Database\\Seeders\\SupportTicketCategorySeeder php artisan db:seed --class=Database\\Seeders\\SupportTicketSettingsSeeder
Kullanım
Kullanıcı Modülü Entegrasyonu
Kullanıcı modülünüze destek talepleri sistemini entegre etmek için, projenizin routes/web.php
dosyasına aşağıdaki rotaları ekleyin:
// Destek talepleri için route'ları include et Route::middleware(['web', 'auth'])->group(function () { Route::prefix('support')->name('support.')->group(function () { include base_path('vendor/wiensa/support-ticket/routes/web.php'); }); });
Blade şablonlarınıza destek talepleri bağlantısını ekleyin:
<a href="{{ route('supportticket.tickets.index') }}">Destek Taleplerim</a>
Admin Modülü Entegrasyonu
Admin panel yapınıza destek talepleri yönetimini entegre etmek için, admin route yapılandırmanıza:
// Admin için destek talepleri route'larını include et Route::middleware(['web', 'auth', 'admin'])->group(function () { Route::prefix('admin/support')->name('admin.support.')->group(function () { include base_path('vendor/wiensa/support-ticket/routes/admin.php'); }); });
Ayrıca, config dosyasında admin middleware'i düzenleyebilirsiniz:
// config/supportticket.php 'admin_middleware' => ['web', 'auth', 'admin'], // Admin middleware
Blade Komponentleri
Paket, kullanmanız için bir dizi Blade komponenti içerir:
<!-- Talep listesi komponenti --> <x-supportticket::ticket-list :tickets="$tickets" /> <!-- Talep detay komponenti --> <x-supportticket::ticket-detail :ticket="$ticket" /> <!-- Yanıt form komponenti --> <x-supportticket::reply-form :ticket="$ticket" /> <!-- Kategori seçici komponenti --> <x-supportticket::category-selector :selected="$category" /> <!-- Dosya eki yükleyici komponenti --> <x-supportticket::attachment-uploader :ticketable="$ticket" />
Partial Bileşenleri
Paket, projenize entegre edebileceğiniz partial bileşenler içerir:
<!-- Bildirimler --> @include('partials.alerts') <!-- Kategori Filtreleme --> @include('partials.category-filter') <!-- Dosya Eki Formu --> @include('partials.attachment-form', ['ticketable' => $ticket])
Servis Sınıfları
Paketi programatik olarak kullanmak için aşağıdaki servis sınıflarını kullanabilirsiniz:
use Wiensa\SupportTicket\Services\TicketService; use Wiensa\SupportTicket\Services\AttachmentService; use Wiensa\SupportTicket\Services\NotificationService; // Ticket Service $ticketService = app(TicketService::class); $ticket = $ticketService->createTicket([ 'subject' => 'Konu', 'message' => 'Mesaj', 'priority' => 'medium', 'category' => $categoryId, ], $user); // Attachment Service $attachmentService = app(AttachmentService::class); $attachment = $attachmentService->uploadFile($file, $ticket, $user); // Notification Service $notificationService = app(NotificationService::class); $notificationService->sendNewTicketNotifications($ticket);
Olaylar ve Dinleyiciler
Paket, aşağıdaki olayları tetikler:
Wiensa\SupportTicket\Events\TicketCreated
- Yeni talep oluşturulduğundaWiensa\SupportTicket\Events\TicketReplied
- Talebe yanıt verildiğindeWiensa\SupportTicket\Events\TicketClosed
- Talep kapatıldığındaWiensa\SupportTicket\Events\TicketReopened
- Talep yeniden açıldığındaWiensa\SupportTicket\Events\TicketStatusChanged
- Talep durumu değiştiğindeWiensa\SupportTicket\Events\AttachmentUploaded
- Dosya yüklendiğinde
Uygulamanızda bu olayları dinlemek için event listener'lar oluşturabilirsiniz.
API Kullanımı
API endpointleri şunlardır:
GET /api/support/tickets
- Tüm talepleri listelerGET /api/support/tickets/{id}
- Belirli bir talebi görüntülerPOST /api/support/tickets
- Yeni talep oluştururPOST /api/support/tickets/{id}/replies
- Talebe yanıt eklerPUT /api/support/tickets/{id}
- Talebi güncellerDELETE /api/support/tickets/{id}
- Talebi silerPOST /api/support/tickets/{id}/close
- Talebi kapatırPOST /api/support/tickets/{id}/reopen
- Talebi yeniden açarPOST /api/support/attachments
- Dosya eklerGET /api/support/categories
- Kategorileri listeler
API kullanımı örneği:
// Yeni talep oluşturma $response = $client->post('/api/support/tickets', [ 'json' => [ 'subject' => 'API Test', 'message' => 'Bu bir API test talebidir', 'category' => $categoryId, 'priority' => 'high', ], 'headers' => [ 'Authorization' => 'Bearer ' . $token, ], ]);
Yapılandırma
config/supportticket.php
dosyasında aşağıdaki ayarları özelleştirebilirsiniz:
route_prefix
- Rota önekimiddleware
- Rotalarda kullanılacak middlewareadmin_middleware
- Admin rotalarında kullanılacak middlewareevents
- Olay yapılandırmasıattachments
- Dosya eki yapılandırmasımax_size
- Maksimum dosya boyutu (MB)allowed_types
- İzin verilen dosya tipleristorage_disk
- Depolama diskistorage_path
- Depolama yolu
categories
- Kategori yapılandırmasıallow_create
- Kullanıcıların kategori oluşturmasına izin verdefault
- Varsayılan kategori ID'si
auto_close
- Otomatik kapanma ayarlarıenabled
- Aktif/Pasifdays
- Otomatik kapanma günü
admin_emails
- Bildirim alacak admin e-postaları
Özelleştirme
Views
Viewları özelleştirmek için:
php artisan vendor:publish --tag=supportticket-views
Config
Yapılandırma dosyasını özelleştirmek için:
php artisan vendor:publish --tag=supportticket-config
Translations
Dil dosyalarını özelleştirmek için:
php artisan vendor:publish --tag=supportticket-lang
Assets
CSS ve JS dosyalarını özelleştirmek için:
php artisan vendor:publish --tag=supportticket-assets
Değişiklik Geçmişi
Değişiklik geçmişi için CHANGELOG.md dosyasına bakın.
Lisans
Bu paket MIT lisansı altında lisanslanmıştır.