chiudi($pubblicazione); $mappa = TerritorioMappa::with('territorio.zona')->find($mappaId); if (! $mappa) { $this->avvisaErrore('La piantina non esiste più.'); return; } $this->mappaId = $mappa->id; $this->etichetta = $mappa->etichetta(); try { $this->token = $pubblicazione->avvia($mappa); } catch (\RuntimeException $e) { $this->fase = PubblicazionePiantina::ERRORE; $this->messaggio = $e->getMessage(); return; } $this->aggiorna($pubblicazione); } /** Chiamata a intervalli finché l'anteprima è in preparazione. */ public function aggiorna(PubblicazionePiantina $pubblicazione): void { if (! $this->token) { return; } $stato = $pubblicazione->stato($this->token); if (! $stato) { $this->fase = PubblicazionePiantina::ERRORE; $this->messaggio = 'L\'anteprima è scaduta: generala di nuovo.'; return; } $this->fase = $stato['stato']; $this->messaggio = $stato['messaggio'] ?? ''; } public function conferma(PubblicazionePiantina $pubblicazione): void { if (! $this->token) { return; } try { $mappa = $pubblicazione->conferma($this->token); } catch (\RuntimeException $e) { $this->fase = PubblicazionePiantina::ERRORE; $this->messaggio = $e->getMessage(); return; } $this->reset(['mappaId', 'token', 'fase', 'messaggio', 'etichetta']); $this->avvisa("{$mappa->etichetta()} pubblicata: il PDF del territorio è stato sostituito, il precedente è nello storico."); $this->dispatch('piantina-pubblicata', mappaId: $mappa->id); } /** Riprova dopo un errore, con lo stato attuale della piantina. */ public function riprova(PubblicazionePiantina $pubblicazione): void { if ($this->mappaId) { $this->apri($this->mappaId, $pubblicazione); } } public function chiudi(PubblicazionePiantina $pubblicazione): void { if ($this->token) { $pubblicazione->annulla($this->token); } $this->reset(['mappaId', 'token', 'fase', 'messaggio', 'etichetta']); } public function render() { return view('livewire.piantine.pubblicazione'); } }