143 lines
6.1 KiB
PHP
143 lines
6.1 KiB
PHP
@extends('layouts.layout-2')
|
|
|
|
@section('content')
|
|
|
|
@if(session('success'))
|
|
<div class="alert alert-success alert-dismissible fade show">
|
|
{{ session('success') }}
|
|
<button type="button" class="close" data-dismiss="alert">×</button>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<div>
|
|
<h4 class="mb-0">
|
|
<i class="ion ion-md-alert text-danger"></i> Payment Monitor
|
|
</h4>
|
|
<small class="text-muted">Entwickler-Ansicht — {{ now()->format('d.m.Y H:i') }}</small>
|
|
</div>
|
|
<div>
|
|
<button type="button" class="btn btn-danger btn-sm" data-toggle="modal" data-target="#createIncidentModal">
|
|
<i class="ion ion-md-add"></i> Neuer Incident
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Stat-Karten --}}
|
|
@include('admin.payment-dashboard._partials.stats-cards')
|
|
|
|
{{-- Anbieter-Status --}}
|
|
<div class="row mb-4">
|
|
@foreach($providerStats as $key => $provider)
|
|
@php $uptime = $uptimeStats[$key] ?? null; @endphp
|
|
<div class="col-sm-6 col-xl-3">
|
|
<div class="card {{ $provider['open_incidents'] > 0 ? 'border-danger' : '' }}">
|
|
<div class="card-body py-2 px-3">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<strong>{{ $provider['label'] }}</strong>
|
|
<div>
|
|
@if($uptime && $uptime['last_check'])
|
|
@if($uptime['last_check']->is_up)
|
|
<span class="badge badge-success mr-1" title="Letzte Prüfung: {{ $uptime['last_check']->checked_at->diffForHumans() }}">
|
|
<i class="ion ion-md-checkmark"></i> Online
|
|
</span>
|
|
@else
|
|
<span class="badge badge-danger mr-1" title="{{ $uptime['last_check']->error_message }}">
|
|
<i class="ion ion-md-close"></i> Offline
|
|
</span>
|
|
@endif
|
|
@endif
|
|
@if($provider['open_incidents'] > 0)
|
|
<span class="badge badge-warning">{{ $provider['open_incidents'] }} Incident</span>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
<div class="text-muted small mt-1">{{ $provider['total_30d'] }} Incidents (30 Tage)</div>
|
|
@if($uptime && $uptime['checks_24h'] > 0)
|
|
<div class="text-muted" style="font-size:0.7rem">
|
|
Uptime 24h: {{ $uptime['uptime_24h'] }}%
|
|
@if($uptime['failures_24h'] > 0)
|
|
— <span class="text-danger">{{ $uptime['failures_24h'] }} Ausfälle</span>
|
|
@endif
|
|
</div>
|
|
@elseif($uptime)
|
|
<div class="text-muted" style="font-size:0.7rem">Noch keine Uptime-Daten</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
|
|
{{-- Tabs --}}
|
|
<ul class="nav nav-tabs" id="dashboardTabs">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" data-toggle="tab" href="#tab-open">
|
|
Offene Incidents
|
|
@if($openIncidents->count() > 0)
|
|
<span class="badge badge-danger ml-1">{{ $openIncidents->count() }}</span>
|
|
@endif
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#tab-all">Alle Incidents</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{{ route('admin.payment-dashboard.payments') }}">
|
|
<i class="ion ion-md-card"></i> Zahlungen & Transaktionen
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{{ route('admin.payment-dashboard.transactions') }}">
|
|
<i class="ion ion-md-swap"></i> Rohe Transaktionen
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{{ route('admin.payment-dashboard.funnel') }}">
|
|
<i class="ion ion-md-funnel"></i> Funnel-Tracking
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{{ route('admin.payment-dashboard.abandoned') }}">
|
|
<i class="ion ion-md-alert"></i> Abbruch-Analyse
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="{{ route('admin.payment-dashboard.logs') }}">
|
|
<i class="ion ion-md-list"></i> PAYONE Logs
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
{{-- Tab: Offene Incidents --}}
|
|
<div class="tab-pane fade show active pt-3" id="tab-open">
|
|
<div class="card">
|
|
<div class="card-body p-0">
|
|
@include('admin.payment-dashboard._partials.incident-table', [
|
|
'incidents' => $openIncidents,
|
|
'showActions' => true,
|
|
])
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Tab: Alle Incidents --}}
|
|
<div class="tab-pane fade pt-3" id="tab-all">
|
|
<div class="card">
|
|
<div class="card-body p-0">
|
|
@include('admin.payment-dashboard._partials.incident-table', [
|
|
'incidents' => $allIncidents,
|
|
'showActions' => true,
|
|
])
|
|
</div>
|
|
</div>
|
|
<div class="mt-3">
|
|
{{ $allIncidents->links() }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
@include('admin.payment-dashboard._partials.create-incident-modal')
|
|
|
|
@endsection
|