++ Richieste dal modulo pubblico, territori cartacei, S-13 mensile per email
- /richiesta: modulo pubblico (nuovo territorio o riconsegna) con campo trappola, tempo minimo e limite orario; nome e note cifrati, avviso per email a chi ha richieste.gestisci (amministratore, assistente) - Home: riquadro Richieste con i proclamatori dal nome simile; porta su Assegna/Rientra già esistenti, che chiudono la richiesta; Scarta - Cartaceo sull'assegnazione (Assegna e Il mio gruppo), etichetta nell'elenco degli assegnati, pagina Cartacei, passa per l'XML - registro:invia-s13 agli amministratori l'ultima domenica del mese; richieste:pulizia dopo 90 giorni dalla gestione - Privacy, README e HANDOFF aggiornati; test in RichiesteTest Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
/**
|
||||
* Dal documento delle attività per la versione 2, decise dall'utente il
|
||||
* 21/10/2026:
|
||||
*
|
||||
* - richieste dal modulo pubblico (nuovo territorio o riconsegna), che
|
||||
* responsabile e assistenti confermano dalla Home: tabella `richieste` e
|
||||
* permesso `richieste.gestisci` (amministratore e assistente);
|
||||
* - territorio chiesto in cartaceo: segno sull'assegnazione
|
||||
* (`assegnazioni.cartaceo`).
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('richieste', function (Blueprint $table) {
|
||||
$table->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');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user