wiensa / support-ticket
Laravel 12 Support Ticket System Package
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/wiensa/support-ticket
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.




