rmscms/tickets

RMSCMS Ticket Management System - Complete ticketing solution with admin and user interfaces

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:Blade

pkg:composer/rmscms/tickets

1.0.0 2025-12-04 10:34 UTC

This package is auto-updated.

Last update: 2025-12-04 10:40:10 UTC


README

پکیج مدیریت تیکت کامل برای سیستم RMS با پشتیبانی از ادمین و پنل کاربری.

✨ ویژگی‌ها

  • مدیریت کامل تیکت - ایجاد، پاسخ، بستن، بازکردن مجدد
  • پنل ادمین - مشاهده همه تیکت‌ها + ارجاع + تغییر وضعیت
  • پنل کاربر - ایجاد و مدیریت تیکت‌های خود
  • سیستم رویداد - Event/Listener برای نوتیفیکیشن
  • آپلود فایل - پشتیبانی از ضمیمه با فشرده‌سازی خودکار تصاویر
  • وضعیت‌های سفارشی - قابل تنظیم در دیتابیس
  • ماژولار و Extendable - قابل سفارشی‌سازی کامل
  • مدل‌های قابل تنظیم - استفاده از مدل‌های پروژه یا پکیج
  • رابط کاربری زیبا - با Limitless Template + Dark Mode

📦 نصب

1️⃣ نصب از طریق Composer

composer require rms/tickets

2️⃣ انتشار فایل‌های پکیج

# انتشار config
php artisan vendor:publish --tag=tickets-config

# انتشار migrations
php artisan vendor:publish --tag=tickets-migrations

# انتشار views (اختیاری - برای سفارشی‌سازی)
php artisan vendor:publish --tag=tickets-views

# انتشار assets (CSS/JS)
php artisan vendor:publish --tag=tickets-assets

3️⃣ اجرای Migration

php artisan migrate

⚙️ تنظیمات

فایل config/tickets.php

return [
    // 🎨 مدل‌های قابل تنظیم (استفاده از مدل‌های پروژه)
    'models' => [
        'ticket' => \App\Models\Ticket::class,
        'ticket_detail' => \App\Models\TicketDetail::class,
        'ticket_status' => \App\Models\TicketStatus::class,
        'department' => \App\Models\Department::class,
        'admin' => \App\Models\Admin::class,
        'user' => \App\Models\User::class,
    ],

    // 📊 وضعیت‌های پیش‌فرض
    'status' => [
        'default' => 1, // وضعیت پیش‌فرض تیکت جدید
        'closed' => 4,  // وضعیت بسته شده
    ],

    // 📁 تنظیمات آپلود
    'upload' => [
        'max_size' => 10240, // 10MB
        'allowed_types' => ['jpg', 'jpeg', 'png', 'pdf', 'zip'],
    ],
];

🚀 استفاده

ثبت روت‌ها

در فایل routes/admin.php:

use RMS\Tickets\Controllers\Admin\TicketsController;
use RMS\Core\Helpers\RouteHelper;

RouteHelper::adminResource(TicketsController::class, 'tickets');

در فایل routes/panel.php:

use RMS\Tickets\Controllers\Panel\TicketsController;
use RMS\Core\Helpers\RouteHelper;

RouteHelper::panelResource(TicketsController::class, 'tickets');

استفاده از Events

پکیج شامل رویدادهای زیر است:

  • TicketCreatedEvent - تیکت جدید ایجاد شد
  • AdminReplyEvent - ادمین پاسخ داد
  • UserReplyEvent - کاربر پاسخ داد
  • TicketClosedEvent - تیکت بسته شد
  • TicketReopenedEvent - تیکت باز شد
  • TicketReferredEvent - تیکت ارجاع داده شد

برای دریافت نوتیفیکیشن، در EventServiceProvider ثبت کنید.

🎨 سفارشی‌سازی

استفاده از مدل‌های سفارشی

اگر می‌خواهید از مدل‌های خودتان استفاده کنید:

// در config/tickets.php
'models' => [
    'ticket' => \App\Models\MyCustomTicket::class,
],

مدل شما باید از RMS\Tickets\Models\Ticket ارث‌بری کند.

Override کردن View ها

بعد از انتشار viewها:

php artisan vendor:publish --tag=tickets-views

می‌توانید فایل‌ها را در resources/views/vendor/tickets/ ویرایش کنید.

توسعه کنترلر

می‌توانید کنترلر را extend کنید:

use RMS\Tickets\Controllers\Admin\TicketsController as BaseController;

class TicketsController extends BaseController
{
    protected function getUserStats($user): array
    {
        // منطق سفارشی خود را اضافه کنید
        return [
            'credit' => $user->credit,
            'accounts_30d' => $user->accounts()->recent()->count(),
        ];
    }
}

📂 ساختار پکیج

rms/tickets/
├── src/
│   ├── Controllers/
│   │   ├── Admin/TicketsController.php
│   │   └── Panel/TicketsController.php
│   ├── Models/
│   │   ├── Ticket.php
│   │   ├── TicketDetail.php
│   │   └── TicketStatus.php
│   ├── Events/
│   ├── Listeners/
│   └── TicketsServiceProvider.php
├── resources/
│   ├── views/
│   └── assets/
├── database/migrations/
├── config/tickets.php
└── README.md

🐛 مشکلات رایج

1. مسیر View پیدا نمی‌شود

php artisan view:clear
php artisan vendor:publish --tag=tickets-views --force

2. مدل پیدا نمی‌شود

مطمئن شوید namespace مدل‌ها در config/tickets.php درست است.

3. Asset ها لود نمی‌شوند

php artisan vendor:publish --tag=tickets-assets --force

📝 TODO

  • افزودن متدهای کامل به کنترلرها (show, reply, close, reopen)
  • کپی View های Blade
  • کپی Asset های CSS/JS
  • ساخت Migration ها
  • ساخت ServiceProvider
  • افزودن تست‌های واحد
  • مستندسازی کامل API

🤝 مشارکت

برای مشارکت در توسعه این پکیج، لطفاً PR ارسال کنید.

📄 لایسنس

MIT License

👨‍💻 سازنده

RMS Team
Email: msharif.ahrari@gmail.com