<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Otomatik görev atama kuralları. Acente, TaskTriggerCatalog'daki her
     * tetikleyici için görevin oluşup oluşmayacağını ve hangi rol/kullanıcılara
     * düşeceğini buradan yapılandırır (Kullanıcı ve Yetki → Görev Atama Kuralları).
     */
    public function up(): void
    {
        Schema::create('task_assignment_rules', function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger('agency_id');

            $table->string('trigger_key', 50);

            // Varsayılan kapalı — acente bilinçli olarak açar
            $table->boolean('is_enabled')->default(false);

            // shared: tek görev, çoklu atama | individual: kullanıcı başına ayrı görev
            $table->string('assignment_mode', 20)->default('shared');

            $table->json('role_ids')->nullable();  // hedef rol id'leri
            $table->json('user_ids')->nullable();  // hedef kullanıcı id'leri (rollerle birleşim)

            $table->string('priority_override', 20)->nullable();
            $table->integer('due_offset_hours_override')->nullable();

            $table->timestamps();

            $table->foreign('agency_id')->references('id')->on('agencies')->onDelete('cascade');

            $table->unique(['agency_id', 'trigger_key']);
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('task_assignment_rules');
    }
};
