189 lines
13 KiB
PHP
189 lines
13 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>Scheda anagrafica - NetGescon</title>
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
</head>
|
|
<body class="min-h-screen bg-slate-100 text-slate-900">
|
|
<div class="max-w-6xl mx-auto p-4 md:p-8 space-y-4">
|
|
<div class="flex flex-wrap items-start justify-between gap-3">
|
|
<div>
|
|
<h1 class="text-xl md:text-2xl font-semibold">Scheda anagrafica condominiale</h1>
|
|
<p class="text-sm text-slate-600">Puoi aggiornare i tuoi recapiti, le email aggiuntive e i recapiti per servizio. Ogni modifica viene tracciata.</p>
|
|
</div>
|
|
<div class="flex flex-wrap gap-2">
|
|
<a href="{{ route('condomino.dashboard') }}" class="inline-flex items-center rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm">Dashboard</a>
|
|
<a href="{{ route('condomino.unita.index') }}" class="inline-flex items-center rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm">Le mie unità</a>
|
|
<a href="{{ route('condomino.anagrafe.modulo') }}" class="inline-flex items-center rounded-lg bg-slate-800 px-4 py-2 text-sm text-white">Scarica modulo PDF</a>
|
|
</div>
|
|
</div>
|
|
|
|
@if (session('success'))
|
|
<div class="rounded-lg border border-emerald-300 bg-emerald-50 p-3 text-sm text-emerald-700">{{ session('success') }}</div>
|
|
@endif
|
|
|
|
@if ($errors->any())
|
|
<div class="rounded-lg border border-red-300 bg-red-50 p-3 text-sm text-red-700">
|
|
<ul class="list-disc pl-5">
|
|
@foreach ($errors->all() as $error)
|
|
<li>{{ $error }}</li>
|
|
@endforeach
|
|
</ul>
|
|
</div>
|
|
@endif
|
|
|
|
@if (! $persona)
|
|
<div class="rounded-lg border border-amber-300 bg-amber-50 p-4 text-sm text-amber-800">
|
|
Non è stato possibile associare con certezza il tuo account a una scheda anagrafica digitale. Puoi comunque scaricare il modulo e usare la scheda unità per inviare richieste strutturate.
|
|
</div>
|
|
@endif
|
|
|
|
<form method="POST" action="{{ route('condomino.anagrafe.update') }}" class="space-y-4">
|
|
@csrf
|
|
|
|
<div class="grid grid-cols-1 gap-4 lg:grid-cols-2">
|
|
<div class="rounded-lg bg-white p-4 shadow space-y-4">
|
|
<h2 class="text-lg font-semibold">Dati anagrafici</h2>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Cognome</span>
|
|
<input name="cognome" type="text" value="{{ old('cognome', $persona?->cognome) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Nome</span>
|
|
<input name="nome" type="text" value="{{ old('nome', $persona?->nome) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Codice fiscale</span>
|
|
<input name="codice_fiscale" type="text" value="{{ old('codice_fiscale', $persona?->codice_fiscale) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Partita IVA</span>
|
|
<input name="partita_iva" type="text" value="{{ old('partita_iva', $persona?->partita_iva) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Data nascita</span>
|
|
<input name="data_nascita" type="date" value="{{ old('data_nascita', optional($persona?->data_nascita)->format('Y-m-d')) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm md:col-span-2">
|
|
<span class="block text-slate-600 mb-1">Residenza</span>
|
|
<input name="residenza_via" type="text" value="{{ old('residenza_via', $persona?->residenza_via) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-lg bg-white p-4 shadow space-y-4">
|
|
<h2 class="text-lg font-semibold">Recapiti principali</h2>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Telefono principale</span>
|
|
<input name="telefono_principale" type="text" value="{{ old('telefono_principale', $persona?->telefono_principale) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">WhatsApp</span>
|
|
<input name="whatsapp" type="text" value="{{ old('whatsapp', $persona?->whatsapp) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Email principale</span>
|
|
<input name="email_principale" type="email" value="{{ old('email_principale', $persona?->email_principale) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">PEC</span>
|
|
<input name="email_pec" type="email" value="{{ old('email_pec', $persona?->email_pec) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Canale preferito</span>
|
|
<select name="modalita_comunicazione_preferita" class="w-full rounded-md border-slate-300">
|
|
@foreach (['email', 'sms', 'whatsapp', 'telefono', 'posta'] as $channel)
|
|
<option value="{{ $channel }}" @selected(old('modalita_comunicazione_preferita', $persona?->modalita_comunicazione_preferita) === $channel)>{{ ucfirst($channel) }}</option>
|
|
@endforeach
|
|
</select>
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Lingua preferita</span>
|
|
<input name="lingua_preferita" type="text" value="{{ old('lingua_preferita', $persona?->lingua_preferita ?? 'it') }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm md:col-span-2 flex items-center gap-2">
|
|
<input name="consenso_privacy" type="hidden" value="0">
|
|
<input name="consenso_privacy" type="checkbox" value="1" class="rounded border-slate-300" @checked(old('consenso_privacy', $persona?->consenso_privacy))>
|
|
<span>Confermo il trattamento dei dati per comunicazioni e gestione condominiale.</span>
|
|
</label>
|
|
<label class="text-sm md:col-span-2">
|
|
<span class="block text-slate-600 mb-1">Note</span>
|
|
<textarea name="note" rows="3" class="w-full rounded-md border-slate-300">{{ old('note', $persona?->note) }}</textarea>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-lg bg-white p-4 shadow space-y-4">
|
|
<div class="flex items-center justify-between gap-3">
|
|
<h2 class="text-lg font-semibold">Email aggiuntive</h2>
|
|
<p class="text-xs text-slate-500">Puoi indicare più caselle per lavoro, personale, studio o altri recapiti.</p>
|
|
</div>
|
|
<div class="space-y-3">
|
|
@foreach ($emailRows as $index => $row)
|
|
<div class="grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_180px_120px] gap-3 rounded-lg border border-slate-200 p-3">
|
|
<input type="hidden" name="email_multiple[{{ $index }}][id]" value="{{ old('email_multiple.' . $index . '.id', $row['id']) }}">
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Email</span>
|
|
<input name="email_multiple[{{ $index }}][email]" type="email" value="{{ old('email_multiple.' . $index . '.email', $row['email']) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">Tipo</span>
|
|
<input name="email_multiple[{{ $index }}][tipo_email]" type="text" value="{{ old('email_multiple.' . $index . '.tipo_email', $row['tipo_email']) }}" class="w-full rounded-md border-slate-300">
|
|
</label>
|
|
<label class="text-sm flex items-end gap-2">
|
|
<input type="hidden" name="email_multiple[{{ $index }}][attiva]" value="0">
|
|
<input name="email_multiple[{{ $index }}][attiva]" type="checkbox" value="1" class="rounded border-slate-300" @checked(old('email_multiple.' . $index . '.attiva', $row['attiva']))>
|
|
<span class="pb-2">Attiva</span>
|
|
</label>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-lg bg-white p-4 shadow space-y-4">
|
|
<div class="flex items-center justify-between gap-3">
|
|
<h2 class="text-lg font-semibold">Recapiti per servizio e unità</h2>
|
|
<p class="text-xs text-slate-500">Se compili questi campi, NetGescon userà questi indirizzi come default per la specifica unità e il servizio indicato.</p>
|
|
</div>
|
|
|
|
@forelse ($unitaImmobiliari as $unita)
|
|
@php $matrix = $serviceContactMatrix[$unita->id] ?? []; @endphp
|
|
<div class="rounded-xl border border-slate-200 p-4 space-y-3">
|
|
<div>
|
|
<h3 class="font-semibold">{{ $unita->stabile->denominazione ?? 'Stabile' }} · {{ $unita->denominazione ?? ('Unità #' . $unita->id) }}</h3>
|
|
<p class="text-xs text-slate-500">{{ trim(($unita->scala ? 'Scala ' . $unita->scala : '') . ' ' . ($unita->interno ? 'Interno ' . $unita->interno : '')) ?: 'Unità senza dettaglio interno' }}</p>
|
|
</div>
|
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
|
@foreach ($matrix as $serviceType => $row)
|
|
<label class="text-sm">
|
|
<span class="block text-slate-600 mb-1">{{ $row['label'] }}</span>
|
|
<input name="service_contacts[{{ $unita->id }}][{{ $serviceType }}]" type="email" value="{{ old('service_contacts.' . $unita->id . '.' . $serviceType, $row['value']) }}" class="w-full rounded-md border-slate-300" placeholder="email@dominio.it">
|
|
@if (! empty($row['resolved']))
|
|
<span class="mt-1 block text-xs text-slate-500">
|
|
Attualmente risolto:
|
|
{{ collect($row['resolved'])->pluck('email')->implode(', ') }}
|
|
</span>
|
|
@endif
|
|
</label>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
@empty
|
|
<p class="text-sm text-slate-500">Nessuna unità collegata al profilo corrente.</p>
|
|
@endforelse
|
|
</div>
|
|
|
|
<div class="flex flex-wrap gap-3">
|
|
<button type="submit" class="inline-flex items-center rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white {{ $persona ? '' : 'opacity-50 cursor-not-allowed' }}" @disabled(! $persona)>Salva aggiornamenti</button>
|
|
<a href="{{ route('condomino.anagrafe.modulo') }}" class="inline-flex items-center rounded-lg border border-slate-300 bg-white px-4 py-2 text-sm">Scarica il modulo da firmare o stampare</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</body>
|
|
</html> |