151 lines
7.8 KiB
PHP
151 lines
7.8 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('title', __('assetexchange::lang.dashboard'))
|
|
|
|
@section('content')
|
|
@include('assetexchange::layouts.nav')
|
|
|
|
<section class="content no-print mt-page">
|
|
<div class="mt-page-header">
|
|
<h1><i class="fas fa-tachometer-alt" style="color:#3b82f6;margin-left:8px;"></i> @lang('assetexchange::lang.dashboard')</h1>
|
|
</div>
|
|
|
|
<div class="mt-kpi-grid">
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-list kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_active_listings')</div>
|
|
<div class="kpi-value">{{ $stats['listings']['active'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-search kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_in_appraisal')</div>
|
|
<div class="kpi-value">{{ $stats['listings']['in_appraisal_pipeline'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-check-circle kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_appraised')</div>
|
|
<div class="kpi-value">{{ $stats['listings']['appraised'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-shopping-cart kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_sold')</div>
|
|
<div class="kpi-value">{{ $stats['listings']['sold'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-handshake kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_open_deals')</div>
|
|
<div class="kpi-value">{{ $stats['deals']['open'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-coins kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_pending_commissions')</div>
|
|
<div class="kpi-value">{{ $stats['commissions']['pending_count'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-money-bill-wave kpi-icon"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.kpi_pending_commission_amount')</div>
|
|
<div class="kpi-value">{{ $stats['commissions']['pending_amount_formatted'] ?? $aexUtil->formatMoney(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('assetexchange::lang.sla_breached')</div>
|
|
<div class="kpi-value text-danger">{{ $slaSnapshot['inquiry_breached'] ?? 0 }}</div>
|
|
</div>
|
|
<div class="mt-kpi-card">
|
|
<i class="fas fa-clock kpi-icon" style="color:#ffc107;"></i>
|
|
<div class="kpi-label">@lang('assetexchange::lang.sla_warning')</div>
|
|
<div class="kpi-value text-warning">{{ $slaSnapshot['inquiry_warning'] ?? 0 }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
@if(!empty($slaSnapshot['urgent_items']))
|
|
<div class="mt-card" style="margin-bottom:20px;">
|
|
<div class="mt-card-header">
|
|
<h3 class="mt-card-title"><i class="fas fa-flag text-danger"></i> @lang('assetexchange::lang.sla_urgent_panel')</h3>
|
|
<a href="{{ action([\Modules\AssetExchange\Http\Controllers\PriceInquiryController::class, 'index'], ['filter' => 'urgent']) }}" class="btn btn-xs btn-danger pull-left">@lang('assetexchange::lang.view_all_urgent')</a>
|
|
</div>
|
|
<div class="mt-card-body">
|
|
<table class="table table-condensed">
|
|
<thead><tr><th>@lang('assetexchange::lang.inquiry_code')</th><th>@lang('assetexchange::lang.title')</th><th>@lang('assetexchange::lang.sla_status')</th><th></th></tr></thead>
|
|
<tbody>
|
|
@foreach($slaSnapshot['urgent_items'] as $item)
|
|
<tr>
|
|
<td>{{ $item['code'] }}</td>
|
|
<td>{{ $item['title'] }} @if(!empty($item['listing']))<small class="text-muted">({{ $item['listing'] }})</small>@endif</td>
|
|
<td>
|
|
@if($item['sla_status'] === 'breached')
|
|
<span class="label label-danger">@lang('assetexchange::lang.sla_breached')</span>
|
|
@elseif($item['sla_status'] === 'overdue')
|
|
<span class="label label-danger">@lang('assetexchange::lang.sla_overdue_due')</span>
|
|
@else
|
|
<span class="label label-warning">@lang('assetexchange::lang.sla_warning')</span>
|
|
@endif
|
|
</td>
|
|
<td><a href="{{ $item['url'] }}" class="btn btn-xs btn-default">@lang('assetexchange::lang.view')</a></td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="mt-card">
|
|
<div class="mt-card-header"><h3 class="mt-card-title">@lang('assetexchange::lang.listings_by_status')</h3></div>
|
|
<div class="mt-card-body">
|
|
@forelse($stats['listings']['by_status'] ?? [] as $item)
|
|
<div class="clearfix" style="margin-bottom:8px;">
|
|
<span>{{ $item['label'] }}</span>
|
|
<span class="pull-left badge bg-blue">{{ $item['count'] }}</span>
|
|
</div>
|
|
@empty
|
|
<p class="text-muted">@lang('assetexchange::lang.no_records')</p>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="mt-card">
|
|
<div class="mt-card-header"><h3 class="mt-card-title">@lang('assetexchange::lang.deals_by_type')</h3></div>
|
|
<div class="mt-card-body">
|
|
@forelse($stats['deals']['by_type'] ?? [] as $item)
|
|
<div class="clearfix" style="margin-bottom:8px;">
|
|
<span>{{ $item['label'] }}</span>
|
|
<span class="pull-left badge bg-green">{{ $item['count'] }}</span>
|
|
</div>
|
|
@empty
|
|
<p class="text-muted">@lang('assetexchange::lang.no_records')</p>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="mt-card">
|
|
<div class="mt-card-header"><h3 class="mt-card-title">@lang('assetexchange::lang.quick_links')</h3></div>
|
|
<div class="mt-card-body">
|
|
<div class="mm-quick-links">
|
|
@can('aex.listings.create')
|
|
<a href="{{ action([\Modules\AssetExchange\Http\Controllers\ListingController::class, 'create']) }}">
|
|
<i class="fas fa-plus"></i> @lang('assetexchange::lang.new_listing')
|
|
</a>
|
|
@endcan
|
|
@can('aex.appraisals.create')
|
|
<a href="{{ action([\Modules\AssetExchange\Http\Controllers\AppraisalController::class, 'create']) }}">
|
|
<i class="fas fa-search-dollar"></i> @lang('assetexchange::lang.new_appraisal')
|
|
</a>
|
|
@endcan
|
|
@can('aex.pipeline.view')
|
|
<a href="{{ action([\Modules\AssetExchange\Http\Controllers\PipelineController::class, 'index']) }}">
|
|
<i class="fas fa-project-diagram"></i> @lang('assetexchange::lang.pipeline')
|
|
</a>
|
|
@endcan
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
@endsection
|