- /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>
51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Mail;
|
|
|
|
use App\Models\AnnoTeocratico;
|
|
use App\Models\User;
|
|
use Illuminate\Mail\Attachment;
|
|
use Illuminate\Mail\Mailable;
|
|
use Illuminate\Mail\Mailables\Content;
|
|
use Illuminate\Mail\Mailables\Envelope;
|
|
|
|
/**
|
|
* Il modulo S-13 in PDF per un amministratore (registro:invia-s13). Non va in
|
|
* coda (niente ShouldQueue): il PDF contiene i nomi dei proclamatori, che in
|
|
* coda starebbero in chiaro.
|
|
*/
|
|
class ModuloS13Mail extends Mailable
|
|
{
|
|
public function __construct(
|
|
public User $utente,
|
|
public AnnoTeocratico $anno,
|
|
private string $pdf,
|
|
) {}
|
|
|
|
public function nomeFile(): string
|
|
{
|
|
return "S-13-registro-assegnazioni-{$this->anno->label}.pdf";
|
|
}
|
|
|
|
public function envelope(): Envelope
|
|
{
|
|
return new Envelope(subject: "Modulo S-13 — anno di servizio {$this->anno->label}");
|
|
}
|
|
|
|
public function content(): Content
|
|
{
|
|
return new Content(
|
|
text: 'mail.modulo-s13',
|
|
with: ['data' => now()->format('d/m/Y')],
|
|
);
|
|
}
|
|
|
|
/** @return array<int, Attachment> */
|
|
public function attachments(): array
|
|
{
|
|
return [
|
|
Attachment::fromData(fn () => $this->pdf, $this->nomeFile())->withMime('application/pdf'),
|
|
];
|
|
}
|
|
}
|