mivita/dev/payment-dashboard/resources/views/dashboard/management.blade.php
2026-04-14 18:07:45 +02:00

120 lines
5.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@extends('layouts.dashboard')
@section('page-title', 'Zahlungssystem Übersicht')
@section('content')
{{-- ── Stat-Karten ── --}}
<div class="grid-4 mb-6">
<div class="stat-card {{ $stats['open_incidents'] > 0 ? 'danger' : 'ok' }}">
<div class="stat-label">Offene Störungen</div>
<div class="stat-value">{{ $stats['open_incidents'] }}</div>
<div class="stat-sub">Warten auf Lösung</div>
</div>
<div class="stat-card {{ $stats['in_progress'] > 0 ? 'warning' : 'ok' }}">
<div class="stat-label">In Bearbeitung</div>
<div class="stat-value">{{ $stats['in_progress'] }}</div>
<div class="stat-sub">Aktiv bearbeitet</div>
</div>
<div class="stat-card {{ $stats['total_affected_revenue'] > 0 ? 'danger' : 'ok' }}">
<div class="stat-label">Betroffener Umsatz</div>
<div class="stat-value">{{ number_format($stats['total_affected_revenue'], 0, ',', '.') }} </div>
<div class="stat-sub">Offene Incidents</div>
</div>
<div class="stat-card {{ $stats['payone_incidents_30d'] >= 3 ? 'danger' : ($stats['payone_incidents_30d'] >= 1 ? 'warning' : 'ok') }}">
<div class="stat-label">PAYONE Probleme</div>
<div class="stat-value">{{ $stats['payone_incidents_30d'] }}</div>
<div class="stat-sub">Letzte 30 Tage</div>
</div>
</div>
{{-- ── Anbieter-Status ── --}}
<div class="card mb-6">
<div class="card-title">Anbieter-Übersicht</div>
<div class="provider-grid">
@foreach($providerStats as $key => $provider)
<div class="provider-card {{ $provider['open_incidents'] > 0 ? 'has-issues' : 'ok' }}">
<div class="provider-name">{{ $provider['label'] }}</div>
<div class="provider-incidents">{{ $provider['open_incidents'] }}</div>
<div class="provider-sub">offene Störungen</div>
<div class="provider-sub" style="margin-top:6px;">{{ $provider['total_30d'] }}× in 30 Tagen</div>
@if($provider['last_incident'])
<div class="provider-sub" style="margin-top:4px; font-size:10px;">
Zuletzt: {{ $provider['last_incident']->detected_at->format('d.m.Y') }}
</div>
@endif
</div>
@endforeach
</div>
</div>
{{-- ── Offene Störungen ── --}}
@if($openIncidents->count() > 0)
<div class="card mb-6" style="border-color: var(--red);">
<div class="card-title" style="color: var(--red);"> Aktive Störungen</div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>Störung</th>
<th>Anbieter</th>
<th>Schwere</th>
<th>Status</th>
<th>Seit</th>
<th>Betroffene Bestellungen</th>
</tr>
</thead>
<tbody>
@foreach($openIncidents as $incident)
<tr>
<td><strong>{{ $incident->title }}</strong></td>
<td>{{ $incident->provider_label }}</td>
<td><span class="badge badge-{{ $incident->severity }}">{{ ucfirst($incident->severity) }}</span></td>
<td><span class="badge badge-{{ $incident->status }}">{{ $incident->status_label }}</span></td>
<td>{{ $incident->detected_at->format('d.m.Y H:i') }}<br><span class="text-muted">{{ $incident->duration }}</span></td>
<td>{{ $incident->affected_orders > 0 ? $incident->affected_orders . ' Bestellungen' : '' }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@else
<div class="card mb-6" style="border-color: var(--green); text-align:center; padding: 32px;">
<div style="font-size: 32px; margin-bottom: 8px;"></div>
<div style="font-weight: 700; color: var(--green); margin-bottom: 4px;">Keine aktiven Störungen</div>
<div class="text-muted">Alle Zahlungssysteme laufen normal.</div>
</div>
@endif
{{-- ── Letzte Incidents ── --}}
<div class="card">
<div class="card-title">Letzte Vorfälle</div>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>Titel</th>
<th>Anbieter</th>
<th>Datum</th>
<th>Status</th>
<th>Dauer</th>
</tr>
</thead>
<tbody>
@forelse($recentIncidents as $incident)
<tr>
<td>{{ $incident->title }}</td>
<td>{{ $incident->provider_label }}</td>
<td>{{ $incident->detected_at->format('d.m.Y') }}</td>
<td><span class="badge badge-{{ $incident->status }}">{{ $incident->status_label }}</span></td>
<td>{{ $incident->duration }}</td>
</tr>
@empty
<tr><td colspan="5" class="text-muted">Noch keine Vorfälle erfasst.</td></tr>
@endforelse
</tbody>
</table>
</div>
</div>
@endsection