netgescon-day0/resources/views/gescon-import/dashboard.blade.php

414 lines
19 KiB
PHP
Executable File

@extends('layouts.app')
@section('title', 'Dashboard GESCON Import')
@section('content')
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="page-title-box">
<h4 class="page-title">Dashboard GESCON Import</h4>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="{{ route('dashboard') }}">NetGescon</a></li>
<li class="breadcrumb-item active">GESCON Import</li>
</ol>
</div>
</div>
</div>
</div>
<!-- Statistiche principali -->
<div class="row">
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-calendar-multiple widget-icon bg-success-lighten text-success"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Anni Gestione</h5>
<h3 class="mt-3 mb-3">{{ $stats['anni_gestione'] }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.anni-gestione') }}" class="text-success">
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-home-group widget-icon bg-info-lighten text-info"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Stabili</h5>
<h3 class="mt-3 mb-3">{{ $stats['stabili'] }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.stabili') }}" class="text-info">
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-account-group widget-icon bg-warning-lighten text-warning"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Condomini</h5>
<h3 class="mt-3 mb-3">{{ number_format($stats['condomini']) }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.condomini') }}" class="text-warning">
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-domain widget-icon bg-primary-lighten text-primary"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Fornitori</h5>
<h3 class="mt-3 mb-3">{{ $stats['fornitori'] }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.fornitori') }}" class="text-primary">
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
</a>
</p>
</div>
</div>
</div>
</div>
<!-- Seconda riga di statistiche -->
<div class="row">
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-receipt widget-icon bg-danger-lighten text-danger"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Rate Emesse</h5>
<h3 class="mt-3 mb-3">{{ number_format($stats['rate_emesse']) }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.rate-emesse') }}" class="text-danger">
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-cash-multiple widget-icon bg-success-lighten text-success"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Incassi</h5>
<h3 class="mt-3 mb-3">{{ number_format($stats['incassi']) }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.incassi') }}" class="text-success">
<i class="mdi mdi-arrow-right-circle me-1"></i>Gestisci
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-file-document widget-icon bg-info-lighten text-info"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Fatture</h5>
<h3 class="mt-3 mb-3">{{ number_format($stats['fatture']) }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.fatture') }}" class="text-info">
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
</a>
</p>
</div>
</div>
</div>
<div class="col-xl-3 col-md-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-end">
<i class="mdi mdi-account-multiple widget-icon bg-warning-lighten text-warning"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0">Assemblee</h5>
<h3 class="mt-3 mb-3">{{ $stats['assemblee'] }}</h3>
<p class="mb-0 text-muted">
<a href="{{ route('gescon.assemblee') }}" class="text-warning">
<i class="mdi mdi-arrow-right-circle me-1"></i>Visualizza
</a>
</p>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Ultimi stabili importati -->
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-end">
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-dots-vertical"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a href="{{ route('gescon.stabili') }}" class="dropdown-item">Visualizza tutti</a>
</div>
</div>
<h4 class="header-title mb-3">Ultimi Stabili Importati</h4>
<div class="table-responsive">
<table class="table table-sm table-centered">
<thead class="table-light">
<tr>
<th>Codice</th>
<th>Denominazione</th>
<th>Comune</th>
<th>Condomini</th>
</tr>
</thead>
<tbody>
@forelse($ultimiStabili as $stabile)
<tr>
<td>
<a href="{{ route('gescon.stabile-dettaglio', $stabile->id) }}" class="text-body fw-semibold">
{{ $stabile->codice_stabile }}
</a>
</td>
<td>{{ $stabile->denominazione }}</td>
<td>{{ $stabile->comune->comune ?? $stabile->comune }}</td>
<td>
<span class="badge bg-light text-dark">{{ $stabile->num_condomini }}</span>
</td>
</tr>
@empty
<tr>
<td colspan="4" class="text-center text-muted py-3">Nessun stabile importato</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Rate scadute -->
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-end">
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-dots-vertical"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a href="{{ route('gescon.rate-emesse', ['scadute' => 1]) }}" class="dropdown-item">Visualizza tutte</a>
</div>
</div>
<h4 class="header-title mb-3">Rate Scadute</h4>
<div class="table-responsive">
<table class="table table-sm table-centered">
<thead class="table-light">
<tr>
<th>Rata </th>
<th>Condomino</th>
<th>Importo</th>
<th>Scadenza</th>
</tr>
</thead>
<tbody>
@forelse($rateScadute as $rata)
<tr>
<td>{{ $rata->numero_rata }}</td>
<td>
<small class="text-muted">{{ $rata->stabile->denominazione }}</small><br>
{{ $rata->condomino->nome_completo }}
</td>
<td>
<span class="text-danger fw-semibold"> {{ number_format($rata->importo_residuo, 2) }}</span>
</td>
<td>
<span class="badge bg-danger">{{ $rata->data_scadenza->format('d/m/Y') }}</span>
<small class="text-muted d-block">{{ $rata->giorni_ritardo }} gg</small>
</td>
</tr>
@empty
<tr>
<td colspan="4" class="text-center text-muted py-3">Nessuna rata scaduta</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<!-- Ultimi condomini -->
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-end">
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-dots-vertical"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a href="{{ route('gescon.condomini') }}" class="dropdown-item">Visualizza tutti</a>
</div>
</div>
<h4 class="header-title mb-3">Ultimi Condomini Importati</h4>
<div class="table-responsive">
<table class="table table-sm table-centered">
<thead class="table-light">
<tr>
<th>Nome</th>
<th>Stabile</th>
<th>Unità</th>
<th>Millesimi</th>
</tr>
</thead>
<tbody>
@forelse($ultimiCondomini as $condomino)
<tr>
<td>
<strong>{{ $condomino->nome_completo }}</strong><br>
<small class="text-muted">{{ $condomino->codice_condomino }}</small>
</td>
<td>{{ $condomino->stabile->denominazione }}</td>
<td>{{ $condomino->indirizzo_completo }}</td>
<td>
<span class="badge bg-light text-dark">{{ number_format($condomino->totale_millesimi, 3) }}</span>
</td>
</tr>
@empty
<tr>
<td colspan="4" class="text-center text-muted py-3">Nessun condomino importato</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<!-- Incassi da riconciliare -->
<div class="col-xl-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-end">
<a href="#" class="dropdown-toggle arrow-none card-drop" data-bs-toggle="dropdown" aria-expanded="false">
<i class="mdi mdi-dots-vertical"></i>
</a>
<div class="dropdown-menu dropdown-menu-end">
<a href="{{ route('gescon.incassi', ['riconciliato' => 0]) }}" class="dropdown-item">Visualizza tutti</a>
</div>
</div>
<h4 class="header-title mb-3">Incassi da Riconciliare</h4>
<div class="table-responsive">
<table class="table table-sm table-centered">
<thead class="table-light">
<tr>
<th>Data</th>
<th>Condomino</th>
<th>Importo</th>
<th>Modalità</th>
</tr>
</thead>
<tbody>
@forelse($incassiDaRiconciliare as $incasso)
<tr>
<td>{{ $incasso->data_incasso->format('d/m/Y') }}</td>
<td>
<small class="text-muted">{{ $incasso->stabile->denominazione }}</small><br>
{{ $incasso->condomino->nome_completo }}
</td>
<td>
<span class="text-success fw-semibold"> {{ number_format($incasso->importo, 2) }}</span>
</td>
<td>
<span class="badge bg-info">{{ $incasso->modalita_pagamento_label }}</span>
</td>
</tr>
@empty
<tr>
<td colspan="4" class="text-center text-muted py-3">Tutti gli incassi sono riconciliati</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Azioni rapide -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-body">
<h4 class="header-title mb-3">Azioni Rapide</h4>
<div class="row">
<div class="col-md-3">
<a href="{{ route('gescon.reports') }}" class="btn btn-outline-primary w-100 mb-2">
<i class="mdi mdi-chart-line me-1"></i>Report Completi
</a>
</div>
<div class="col-md-3">
<a href="{{ route('gescon.rate-emesse', ['scadute' => 1]) }}" class="btn btn-outline-danger w-100 mb-2">
<i class="mdi mdi-alert-circle me-1"></i>Rate Scadute
</a>
</div>
<div class="col-md-3">
<a href="{{ route('gescon.incassi', ['riconciliato' => 0]) }}" class="btn btn-outline-warning w-100 mb-2">
<i class="mdi mdi-bank me-1"></i>Riconciliazione
</a>
</div>
<div class="col-md-3">
<a href="{{ route('gescon.fatture', ['scadute' => 1]) }}" class="btn btn-outline-info w-100 mb-2">
<i class="mdi mdi-file-document-outline me-1"></i>Fatture Scadute
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script>
$(document).ready(function() {
// Auto-refresh della dashboard ogni 5 minuti
setInterval(function() {
location.reload();
}, 300000);
});
</script>
@endsection