netgescon-day0/app/Modules/StampeRate/Views/show.blade.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