332 lines
13 KiB
PHP
332 lines
13 KiB
PHP
@extends('modules.layouts.base')
|
|
|
|
@php
|
|
$moduleTitle = 'Dettagli Stampa Rate';
|
|
$moduleIcon = 'fas fa-print';
|
|
$moduleBreadcrumb = 'Moduli > Stampe Rate > Dettagli';
|
|
@endphp
|
|
|
|
@section('module-actions')
|
|
<div class="btn-group" role="group">
|
|
@if($stampa->status === 'generata')
|
|
<a href="{{ route('stampeRate.download', $stampa->id) }}"
|
|
class="btn btn-module-primary">
|
|
<i class="fas fa-download me-1"></i>
|
|
Scarica ZIP
|
|
</a>
|
|
@endif
|
|
|
|
<button type="button" class="btn btn-outline-primary" onclick="regenerateStampa()">
|
|
<i class="fas fa-redo me-1"></i>
|
|
Rigenera
|
|
</button>
|
|
|
|
<a href="{{ route('stampeRate.index') }}" class="btn btn-outline-secondary">
|
|
<i class="fas fa-arrow-left me-1"></i>
|
|
Torna alla Lista
|
|
</a>
|
|
</div>
|
|
@endsection
|
|
|
|
@section('module-content')
|
|
<<div class="row">
|
|
<!-- Informazioni Principali -->
|
|
<div class="col-lg-8">
|
|
<div class="module-card">
|
|
<div class="module-card-header">
|
|
<h6 class="module-card-title mb-0">
|
|
<i class="fas fa-print me-2"></i>
|
|
{{ $stampa->nome ?? 'Stampa Rate' }}
|
|
</h6>
|
|
</div>
|
|
<div class="module-card-body">
|
|
<!-- Status -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>Stato:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
@if($stampa->status === 'generata')
|
|
<span class="badge bg-success fs-6">
|
|
<i class="fas fa-check-circle me-1"></i>
|
|
Completata
|
|
</span>
|
|
@elseif($stampa->status === 'bozza')
|
|
<span class="badge bg-warning fs-6">
|
|
<i class="fas fa-clock me-1"></i>
|
|
In elaborazione
|
|
</span>
|
|
@elseif($stampa->status === 'archiviata')
|
|
<span class="badge bg-secondary fs-6">
|
|
<i class="fas fa-archive me-1"></i>
|
|
Archiviata
|
|
</span>
|
|
@else
|
|
<span class="badge bg-danger fs-6">
|
|
<i class="fas fa-exclamation-triangle me-1"></i>
|
|
{{ ucfirst($stampa->status) }}
|
|
</span>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Informazioni Stabile -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>Stabile:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
<div>
|
|
<i class="fas fa-building text-primary me-2"></i>
|
|
<strong>{{ $stampa->stabile_nome }}</strong>
|
|
</div>
|
|
<small class="text-muted">
|
|
<i class="fas fa-map-marker-alt me-1"></i>
|
|
{{ $stampa->stabile_indirizzo }}
|
|
</small>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Template Utilizzato -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>Template:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
<span class="badge bg-info">{{ $stampa->template_nome ?? 'Template Standard' }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistiche File -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>File Generati:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="text-center">
|
|
<h4 class="text-primary mb-0">{{ $stampa->file_count ?? 0 }}</h4>
|
|
<small class="text-muted">File Totali</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="text-center">
|
|
<h4 class="text-info mb-0">{{ number_format(($stampa->file_size_total ?? 0) / 1024, 1) }} KB</h4>
|
|
<small class="text-muted">Dimensione Totale</small>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="text-center">
|
|
<h4 class="text-success mb-0">{{ count($stampa->rate_selezionate) }}</h4>
|
|
<small class="text-muted">Rate Generate</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Data Creazione -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>Creata il:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
{{ \Carbon\Carbon::parse($stampa->created_at)->format('d/m/Y H:i') }}
|
|
<small class="text-muted">
|
|
({{ \Carbon\Carbon::parse($stampa->created_at)->diffForHumans() }})
|
|
</small>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Descrizione -->
|
|
@if($stampa->descrizione)
|
|
<div class="row mb-4">
|
|
<div class="col-md-3">
|
|
<strong>Note:</strong>
|
|
</div>
|
|
<div class="col-md-9">
|
|
<p class="mb-0">{{ $stampa->descrizione }}</p>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Lista File Generati -->
|
|
@if(!empty($stampa->file_generati))
|
|
<div class="module-card mt-4">
|
|
<div class="module-card-header">
|
|
<h6 class="module-card-title mb-0">
|
|
<i class="fas fa-file-pdf me-2"></i>
|
|
File Generati
|
|
</h6>
|
|
</div>
|
|
<div class="module-card-body">
|
|
<div class="list-group list-group-flush">
|
|
@foreach($stampa->file_generati as $file)
|
|
<div class="list-group-item d-flex justify-content-between align-items-center">
|
|
<div>
|
|
<i class="fas fa-file-pdf text-danger me-2"></i>
|
|
<strong>{{ basename($file['path'] ?? $file) }}</strong>
|
|
@if(isset($file['size']))
|
|
<small class="text-muted d-block">
|
|
Dimensione: {{ number_format($file['size'] / 1024, 1) }} KB
|
|
</small>
|
|
@endif
|
|
</div>
|
|
<a href="{{ route('stampeRate.download.single', [$stampa->id, $loop->index]) }}"
|
|
class="btn btn-sm btn-outline-primary">
|
|
<i class="fas fa-download"></i>
|
|
</a>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<!-- Sidebar Statistiche -->
|
|
<div class="col-lg-4">
|
|
<!-- Statistiche Invii -->
|
|
<div class="module-card">
|
|
<div class="module-card-header">
|
|
<h6 class="module-card-title mb-0">
|
|
<i class="fas fa-paper-plane me-2"></i>
|
|
Statistiche Invii
|
|
</h6>
|
|
</div>
|
|
<div class="module-card-body">
|
|
<div class="row text-center">
|
|
<div class="col-6">
|
|
<h4 class="text-success">{{ $statsInvii['inviati'] }}</h4>
|
|
<small class="text-muted">Inviati</small>
|
|
</div>
|
|
<div class="col-6">
|
|
<h4 class="text-danger">{{ $statsInvii['falliti'] }}</h4>
|
|
<small class="text-muted">Falliti</small>
|
|
</div>
|
|
</div>
|
|
<hr>
|
|
<div class="d-grid">
|
|
@if($stampa->status === 'generata')
|
|
<button type="button" class="btn btn-module-primary" onclick="sendEmails()">
|
|
<i class="fas fa-paper-plane me-1"></i>
|
|
Invia via Email
|
|
</button>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Cronologia Invii -->
|
|
@if($invii->count() > 0)
|
|
<div class="module-card mt-4">
|
|
<div class="module-card-header">
|
|
<h6 class="module-card-title mb-0">
|
|
<i class="fas fa-history me-2"></i>
|
|
Cronologia Invii
|
|
</h6>
|
|
</div>
|
|
<div class="module-card-body">
|
|
<div class="timeline">
|
|
@foreach($invii->take(5) as $invio)
|
|
<div class="timeline-item">
|
|
<div class="timeline-marker
|
|
{{ $invio->status === 'sent' ? 'bg-success' : ($invio->status === 'failed' ? 'bg-danger' : 'bg-warning') }}">
|
|
<i class="fas fa-{{ $invio->status === 'sent' ? 'check' : ($invio->status === 'failed' ? 'times' : 'clock') }}"></i>
|
|
</div>
|
|
<div class="timeline-content">
|
|
<h6 class="timeline-title">{{ $invio->destinatario_email }}</h6>
|
|
<p class="timeline-description">
|
|
{{ $invio->status === 'sent' ? 'Inviato con successo' : ($invio->status === 'failed' ? 'Invio fallito' : 'In coda') }}
|
|
</p>
|
|
<small class="text-muted">
|
|
{{ \Carbon\Carbon::parse($invio->created_at)->diffForHumans() }}
|
|
</small>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
@if($invii->count() > 5)
|
|
<div class="text-center mt-3">
|
|
<a href="{{ route('stampeRate.history.index') }}" class="btn btn-sm btn-outline-primary">
|
|
Vedi Tutto
|
|
</a>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@push('styles')
|
|
<style>
|
|
.timeline {
|
|
position: relative;
|
|
padding-left: 30px;
|
|
}
|
|
|
|
.timeline-item {
|
|
position: relative;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.timeline-marker {
|
|
position: absolute;
|
|
left: -30px;
|
|
top: 0;
|
|
width: 20px;
|
|
height: 20px;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: white;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.timeline-item:not(:last-child)::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: -21px;
|
|
top: 20px;
|
|
width: 2px;
|
|
height: calc(100% + 20px);
|
|
background-color: #dee2e6;
|
|
}
|
|
|
|
.timeline-title {
|
|
font-size: 14px;
|
|
font-weight: 600;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.timeline-description {
|
|
font-size: 13px;
|
|
margin-bottom: 5px;
|
|
}
|
|
</style>
|
|
@endpush
|
|
|
|
@push('scripts')
|
|
<script>
|
|
function regenerateStampa() {
|
|
if (confirm('Sei sicuro di voler rigenerare questa stampa? I file esistenti verranno sovrascritti.')) {
|
|
// TODO: Implementare rigenerazione
|
|
alert('Funzione rigenerazione in sviluppo');
|
|
}
|
|
}
|
|
|
|
function sendEmails() {
|
|
if (confirm('Vuoi inviare le stampe rate via email a tutti i proprietari?')) {
|
|
// TODO: Implementare invio email
|
|
alert('Funzione invio email in sviluppo');
|
|
}
|
|
}
|
|
</script>
|
|
@endpush
|