335 lines
26 KiB
PHP
335 lines
26 KiB
PHP
<div class="space-y-4">
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<div class="flex flex-wrap items-start justify-between gap-3">
|
|
<div>
|
|
<div class="text-sm font-semibold">Modulo assicurazione stabile</div>
|
|
<div class="mt-1 text-xs text-gray-500">Storico polizze, clausole, PDF, firma immagine e collegamento dei sinistri ai ticket.</div>
|
|
</div>
|
|
<div class="flex flex-wrap gap-2">
|
|
<button type="button" wire:click="resetInsurancePolicyForm" class="inline-flex items-center rounded-md bg-slate-100 px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-200">Nuova polizza</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid gap-4 xl:grid-cols-5">
|
|
<div class="rounded-xl border bg-white p-4 xl:col-span-2">
|
|
<div class="text-sm font-semibold">Elenco polizze</div>
|
|
<div class="mt-3 space-y-3">
|
|
@forelse($this->insurancePolicies as $policy)
|
|
<div class="rounded-lg border p-3 text-sm {{ (int) ($this->selectedInsurancePolicyId ?? 0) === (int) $policy->id ? 'border-primary-500 bg-primary-50' : 'border-slate-200 bg-white' }}">
|
|
<div class="flex flex-wrap items-start justify-between gap-2">
|
|
<div>
|
|
<div class="font-medium">{{ $policy->display_name }}</div>
|
|
<div class="mt-1 text-xs text-gray-500">{{ $policy->policy_reference ?: 'Riferimento non indicato' }}</div>
|
|
<div class="mt-1 text-xs text-gray-500">Scadenza {{ optional($policy->expires_at)->format('d/m/Y') ?: '-' }} · Rinnovo {{ optional($policy->renewal_at)->format('d/m/Y') ?: '-' }}</div>
|
|
</div>
|
|
<div class="flex gap-2">
|
|
<button type="button" wire:click="selectInsurancePolicy({{ (int) $policy->id }})" class="inline-flex items-center rounded-md bg-slate-800 px-2 py-1 text-[11px] font-medium text-white hover:bg-slate-700">Apri</button>
|
|
<button type="button" wire:click="deleteInsurancePolicy({{ (int) $policy->id }})" class="inline-flex items-center rounded-md bg-rose-600 px-2 py-1 text-[11px] font-medium text-white hover:bg-rose-500">Elimina</button>
|
|
</div>
|
|
</div>
|
|
<div class="mt-2 flex flex-wrap gap-2 text-[11px] text-gray-600">
|
|
<span>Stato: {{ $policy->status ?: '-' }}</span>
|
|
<span>Premio annuo: {{ $policy->annual_amount !== null ? number_format((float) $policy->annual_amount, 2, ',', '.') . ' EUR' : '-' }}</span>
|
|
</div>
|
|
</div>
|
|
@empty
|
|
<div class="rounded-lg border border-dashed p-4 text-sm text-gray-500">Nessuna polizza registrata per questo stabile.</div>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-xl border bg-white p-4 xl:col-span-3">
|
|
<div class="text-sm font-semibold">Scheda polizza</div>
|
|
<div class="mt-4 grid gap-3 md:grid-cols-2">
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Broker / referente polizza</span>
|
|
<input type="text" wire:model.live.debounce.250ms="insuranceBrokerSearch" class="w-full rounded-lg border-gray-300" placeholder="Cerca broker, referente, email, telefono" />
|
|
<div class="mt-1 text-xs text-gray-500">Ricerca libera su anagrafica unica, con deduplica dei nominativi ripetuti.</div>
|
|
@if((int) ($insurancePolicyForm['broker_rubrica_id'] ?? 0) > 0)
|
|
<div class="mt-2 rounded-lg border border-emerald-200 bg-emerald-50 p-2 text-xs text-emerald-800">
|
|
Broker selezionato: <span class="font-semibold">{{ $insuranceBrokerSearch }}</span>
|
|
<button type="button" wire:click="resetInsuranceBrokerSelection" class="ml-2 inline-flex items-center rounded-md bg-white px-2 py-1 text-[11px] font-medium text-emerald-700 ring-1 ring-inset ring-emerald-300 hover:bg-emerald-100">Cambia</button>
|
|
</div>
|
|
@endif
|
|
@if(count($insuranceBrokerMatches) > 0)
|
|
<div class="mt-2 space-y-2 rounded-xl border border-slate-200 bg-slate-50 p-2">
|
|
@foreach($insuranceBrokerMatches as $match)
|
|
<button type="button" wire:click="selectInsuranceBroker({{ (int) $match['id'] }})" class="w-full rounded-lg border bg-white p-3 text-left hover:bg-slate-50">
|
|
<div class="text-sm font-medium">{{ $match['label'] }}</div>
|
|
<div class="mt-1 text-xs text-gray-600">
|
|
{{ $match['phone'] ?: 'Telefono non valorizzato' }}
|
|
@if($match['email'])
|
|
· {{ $match['email'] }}
|
|
@endif
|
|
@if($match['category'])
|
|
· {{ ucfirst($match['category']) }}
|
|
@endif
|
|
</div>
|
|
@if($match['note'])
|
|
<div class="mt-1 text-xs text-gray-500">{{ $match['note'] }}</div>
|
|
@endif
|
|
</button>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Compagnia assicurativa</span>
|
|
<input type="text" wire:model.live.debounce.250ms="insuranceCompanySearch" class="w-full rounded-lg border-gray-300" placeholder="Cerca compagnia, es. Generali" />
|
|
<div class="mt-1 text-xs text-gray-500">Funziona anche senza conoscere il singolo referente.</div>
|
|
@if((int) ($insurancePolicyForm['company_rubrica_id'] ?? 0) > 0)
|
|
<div class="mt-2 rounded-lg border border-emerald-200 bg-emerald-50 p-2 text-xs text-emerald-800">
|
|
Compagnia selezionata: <span class="font-semibold">{{ $insuranceCompanySearch }}</span>
|
|
<button type="button" wire:click="resetInsuranceCompanySelection" class="ml-2 inline-flex items-center rounded-md bg-white px-2 py-1 text-[11px] font-medium text-emerald-700 ring-1 ring-inset ring-emerald-300 hover:bg-emerald-100">Cambia</button>
|
|
</div>
|
|
@endif
|
|
@if(count($insuranceCompanyMatches) > 0)
|
|
<div class="mt-2 space-y-2 rounded-xl border border-slate-200 bg-slate-50 p-2">
|
|
@foreach($insuranceCompanyMatches as $match)
|
|
<button type="button" wire:click="selectInsuranceCompany({{ (int) $match['id'] }})" class="w-full rounded-lg border bg-white p-3 text-left hover:bg-slate-50">
|
|
<div class="text-sm font-medium">{{ $match['label'] }}</div>
|
|
<div class="mt-1 text-xs text-gray-600">
|
|
{{ $match['phone'] ?: 'Telefono non valorizzato' }}
|
|
@if($match['email'])
|
|
· {{ $match['email'] }}
|
|
@endif
|
|
@if($match['category'])
|
|
· {{ ucfirst($match['category']) }}
|
|
@endif
|
|
</div>
|
|
@if($match['note'])
|
|
<div class="mt-1 text-xs text-gray-500">{{ $match['note'] }}</div>
|
|
@endif
|
|
</button>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Nome polizza</span>
|
|
<input type="text" wire:model.defer="insurancePolicyForm.policy_name" class="w-full rounded-lg border-gray-300" placeholder="Fabbricato globale" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Numero polizza</span>
|
|
<input type="text" wire:model.defer="insurancePolicyForm.policy_number" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Riferimento / riferimento di pagamento</span>
|
|
<input type="text" wire:model.defer="insurancePolicyForm.policy_reference" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Stato</span>
|
|
<select wire:model.defer="insurancePolicyForm.status" class="w-full rounded-lg border-gray-300">
|
|
<option value="attiva">Attiva</option>
|
|
<option value="in_scadenza">In scadenza</option>
|
|
<option value="scaduta">Scaduta</option>
|
|
<option value="sostituita">Sostituita</option>
|
|
</select>
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Premio annuo</span>
|
|
<input type="number" step="0.01" wire:model.defer="insurancePolicyForm.annual_amount" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Decorrenza</span>
|
|
<input type="date" wire:model.defer="insurancePolicyForm.started_at" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Scadenza</span>
|
|
<input type="date" wire:model.defer="insurancePolicyForm.expires_at" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Rinnovo</span>
|
|
<input type="date" wire:model.defer="insurancePolicyForm.renewal_at" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Come viene diviso il pagamento</span>
|
|
<input type="text" wire:model.defer="insurancePolicyForm.payment_split" class="w-full rounded-lg border-gray-300" placeholder="Annuale, semestrale, rateizzato" />
|
|
</label>
|
|
<div class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Note pagamenti / quietanze</span>
|
|
<div class="grid gap-3">
|
|
@foreach($insurancePaymentRows as $index => $row)
|
|
<div class="rounded-xl border border-slate-200 bg-slate-50 p-3">
|
|
<div class="mb-2 text-xs font-semibold uppercase tracking-wide text-slate-500">Riga contabile {{ $index + 1 }}</div>
|
|
<div class="grid gap-3 md:grid-cols-4">
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block text-xs font-medium">Descrizione</span>
|
|
<input type="text" wire:model.defer="insurancePaymentRows.{{ $index }}.label" class="w-full rounded-lg border-gray-300" placeholder="Premio, quietanza, appendice, conguaglio" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block text-xs font-medium">Scadenza</span>
|
|
<input type="date" wire:model.defer="insurancePaymentRows.{{ $index }}.due_date" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block text-xs font-medium">Pagata il</span>
|
|
<input type="date" wire:model.defer="insurancePaymentRows.{{ $index }}.paid_at" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block text-xs font-medium">Importo</span>
|
|
<input type="number" step="0.01" wire:model.defer="insurancePaymentRows.{{ $index }}.amount" class="w-full rounded-lg border-gray-300" />
|
|
</label>
|
|
<label class="block text-sm md:col-span-3">
|
|
<span class="mb-1 block text-xs font-medium">Note riga</span>
|
|
<input type="text" wire:model.defer="insurancePaymentRows.{{ $index }}.notes" class="w-full rounded-lg border-gray-300" placeholder="Quietanza, CRO, riferimento contabile, note operative" />
|
|
</label>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Garanzie principali</span>
|
|
<textarea wire:model.defer="insurancePolicyForm.coverage_summary" rows="4" class="w-full rounded-lg border-gray-300" placeholder="Riassunto garanzie, massimali, franchigie"></textarea>
|
|
</label>
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Clausole e condizioni particolari</span>
|
|
<textarea wire:model.defer="insurancePolicyForm.special_conditions" rows="6" class="w-full rounded-lg border-gray-300" placeholder="Puoi incollare qui solo le clausole essenziali"></textarea>
|
|
</label>
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Template richiesta apertura sinistro</span>
|
|
<textarea wire:model.defer="insurancePolicyForm.claim_form_template" rows="5" class="w-full rounded-lg border-gray-300" placeholder="Base per il modulo di apertura sinistro con intestazione amministratore e riferimenti polizza"></textarea>
|
|
</label>
|
|
<label class="block text-sm md:col-span-2">
|
|
<span class="mb-1 block font-medium">Note operative</span>
|
|
<textarea wire:model.defer="insurancePolicyForm.notes" rows="4" class="w-full rounded-lg border-gray-300" placeholder="Perito, procedura, raccolta documenti, eventuale link protetto"></textarea>
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">PDF polizza</span>
|
|
<input type="file" wire:model="insurancePolicyDocumentUpload" accept="application/pdf,image/*" class="w-full rounded-lg border-gray-300 text-sm" />
|
|
</label>
|
|
<label class="block text-sm">
|
|
<span class="mb-1 block font-medium">Firma immagine</span>
|
|
<input type="file" wire:model="insuranceSignatureUpload" accept="image/*" class="w-full rounded-lg border-gray-300 text-sm" />
|
|
</label>
|
|
</div>
|
|
|
|
@if(($selectedPolicy = $this->insurancePolicies->firstWhere('id', (int) ($this->selectedInsurancePolicyId ?? 0))) instanceof \App\Models\InsurancePolicy)
|
|
<div class="mt-4 grid gap-3 md:grid-cols-2">
|
|
<div class="rounded-lg border bg-slate-50 p-3 text-xs text-slate-700">
|
|
<div class="font-medium">Documento polizza</div>
|
|
@if($this->getInsuranceDocumentUrl($selectedPolicy))
|
|
<div class="mt-2 flex flex-wrap gap-2">
|
|
<button type="button" wire:click="openInsuranceAttachmentPreview({{ (int) $selectedPolicy->id }}, 'document')" class="inline-flex rounded-md bg-primary-600 px-3 py-1.5 text-[11px] font-medium text-white hover:bg-primary-500">Apri in modal</button>
|
|
<a href="{{ $this->getInsuranceDocumentUrl($selectedPolicy) }}" target="_blank" class="inline-flex rounded-md bg-slate-100 px-3 py-1.5 text-[11px] font-medium text-slate-700 hover:bg-slate-200">Apri file</a>
|
|
</div>
|
|
@else
|
|
<div class="mt-2">Nessun documento caricato.</div>
|
|
@endif
|
|
</div>
|
|
<div class="rounded-lg border bg-slate-50 p-3 text-xs text-slate-700">
|
|
<div class="font-medium">Firma immagine</div>
|
|
@if($this->getInsuranceSignatureUrl($selectedPolicy))
|
|
<div class="mt-2 flex items-center gap-3">
|
|
<img src="{{ $this->getInsuranceSignatureUrl($selectedPolicy) }}" alt="Firma" class="max-h-24 rounded border bg-white p-1" />
|
|
<button type="button" wire:click="openInsuranceAttachmentPreview({{ (int) $selectedPolicy->id }}, 'signature')" class="inline-flex rounded-md bg-slate-100 px-3 py-1.5 text-[11px] font-medium text-slate-700 hover:bg-slate-200">Vedi firma</button>
|
|
</div>
|
|
@else
|
|
<div class="mt-2">Nessuna firma immagine caricata.</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="mt-4 flex flex-wrap gap-2">
|
|
<button type="button" wire:click="saveInsurancePolicy" class="inline-flex items-center rounded-md bg-primary-600 px-3 py-1.5 text-xs font-medium text-white hover:bg-primary-500">Salva polizza</button>
|
|
<button type="button" wire:click="resetInsurancePolicyForm" class="inline-flex items-center rounded-md bg-slate-100 px-3 py-1.5 text-xs font-medium text-slate-700 hover:bg-slate-200">Pulisci scheda</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="rounded-xl border bg-white p-4">
|
|
<div class="text-sm font-semibold">Sinistri collegati ai ticket</div>
|
|
<div class="mt-1 text-xs text-gray-500">Separati dalla sola scheda ticket: qui rimangono tracciati per polizza e per stabile.</div>
|
|
<div class="mt-3 overflow-x-auto">
|
|
<table class="min-w-full divide-y divide-gray-200 text-sm">
|
|
<thead class="bg-gray-50">
|
|
<tr>
|
|
<th class="px-3 py-2 text-left font-medium text-gray-600">Apertura</th>
|
|
<th class="px-3 py-2 text-left font-medium text-gray-600">Polizza</th>
|
|
<th class="px-3 py-2 text-left font-medium text-gray-600">Sinistro</th>
|
|
<th class="px-3 py-2 text-left font-medium text-gray-600">Ticket</th>
|
|
<th class="px-3 py-2 text-left font-medium text-gray-600">Note</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="divide-y divide-gray-100 bg-white">
|
|
@forelse($this->insuranceClaimsRows as $claim)
|
|
<tr>
|
|
<td class="px-3 py-2 align-top">{{ optional($claim->opened_at)->format('d/m/Y H:i') ?: '-' }}</td>
|
|
<td class="px-3 py-2 align-top">{{ $claim->insurancePolicy?->display_name ?: ($claim->policy_reference ?: '-') }}</td>
|
|
<td class="px-3 py-2 align-top">
|
|
{{ $claim->claim_number ?: '-' }}
|
|
<div class="text-xs text-gray-500">{{ $claim->status ?: 'aperta' }}</div>
|
|
@if(data_get($claim->metadata, 'taken_in_charge_at'))
|
|
<div class="text-[11px] text-gray-500">Preso in carico {{ \Carbon\Carbon::parse(data_get($claim->metadata, 'taken_in_charge_at'))->format('d/m/Y H:i') }}</div>
|
|
@endif
|
|
@if(data_get($claim->metadata, 'email_sent_at'))
|
|
<div class="text-[11px] text-gray-500">Email {{ \Carbon\Carbon::parse(data_get($claim->metadata, 'email_sent_at'))->format('d/m/Y H:i') }}</div>
|
|
@endif
|
|
</td>
|
|
<td class="px-3 py-2 align-top">
|
|
@if($claim->ticket)
|
|
<a href="{{ $this->getInsuranceTicketUrl($claim->ticket) }}" class="text-primary-600 hover:underline">Ticket #{{ (int) $claim->ticket->id }}</a>
|
|
<div class="text-xs text-gray-500">{{ $claim->ticket->titolo ?: '-' }}</div>
|
|
@else
|
|
-
|
|
@endif
|
|
</td>
|
|
<td class="px-3 py-2 align-top whitespace-pre-wrap text-xs text-gray-700">{{ $claim->notes ?: '-' }}</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="5" class="px-3 py-6 text-center text-sm text-gray-500">Nessun sinistro registrato per questo stabile.</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
@if($insuranceAttachmentPreview)
|
|
<div class="fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-4" x-data="{ zoom: 1, pdfPage: 1, iframeKey: 0, refreshPdf() { this.iframeKey++; }, zoomIn() { this.zoom = Math.min(this.zoom + 0.2, 4); }, zoomOut() { this.zoom = Math.max(this.zoom - 0.2, 0.5); }, resetZoom() { this.zoom = 1; }, nextPage() { this.pdfPage = this.pdfPage + 1; this.refreshPdf(); }, prevPage() { this.pdfPage = Math.max(this.pdfPage - 1, 1); this.refreshPdf(); } }">
|
|
<div class="h-[92vh] w-full max-w-[96vw] rounded-xl bg-white shadow-2xl">
|
|
<div class="flex items-center justify-between border-b px-4 py-3">
|
|
<div>
|
|
<div class="text-sm font-semibold">{{ $insuranceAttachmentPreview['name'] ?? 'Allegato assicurazione' }}</div>
|
|
@if(!empty($insuranceAttachmentPreview['description']))
|
|
<div class="text-xs text-gray-500">{{ $insuranceAttachmentPreview['description'] }}</div>
|
|
@endif
|
|
</div>
|
|
<div class="flex items-center gap-2">
|
|
@if($insuranceAttachmentPreview['is_image'] ?? false)
|
|
<button type="button" x-on:click="zoomOut()" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">-</button>
|
|
<button type="button" x-on:click="resetZoom()" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">100%</button>
|
|
<button type="button" x-on:click="zoomIn()" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">+</button>
|
|
@elseif($insuranceAttachmentPreview['is_pdf'] ?? false)
|
|
<button type="button" x-on:click="prevPage()" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">Pagina precedente</button>
|
|
<span class="text-xs text-slate-500">Pagina <span x-text="pdfPage"></span></span>
|
|
<button type="button" x-on:click="nextPage()" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">Pagina successiva</button>
|
|
@endif
|
|
<a href="{{ $insuranceAttachmentPreview['url'] }}" target="_blank" class="rounded-md bg-slate-100 px-2 py-1 text-xs hover:bg-slate-200">Apri file</a>
|
|
<button type="button" wire:click="closeInsuranceAttachmentPreview" class="rounded-md bg-gray-100 px-2 py-1 text-xs hover:bg-gray-200">Chiudi</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="h-[calc(92vh-64px)] overflow-auto p-4">
|
|
@if($insuranceAttachmentPreview['is_image'] ?? false)
|
|
<div class="h-full overflow-auto rounded-lg bg-slate-50 p-4">
|
|
<div class="flex min-h-full min-w-full items-start justify-center">
|
|
<img src="{{ $insuranceAttachmentPreview['url'] }}" alt="Anteprima allegato assicurazione" class="max-w-none rounded border bg-white shadow" x-bind:style="`width: ${zoom * 100}%; height: auto;`" />
|
|
</div>
|
|
</div>
|
|
@elseif($insuranceAttachmentPreview['is_pdf'] ?? false)
|
|
<iframe x-bind:key="iframeKey" x-bind:src="@js($insuranceAttachmentPreview['url']) + '#toolbar=1&navpanes=0&scrollbar=1&view=FitH&zoom=page-width&page=' + pdfPage" class="h-full w-full rounded border"></iframe>
|
|
@else
|
|
<div class="rounded-md border bg-gray-50 p-4 text-sm text-gray-700">
|
|
Anteprima non disponibile. Apri il file direttamente:
|
|
<a href="{{ $insuranceAttachmentPreview['url'] }}" class="ml-1 text-primary-600 hover:underline">Apri file</a>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div> |