netgescon-day0/resources/views/filament/pages/condomini/tabs/posta-ufficiale.blade.php

118 lines
8.8 KiB
PHP

<div class="space-y-6">
<div class="rounded-xl border border-emerald-200 bg-emerald-50 p-4">
<div class="flex flex-wrap items-start justify-between gap-3">
<div>
<div class="text-sm font-semibold text-emerald-900">Posta ufficiale dello stabile</div>
<div class="mt-1 text-xs text-emerald-800">Qui agganciamo Gmail, PEC e account Google ufficiali del condominio per lavorare su dati reali, con documenti e comunicazioni sempre trasferibili in caso di cambio amministratore.</div>
</div>
<div class="flex flex-wrap gap-2">
<a href="{{ $this->getStableGoogleConnectUrl() }}" class="inline-flex items-center rounded-md bg-emerald-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-emerald-500">Collega account Google dello stabile</a>
<a href="{{ $this->getGoogleSettingsUrl() }}" class="inline-flex items-center rounded-md bg-white px-3 py-1.5 text-xs font-medium text-slate-700 ring-1 ring-inset ring-slate-300 hover:bg-slate-50">Impostazioni Google</a>
<a href="{{ $this->getStabilePostaUrl() }}" class="inline-flex items-center rounded-md bg-white px-3 py-1.5 text-xs font-medium text-slate-700 ring-1 ring-inset ring-slate-300 hover:bg-slate-50">Vista completa posta</a>
</div>
</div>
</div>
<div class="grid gap-4 lg:grid-cols-[1.15fr,0.85fr]">
<div class="rounded-xl border bg-white p-4 space-y-4">
<div class="grid gap-4 md:grid-cols-2">
<label class="block text-sm">
<span class="mb-1 block font-medium text-slate-700">Email/PEC ufficiale del condominio</span>
<input type="email" wire:model.defer="officialPecCondominio" class="w-full rounded-lg border-slate-300" placeholder="pec o email ufficiale dello stabile" />
</label>
<label class="block text-sm">
<span class="mb-1 block font-medium text-slate-700">PEC o email studio per questo stabile</span>
<input type="email" wire:model.defer="officialPecStudio" class="w-full rounded-lg border-slate-300" placeholder="canale studio dedicato a questo stabile" />
</label>
</div>
<div class="flex flex-wrap items-end gap-3">
<label class="block text-sm w-40">
<span class="mb-1 block font-medium text-slate-700">Max email per import</span>
<input type="number" min="1" max="50" wire:model.defer="gmailImportMaxMessages" class="w-full rounded-lg border-slate-300" />
</label>
<x-filament::button type="button" color="gray" wire:click="saveOfficialMailSettings">Salva impostazioni</x-filament::button>
<x-filament::button type="button" color="primary" wire:click="importOfficialGmail">Importa Gmail ora</x-filament::button>
<x-filament::button type="button" color="success" wire:click="addOfficialMailbox">Aggiungi casella</x-filament::button>
</div>
<div class="space-y-3">
@forelse($officialMailboxes as $index => $mailbox)
<div class="rounded-xl border p-4">
<div class="flex items-center justify-between gap-3">
<div class="text-sm font-semibold text-slate-900">Casella {{ $index + 1 }}</div>
<div class="flex items-center gap-2">
<x-filament::button type="button" size="sm" color="primary" wire:click="importOfficialGmail({{ $index }})">Importa</x-filament::button>
<x-filament::button type="button" size="sm" color="danger" wire:click="removeOfficialMailbox({{ $index }})">Rimuovi</x-filament::button>
</div>
</div>
<div class="mt-4 grid gap-3 md:grid-cols-2 xl:grid-cols-3">
<label class="flex items-center gap-2 text-sm text-slate-700">
<input type="checkbox" wire:model.defer="officialMailboxes.{{ $index }}.enabled" class="rounded border-slate-300" />
Attiva casella
</label>
<label class="block text-sm">
<span class="mb-1 block font-medium">Tipo</span>
<select wire:model.defer="officialMailboxes.{{ $index }}.tipo" class="w-full rounded-lg border-slate-300">
<option value="gmail">Gmail / Google Workspace</option>
<option value="imap">IMAP</option>
<option value="pec">PEC via IMAP</option>
</select>
</label>
<label class="block text-sm">
<span class="mb-1 block font-medium">Etichetta</span>
<input type="text" wire:model.defer="officialMailboxes.{{ $index }}.label" class="w-full rounded-lg border-slate-300" />
</label>
<label class="block text-sm md:col-span-2 xl:col-span-1">
<span class="mb-1 block font-medium">Email casella</span>
<input type="email" wire:model.defer="officialMailboxes.{{ $index }}.email" class="w-full rounded-lg border-slate-300" />
</label>
<label class="block text-sm md:col-span-2 xl:col-span-2">
<span class="mb-1 block font-medium">Account Google collegato</span>
<select wire:model.defer="officialMailboxes.{{ $index }}.google_account_key" class="w-full rounded-lg border-slate-300">
<option value="">Seleziona account collegato</option>
@foreach($stableGoogleAccountOptions as $key => $label)
<option value="{{ $key }}">{{ $label }}</option>
@endforeach
</select>
</label>
<label class="block text-sm md:col-span-2 xl:col-span-3">
<span class="mb-1 block font-medium">Query Gmail</span>
<input type="text" wire:model.defer="officialMailboxes.{{ $index }}.gmail_query" class="w-full rounded-lg border-slate-300" placeholder="es. in:inbox newer_than:30d" />
</label>
<label class="block text-sm md:col-span-2 xl:col-span-3">
<span class="mb-1 block font-medium">Mittenti autorizzati</span>
<input type="text" wire:model.defer="officialMailboxes.{{ $index }}.mittenti_autorizzati" class="w-full rounded-lg border-slate-300" placeholder="email separate da virgola" />
</label>
</div>
</div>
@empty
<div class="rounded-xl border border-dashed p-6 text-sm text-slate-500">Nessuna casella configurata. Aggiungi la prima casella ufficiale dello stabile.</div>
@endforelse
</div>
</div>
<div class="space-y-4">
<div class="rounded-xl border bg-white p-4">
<div class="text-sm font-semibold text-slate-900">Riepilogo attivazione</div>
<div class="mt-3 space-y-2 text-sm">
<div><span class="font-medium">Stabile:</span> {{ $stabile->denominazione }}</div>
<div><span class="font-medium">Codice:</span> {{ $stabile->codice_stabile }}</div>
<div><span class="font-medium">Casella proposta:</span> {{ collect($officialMailboxes)->firstWhere('enabled', true)['email'] ?? 'Nessuna' }}</div>
<div><span class="font-medium">PEC condominio:</span> {{ $officialPecCondominio !== '' ? $officialPecCondominio : '-' }}</div>
<div><span class="font-medium">Account Google:</span> {{ $this->officialGoogleAccount['email'] ?? 'Da collegare' }}</div>
</div>
</div>
<div class="rounded-xl border bg-white p-4">
<div class="text-sm font-semibold text-slate-900">Note operative</div>
<div class="mt-2 text-xs leading-5 text-slate-500">
La chiave account prevista per questo stabile è <strong>stabile-{{ (int) ($stabile->id ?? 0) }}-pec</strong>.
Dopo il collegamento Google, la casella Gmail può essere usata per import ticket, archiviazione allegati e protocollo comunicazioni.
</div>
</div>
</div>
</div>
</div>