@extends('layouts.app') @section('content')

Monitoring Dashboard

{{ $monitors->count() }}
Total Monitors
{{ $monitors->whereIn('monitoring_type', ['full_page', 'keyword', 'element', 'ssl', 'server'])->count() }}
Website Monitors
{{ $monitors->whereIn('monitoring_type', 'email_health')->count() }}
Domain Monitors
@php use Illuminate\Support\Facades\DB; // 1. Get website-type monitor IDs (exclude domains) $websiteMonitorIds = $monitors ->whereIn('monitoring_type', ['full_page', 'keyword', 'element', 'server']) ->pluck('id'); // 2. Get latest response time for each monitor $latestStatsSubquery = DB::table('website_stats') ->whereIn('monitor_id', $websiteMonitorIds) ->select('monitor_id', DB::raw('MAX(created_at) as latest_date')) ->groupBy('monitor_id'); // 3. Calculate average of latest responses $averageResponse = DB::table('website_stats as ws') ->joinSub($latestStatsSubquery, 'latest', function ($join) { $join->on('ws.monitor_id', '=', 'latest.monitor_id') ->on('ws.created_at', '=', 'latest.latest_date'); }) ->avg('ws.response_time'); echo $averageResponse ? number_format($averageResponse, 2) : 'N/A'; @endphp
Average Response Time (s)
@foreach ($monitors as $monitor) @php $isEmailHealth = $monitor->monitoring_type === 'email_health'; $isSSLMonitoring = $monitor->monitoring_type === 'ssl'; $isKeywordMonitoring = $monitor->monitoring_type === 'keyword'; $isElementMonitoring = $monitor->monitoring_type === 'element'; $isServerMonitoring = $monitor->monitoring_type === 'server'; $isFullPage = $monitor->monitoring_type === 'full_page'; $latestResponse = $monitor->websiteStats->last(); $statusClass = ''; if ($latestResponse) { $statusClass = $latestResponse->response_time < 1 ? 'status-good' : ($latestResponse->response_time < 3 ? 'status-warning' : 'status-bad'); } @endphp @endforeach @if(count($monitors) === 0) @endif
# Website URL/Domain Type Response Target Actions
@if ($isEmailHealth) @elseif ($isSSLMonitoring) @elseif ($isKeywordMonitoring) @elseif ($isElementMonitoring) @elseif ($isServerMonitoring) @else @endif
{{ $monitor->name }}
@if($isEmailHealth) {{ $monitor->domain_to_monitor }} @else {{ parse_url($monitor->url, PHP_URL_HOST) }} @endif {{ match ($monitor->monitoring_type) { 'email_health' => 'Email Health', 'ssl' => 'SSL', 'keyword' => 'Keyword', 'element' => 'Element', 'server' => 'Server', default => 'Full Page' } }} @if($isEmailHealth) N/A @elseif($latestResponse) {{ number_format($latestResponse->response_time, 2) }}s @else N/A @endif @if ($isEmailHealth)
SPF DKIM DMARC
@elseif ($isSSLMonitoring)
SSL Certification
@elseif ($isKeywordMonitoring)
{{ implode(', ', $monitor->keywords ?? []) }}
@elseif ($isElementMonitoring)
{{ $monitor->xpath }}
@elseif ($isServerMonitoring)
Server Uptime
@else
Full Page
@endif
@if ($monitor->monitoring_type === 'email_health') @endif @if ($isServerMonitoring) @endif @if ($isServerMonitoring || $isFullPage || $isKeywordMonitoring || $isElementMonitoring || $isSSLMonitoring) @endif
@csrf @method('DELETE')

No monitors found

Create your first monitor to start tracking

Add Monitor
@endsection