id(); // 'nuovo' (richiesta di un territorio) | 'riconsegna' $table->string('tipo', 20); // Nome e cognome come li ha scritti chi compila: cifrati, come i // proclamatori (cast `encrypted` nel modello). $table->text('nome'); $table->string('numero_territorio', 20)->nullable(); $table->text('note')->nullable(); // 'aperta' | 'evasa' | 'scartata' $table->string('stato', 20)->default('aperta')->index(); $table->foreignId('assegnazione_id')->nullable()->constrained('assegnazioni')->nullOnDelete(); $table->foreignId('gestita_da')->nullable()->constrained('users')->nullOnDelete(); $table->timestamp('gestita_at')->nullable(); $table->timestamps(); }); Schema::table('assegnazioni', function (Blueprint $table) { $table->boolean('cartaceo')->default(false)->after('link_canale'); }); app(PermissionRegistrar::class)->forgetCachedPermissions(); $permesso = Permission::firstOrCreate(['name' => 'richieste.gestisci', 'guard_name' => 'web']); foreach (['amministratore', 'assistente'] as $ruolo) { Role::where('name', $ruolo)->where('guard_name', 'web')->first()?->givePermissionTo($permesso); } app(PermissionRegistrar::class)->forgetCachedPermissions(); } public function down(): void { app(PermissionRegistrar::class)->forgetCachedPermissions(); Permission::where('name', 'richieste.gestisci')->delete(); app(PermissionRegistrar::class)->forgetCachedPermissions(); Schema::table('assegnazioni', function (Blueprint $table) { $table->dropColumn('cartaceo'); }); Schema::dropIfExists('richieste'); } };