ultimatepos/Modules/IntegrationHub/Resources/views/dashboard/index.blade.php

137 lines
6.3 KiB
PHP

@extends('layouts.app')
@section('title', __('integrationhub::lang.dashboard'))
@section('css')
@include('integrationhub::layouts.styles')
@endsection
@section('content')
@include('integrationhub::layouts.nav')
<section class="content no-print mt-page">
<div class="mt-page-header">
<h1><i class="fas fa-plug" style="color:#8b5cf6;margin-left:8px;"></i> @lang('integrationhub::lang.dashboard')</h1>
</div>
<div class="mt-kpi-grid">
<div class="mt-kpi-card">
<i class="fas fa-broadcast-tower kpi-icon"></i>
<div class="kpi-label">@lang('integrationhub::lang.webhook_endpoints')</div>
<div class="kpi-value">{{ $stats['webhook_endpoints'] ?? 0 }}</div>
</div>
<div class="mt-kpi-card">
<i class="fas fa-check-circle kpi-icon"></i>
<div class="kpi-label">@lang('integrationhub::lang.active_webhooks')</div>
<div class="kpi-value">{{ $stats['active_webhooks'] ?? 0 }}</div>
</div>
<div class="mt-kpi-card">
<i class="fas fa-key kpi-icon"></i>
<div class="kpi-label">@lang('integrationhub::lang.odata_token_count')</div>
<div class="kpi-value">{{ $stats['odata_tokens'] ?? 0 }}</div>
</div>
<div class="mt-kpi-card">
<i class="fas fa-file-export kpi-icon"></i>
<div class="kpi-label">@lang('integrationhub::lang.recent_exports')</div>
<div class="kpi-value">{{ $stats['recent_exports'] ?? 0 }}</div>
</div>
<div class="mt-kpi-card">
<i class="fas fa-exclamation-triangle kpi-icon" style="color:#dc3545;"></i>
<div class="kpi-label">@lang('integrationhub::lang.failed_deliveries')</div>
<div class="kpi-value text-danger">{{ $stats['failed_deliveries'] ?? 0 }}</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="mt-card">
<div class="mt-card-header">
<h3 class="mt-card-title">@lang('integrationhub::lang.datasets_available')</h3>
</div>
<div class="mt-card-body">
<table class="table table-condensed">
<thead>
<tr>
<th>@lang('integrationhub::lang.dataset')</th>
<th>@lang('integrationhub::lang.api_usage')</th>
</tr>
</thead>
<tbody>
@foreach($odataDatasets as $dataset)
<tr>
<td>@lang('integrationhub::lang.'.$dataset)</td>
<td><code>/integrationhub/api/odata/{{ $dataset }}</code></td>
</tr>
@endforeach
</tbody>
</table>
<p class="text-muted small">@lang('integrationhub::lang.api_usage_hint')</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="mt-card">
<div class="mt-card-header">
<h3 class="mt-card-title">@lang('integrationhub::lang.recent_deliveries')</h3>
</div>
<div class="mt-card-body">
@forelse($recentDeliveries as $delivery)
<div class="clearfix" style="margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid #eef2f7;">
<strong>{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::eventLabel($delivery->event_name) }}</strong>
<span class="pull-left label label-{{ $delivery->status === 'delivered' ? 'success' : ($delivery->status === 'failed' ? 'danger' : 'default') }}">
{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::statusLabel($delivery->status) }}
</span>
<br>
<small class="text-muted">
{{ optional($delivery->endpoint)->name }}
{{ $delivery->response_code ?? '—' }}
@if($delivery->delivered_at)
· @format_datetime($delivery->delivered_at)
@endif
</small>
</div>
@empty
<p class="text-muted">@lang('integrationhub::lang.no_records')</p>
@endforelse
</div>
</div>
</div>
</div>
@if($recentExports->isNotEmpty())
<div class="mt-card">
<div class="mt-card-header">
<h3 class="mt-card-title">@lang('integrationhub::lang.exports')</h3>
@can('integrationhub.export')
<a href="{{ action([\Modules\IntegrationHub\Http\Controllers\ExportController::class, 'index']) }}" class="btn btn-xs btn-primary">
@lang('integrationhub::lang.new_export')
</a>
@endcan
</div>
<div class="mt-card-body">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>@lang('integrationhub::lang.dataset')</th>
<th>@lang('integrationhub::lang.format')</th>
<th>@lang('integrationhub::lang.status')</th>
<th>@lang('integrationhub::lang.created_at')</th>
</tr>
</thead>
<tbody>
@foreach($recentExports as $job)
<tr>
<td>@lang('integrationhub::lang.'.$job->dataset)</td>
<td>{{ strtoupper($job->format) }}</td>
<td><span class="label label-{{ $job->status === 'completed' ? 'success' : ($job->status === 'failed' ? 'danger' : 'warning') }}">{{ \Modules\IntegrationHub\Utils\IntegrationHubUtil::statusLabel($job->status) }}</span></td>
<td>@format_datetime($job->created_at)</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
</section>
@endsection