Installation
composer require masumbd/ticket
php artisan vendor:publish --provider="Masum1008\Ticket\TicketServiceProvider" --tag="migrations"
php artisan vendor:publish --provider="Masum1008\Ticket\TicketServiceProvider" --tag="config"
php artisan migrate
Publish Assets
php artisan vendor:publish --provider="Masum1008\Ticket\TicketServiceProvider" --tag="public"
php artisan vendor:publish --provider="Masum1008\Ticket\TicketServiceProvider" --tag="views"
Add Routes
Include in routes/web.php:
Route::prefix('ticket')->group(function () {
require __DIR__ . '/ticket.php';
});
First Use Case
php artisan ticker:make-admin or php artisan ticker:make-agent./ticket/create.Ticket Creation
resources/views/vendor/ticket/).Masum1008\Ticket\Http\Requests\CreateTicketRequest.Agent Assignment
Masum1008\Ticket\Services\TicketService::assignAgent().department_agent table.Role-Based Permissions
Masum1008\Ticket\Http\Middleware\CheckTicketRole) to restrict access.Route::middleware(['auth', 'ticket.role:agent'])->group(function () {
// Agent-only routes
});
Localization
resources/lang/vendor/ticket/ or override in app/lang/vendor/ticket/.config/ticket.php:
'locale' => 'en',
Dashboard Integration
resources/views/vendor/ticket/dashboard.blade.php.Masum1008\Ticket\Repositories\TicketRepository::getStats().ticket table via migrations and update the form in resources/views/vendor/ticket/create.blade.php.Masum1008\Ticket\Events\TicketCreated to send custom emails.Masum1008\Ticket\Http\Controllers\Api controllers for REST endpoints.Archived Status
Middleware Conflicts
ticket.role middleware is placed after auth in route groups to avoid permission errors.Auto-Assignment Logic
department_agent table. Verify data integrity if tickets aren’t auto-assigned.\Masum1008\Ticket\Services\TicketService::getLeastBusyAgent($departmentId);
Asset Publishing
php artisan vendor:publish --tag="public" --force
Ticket Not Saving?
Validate the CreateTicketRequest payload and check for validation errors in resources/views/vendor/ticket/errors.blade.php.
Permission Denied?
Verify user roles in users table (role column: user, agent, or admin).
Custom Ticket Statuses
statuses table and update Masum1008\Ticket\Models\Ticket::getStatusOptions().Attachment Handling
Masum1008\Ticket\Http\Controllers\TicketController::uploadAttachment() for custom storage (e.g., S3).Email Templates
resources/views/vendor/ticket/emails/ or override the Masum1008\Ticket\Mail\TicketMailer class.API Responses
Masum1008\Ticket\Http\Resources\TicketResource for custom API payloads.Department-Based Assignment
Ensure config/ticket.php has auto_assign_agents set to true and departments are configured:
'departments' => [
1 => 'General',
2 => 'Technical',
],
Localization Fallback
Set fallback_locale in config/ticket.php to avoid missing translations:
'fallback_locale' => 'en',
How can I help you explore Laravel packages today?