DONE: feedback module, use permission name for notification

This commit is contained in:
ISMAIL MASSERAN
2026-07-14 12:02:37 +08:00
parent 324b7facf1
commit 52ffd3393a
60 changed files with 3083 additions and 26 deletions
@@ -0,0 +1,54 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// Create ENUM types for PostgreSQL
DB::statement("CREATE TYPE feedback_type_enum AS ENUM ('bug', 'feature_request', 'general_feedback', 'ui_issue', 'performance_issue')");
DB::statement("CREATE TYPE feedback_priority_enum AS ENUM ('low', 'medium', 'high', 'critical')");
DB::statement("CREATE TYPE feedback_status_enum AS ENUM ('open', 'in_progress', 'resolved', 'closed', 'rejected')");
Schema::create('feedback', function (Blueprint $table) {
$table->uuid('id')->primary();
$table->foreignUuid('user_id')->nullable()->constrained('users')->nullOnDelete();
$table->string('title');
$table->text('description');
$table->string('page_url')->nullable(); // URL where the issue occurred
$table->json('browser_info')->nullable(); // Browser, OS, screen resolution etc.
$table->text('steps_to_reproduce')->nullable(); // Steps to reproduce the issue
$table->text('expected_behavior')->nullable(); // What should happen
$table->text('actual_behavior')->nullable(); // What actually happened
$table->text('additional_notes')->nullable(); // Any additional information
$table->foreignUuid('assigned_to')->nullable()->constrained('users')->nullOnDelete();
$table->text('admin_notes')->nullable(); // Internal notes for admins
$table->timestamp('resolved_at')->nullable();
$table->timestamps();
$table->softDeletes();
});
// Add ENUM columns
DB::statement("ALTER TABLE feedback ADD COLUMN type feedback_type_enum NOT NULL DEFAULT 'general_feedback'");
DB::statement("ALTER TABLE feedback ADD COLUMN priority feedback_priority_enum NOT NULL DEFAULT 'medium'");
DB::statement("ALTER TABLE feedback ADD COLUMN status feedback_status_enum NOT NULL DEFAULT 'open'");
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('feedback');
DB::statement("DROP TYPE IF EXISTS feedback_type_enum");
DB::statement("DROP TYPE IF EXISTS feedback_priority_enum");
DB::statement("DROP TYPE IF EXISTS feedback_status_enum");
}
};
@@ -0,0 +1,16 @@
<?php
namespace Modules\Feedback\Database\Seeders;
use Illuminate\Database\Seeder;
class FeedbackDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// $this->call([]);
}
}