@if($invoice = $service->invoices()->where('status', 'pending')->first())

{{ __('services.outstanding_invoice') }} {{ __('services.view_and_pay') }}.

@endif

@php $hasCustomIcon = optional($service->product->server)->extension === 'Proxmox' && isset($proxmoxServer) && $proxmoxServer && $proxmoxServer->user_set_icon; $iconColor = $hasCustomIcon ? $proxmoxServer->user_set_icon_color : null; @endphp
@if($hasCustomIcon) @php $iconPrefix = $proxmoxServer->user_set_icon_prefix ?? 'ri'; $iconName = $proxmoxServer->user_set_icon; if ($iconPrefix === 'vaadin') { $componentName = 'vaadin-' . str_replace('_', '-', $iconName); } else { $componentName = $iconPrefix . '-' . $iconName; } @endphp @else @endif
{{ __('services.services') }}

@if ($service->status == 'active')
{{ __('services.statuses.' . $service->status) }}
@elseif($service->status == 'suspended')
{{ __('services.statuses.' . $service->status) }}
@elseif($service->status == 'cancelled')
{{ __('services.statuses.' . $service->status) }}
@elseif($service->status == 'pending')
{{ __('services.statuses.' . $service->status) }}
@endif

{{ __('services.product_details') }}

{{ __('services.name') }} {{ $service->product->name }}
@if(isset($proxmoxServer) && $proxmoxServer)
Hostname {{ $proxmoxServer->hostname }}
@endif
{{ __('services.price') }} {{ $service->formattedPrice }}
@if($service->plan->type == 'recurring')
{{ __('services.billing_cycle') }} {{ __('services.every_period', [ 'period' => $service->plan->billing_period > 1 ? $service->plan->billing_period : '', 'unit' => trans_choice(__('services.billing_cycles.' . $service->plan->billing_unit), $service->plan->billing_period) ]) }}
@endif @if($service->expires_at)
Due At {{ $service->expires_at->format('d M Y') }}
@endif
{{ __('services.status') }} {{ __('services.statuses.' . $service->status) }}
@if($proxmoxServer && $vmStatus)

Server Specifications

@if(isset($vmStatus['status']))
Power Status @if($vmStatus['status'] === 'running') Running @elseif($vmStatus['status'] === 'stopped') Stopped @else {{ $vmStatus['status'] }} @endif
@endif @if(isset($vmStatus['cpus']))
CPU Cores {{ $vmStatus['cpus'] }} {{ $vmStatus['cpus'] == 1 ? 'Core' : 'Cores' }}
@endif @if(isset($vmStatus['maxmem']))
Memory {{ round($vmStatus['maxmem'] / (1024 * 1024 * 1024), 2) }} GB
@endif @if(isset($vmStatus['total_disk_bytes']))
Storage {{ Illuminate\Support\Number::fileSize(bytes: $vmStatus['total_disk_bytes']) }}
@elseif(isset($vmStatus['maxdisk']))
Storage {{ Illuminate\Support\Number::fileSize(bytes: $vmStatus['maxdisk']) }}
@endif @php $bandwidth = $service->product->settings()->where('key', 'bandwidth')->first()?->value; @endphp @if($bandwidth)
Bandwidth @if($bandwidth == 0 || $bandwidth == -1) Unlimited @elseif($bandwidth >= 1000) {{ round($bandwidth / 1000, 1) }} TB @else {{ $bandwidth }} GB @endif
@endif @if($proxmoxServer->os)
Operating System {{ $proxmoxServer->os->name }}
@endif
@endif @if($proxmoxServer && $proxmoxServer->ipAddresses->count() > 0)

IP Addresses

@foreach($proxmoxServer->ipAddresses as $ipAddress) @php // Determine if IP is private (NAT) or public $ip = $ipAddress->ip; $isPrivate = false; // Check for IPv4 private ranges (RFC 1918) if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { $isPrivate = ( str_starts_with($ip, '10.') || str_starts_with($ip, '192.168.') || preg_match('/^172\.(1[6-9]|2[0-9]|3[0-1])\./', $ip) || str_starts_with($ip, '100.64.') || // CGNAT str_starts_with($ip, '169.254.') // Link-local ); $ipType = 'IPv4'; } else { // IPv6 private ranges $isPrivate = ( str_starts_with(strtolower($ip), 'fc') || str_starts_with(strtolower($ip), 'fd') || str_starts_with(strtolower($ip), 'fe80') ); $ipType = 'IPv6'; } $networkType = $isPrivate ? 'NAT' : 'Public'; @endphp
@if($ipType === 'IPv4') @else @endif
{{ $ip }} @if($ipAddress->gateway) Gateway: {{ $ipAddress->gateway }} @endif
{{ $networkType }} {{ $ipType }}
@endforeach
@endif @if($service->cancellable || $service->upgradable || count($buttons) > 0)

{{ __('services.actions') }}

@if($service->upgradable) @endif @if($service->upgrade()->where('status', 'pending')->exists()) @endif @if($service->cancellable) @endif @if(($service->upgradable || $service->cancellable) && count($buttons) > 0)
@endif @foreach ($buttons as $button) @if (isset($button['function'])) @else @endif @endforeach
@endif
@if($showCancel)
@endif @if (count($views) > 0)
@if (count($views) > 1)
@foreach ($views as $view) @endforeach
@endif
{!! $extensionView !!}
@endif