++ invio del link dopo l'assegnazione; nuovo territorio dal designer

- Dopo l'assegnazione si apre una finestra con i canali (copia link
  sempre; WhatsApp ed email solo se il proclamatore ha numero /
  indirizzo, l'email solo con la posta configurata) e la domanda "Hai
  inviato il link?". Si va avanti solo dopo la risposta.
- L'email la manda l'app con notifyNow, mai in coda: l'indirizzo è
  cifrato nel database e non deve finire in chiaro nei job.
- Procedura interrotta o "non ancora": assegnazioni.link_da_inviare
  resta vero e "Link ancora da inviare" compare nell'elenco Assegna e
  nella scheda territorio, con "Invia link" per riprendere.
- Colonne link_da_inviare e link_canale (anche nell'XML); log con
  canale e proclamatore_id, senza dati personali.
- "Nuovo territorio" apre il designer delle piantine già in disegno, con
  la prima piantina pronta a creare il territorio.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-19 14:36:44 +02:00
parent f8911afe64
commit f8539b58bd
14 changed files with 619 additions and 120 deletions

View File

@@ -62,6 +62,29 @@ class PiantineEditorTest extends TestCase
$this->actingAs($this->admin())->get(route('piantine.editor'))->assertOk();
}
public function test_da_nuovo_territorio_la_prima_piantina_disegnata_crea_un_territorio(): void
{
Livewire::withQueryParams(['nuovo' => 1])
->actingAs($this->admin())
->test(PiantineEditor::class)
->assertSet('creaTerritorio', true)
->dispatch('geometria-modificata', geometry: self::GEOMETRIA, nuova: true)
->assertSet('territorioScelto', 'nuovo')
->assertSet('creaTerritorio', false)
// Solo la prima: la seconda piantina disegnata è una bozza qualunque.
->dispatch('geometria-modificata', geometry: self::ALTRA_GEOMETRIA, nuova: true)
->assertSet('territorioScelto', '');
}
public function test_senza_nuovo_l_editor_non_prepara_un_territorio(): void
{
Livewire::actingAs($this->admin())
->test(PiantineEditor::class)
->assertSet('creaTerritorio', false)
->dispatch('geometria-modificata', geometry: self::GEOMETRIA, nuova: true)
->assertSet('territorioScelto', '');
}
public function test_la_pagina_si_apre_su_una_piantina_esistente(): void
{
$mappa = TerritorioMappa::create(['nome' => 'Zona porto', 'geojson' => json_encode(self::GEOMETRIA)]);