2021-11-07 00:47:16 +00:00
@ extends ( 'layouts.main' )
@ section ( 'content' )
<!-- CONTENT HEADER -->
< section class = " content-header " >
< div class = " container-fluid " >
< div class = " row mb-2 " >
< div class = " col-sm-6 " >
2021-12-13 07:42:53 +00:00
< h1 > {{ __ ( 'Admin Overview' )}} </ h1 >
2021-11-07 00:47:16 +00:00
</ div >
2023-01-13 17:57:35 +00:00
2021-11-07 00:47:16 +00:00
< div class = " col-sm-6 " >
< ol class = " breadcrumb float-sm-right " >
2021-12-13 07:42:53 +00:00
< li class = " breadcrumb-item " >< a href = " { { route('home')}} " > {{ __ ( 'Dashboard' )}} </ a ></ li >
2021-11-07 00:47:16 +00:00
< li class = " breadcrumb-item " >< a class = " text-muted "
2021-12-13 07:42:53 +00:00
href = " { { route('admin.overview.index')}} " > {{ __ ( 'Admin Overview' )}} </ a ></ li >
2021-11-07 00:47:16 +00:00
</ ol >
</ div >
</ div >
</ div >
2023-01-13 17:57:35 +00:00
@ if ( Storage :: get ( 'latestVersion' ) && config ( " app.version " ) < Storage :: get ( 'latestVersion' ))
< div class = " alert alert-danger " role = " alert " >
< b >< i class = " fas fa-shield-alt " ></ i > {{ __ ( " Version Outdated: " )}} </ b ></ br >
{{ __ ( " You are running on " )}} v {{ config ( " app.version " )}} - {{ config ( " BRANCHNAME " )}} .
{{ __ ( " The latest Version is " )}} v {{ Storage :: get ( 'latestVersion' )}} </ br >
2023-04-29 22:31:32 +00:00
< a href = " https://CtrlPanel.gg/docs/Installation/updating " > {{ __ ( " Consider updating now " )}} </ a >
2023-01-13 17:57:35 +00:00
</ div >
@ endif
2021-11-07 00:47:16 +00:00
</ section >
<!-- END CONTENT HEADER -->
<!-- MAIN CONTENT -->
< section class = " content " >
< div class = " container-fluid " >
< div class = " row mb-3 " >
< div class = " col-md-3 " >
2021-11-07 11:07:30 +00:00
< a href = " https://discord.gg/4Y6HjD2uyU " class = " btn btn-dark btn-block px-3 " >< i
class = " fab fa-discord mr-2 " ></ i > {{ __ ( 'Support server' )}} </ a >
2021-11-07 00:47:16 +00:00
</ div >
< div class = " col-md-3 " >
2023-04-29 22:31:32 +00:00
< a href = " https://CtrlPanel.gg/docs/intro " class = " btn btn-dark btn-block px-3 " >< i
2021-11-07 11:07:30 +00:00
class = " fas fa-link mr-2 " ></ i > {{ __ ( 'Documentation' )}} </ a >
2021-11-07 00:47:16 +00:00
</ div >
< div class = " col-md-3 " >
2021-11-07 11:07:30 +00:00
< a href = " https://github.com/ControlPanel-gg/dashboard " class = " btn btn-dark btn-block px-3 " >< i
class = " fab fa-github mr-2 " ></ i > {{ __ ( 'Github' )}} </ a >
2021-11-07 00:47:16 +00:00
</ div >
< div class = " col-md-3 " >
2023-04-29 22:31:32 +00:00
< a href = " https://CtrlPanel.gg/docs/Contributing/donating " class = " btn btn-dark btn-block px-3 " >< i
2023-04-29 22:38:47 +00:00
class = " fas fa-money-bill mr-2 " ></ i > {{ __ ( 'Support CtrlPanel' )}} </ a >
2021-11-07 00:47:16 +00:00
</ div >
</ div >
< div class = " row " >
< div class = " col-12 col-sm-6 col-md-3 " >
< div class = " info-box " >
< span class = " info-box-icon bg-info elevation-1 " >< i class = " fas fa-server " ></ i ></ span >
< div class = " info-box-content " >
< span class = " info-box-text " > {{ __ ( 'Servers' )}} </ span >
2023-01-16 22:15:35 +00:00
< span class = " info-box-number " > {{ $counters [ 'servers' ] -> active }} / {{ $counters [ 'servers' ] -> total }} </ span >
2021-11-07 00:47:16 +00:00
</ div >
<!-- /. info - box - content -->
</ div >
<!-- /. info - box -->
</ div >
< div class = " col-12 col-sm-6 col-md-3 " >
< div class = " info-box " >
< span class = " info-box-icon bg-primary elevation-1 " >< i class = " fas fa-users " ></ i ></ span >
< div class = " info-box-content " >
< span class = " info-box-text " > {{ __ ( 'Users' )}} </ span >
2022-08-19 17:18:44 +00:00
< span class = " info-box-number " > {{ $counters [ 'users' ]}} </ span >
2021-11-07 00:47:16 +00:00
</ div >
<!-- /. info - box - content -->
</ div >
<!-- /. info - box -->
</ div >
< div class = " col-12 col-sm-6 col-md-3 " >
< div class = " info-box " >
2021-11-07 11:07:30 +00:00
< span class = " info-box-icon bg-warning elevation-1 " >< i
class = " fas fa-coins text-white " ></ i ></ span >
2021-11-07 00:47:16 +00:00
< div class = " info-box-content " >
2023-02-06 20:34:58 +00:00
< span class = " info-box-text " > {{ __ ( 'Total' )}} {{ $credits_display_name }} </ span >
2022-08-19 17:18:44 +00:00
< span class = " info-box-number " > {{ $counters [ 'credits' ]}} </ span >
2021-11-07 00:47:16 +00:00
</ div >
<!-- /. info - box - content -->
</ div >
<!-- /. info - box -->
</ div >
< div class = " col-12 col-sm-6 col-md-3 " >
< div class = " info-box " >
< span class = " info-box-icon bg-success elevation-1 " >< i class = " fas fa-money-bill " ></ i ></ span >
< div class = " info-box-content " >
< span class = " info-box-text " > {{ __ ( 'Payments' )}} </ span >
2022-08-20 15:07:54 +00:00
< span class = " info-box-number " > {{ $counters [ 'payments' ] -> total }} </ span >
2021-11-07 00:47:16 +00:00
</ div >
<!-- /. info - box - content -->
</ div >
<!-- /. info - box -->
</ div >
</ div >
< div class = " row " >
< div class = " col-md-6 " >
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
< span >< i class = " fas fa-kiwi-bird mr-2 " ></ i > {{ __ ( 'Pterodactyl' )}} </ span >
</ div >
2021-11-07 11:07:30 +00:00
< a href = " { { route('admin.overview.sync')}} " class = " btn btn-primary btn-sm " >< i
class = " fas fa-sync mr-2 " ></ i > {{ __ ( 'Sync' )}} </ a >
2021-11-07 00:47:16 +00:00
</ div >
</ div >
< div class = " card-body py-1 " >
2022-10-26 17:13:56 +00:00
@ if ( $deletedNodesPresent )
< div class = " alert alert-danger m-2 " >
< h5 >< i class = " icon fas fa-exclamation-circle " ></ i > {{ __ ( 'Warning!' ) }} </ h5 >
< p class = " mb-2 " >
{{ __ ( 'Some nodes got deleted on pterodactyl only. Please click the sync button above.' ) }}
</ p >
</ div >
@ endif
2021-11-07 00:47:16 +00:00
< table class = " table " >
2021-11-07 11:07:30 +00:00
< thead >
< tr >
< th > {{ __ ( 'Resources' )}} </ th >
< th > {{ __ ( 'Count' )}} </ th >
</ tr >
</ thead >
2021-11-07 00:47:16 +00:00
< tbody >
< tr >
< td > {{ __ ( 'Locations' )}} </ td >
2022-08-19 17:18:44 +00:00
< td > {{ $counters [ 'locations' ]}} </ td >
2021-11-07 00:47:16 +00:00
</ tr >
< tr >
< td > {{ __ ( 'Nodes' )}} </ td >
2022-08-19 17:18:44 +00:00
< td > {{ $nodes -> count ()}} </ td >
2021-11-07 00:47:16 +00:00
</ tr >
< tr >
< td > {{ __ ( 'Nests' )}} </ td >
2022-08-19 17:18:44 +00:00
< td > {{ $counters [ 'nests' ]}} </ td >
2021-11-07 00:47:16 +00:00
</ tr >
< tr >
< td > {{ __ ( 'Eggs' )}} </ td >
2022-08-19 17:18:44 +00:00
< td > {{ $counters [ 'eggs' ]}} </ td >
2021-11-07 00:47:16 +00:00
</ tr >
</ tbody >
</ table >
</ div >
< div class = " card-footer " >
2021-11-07 11:07:30 +00:00
< span >< i class = " fas fa-sync mr-2 " ></ i > {{ __ ( 'Last updated :date' , [ 'date' => $syncLastUpdate ])}} </ span >
2021-11-07 00:47:16 +00:00
</ div >
</ div >
2022-08-20 19:19:27 +00:00
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
< span >< i class = " fas fa-ticket-alt mr-2 " ></ i > {{ __ ( 'Latest tickets' )}} </ span >
</ div >
</ div >
</ div >
< div class = " card-body py-1 " >
@ if ( ! $tickets -> count ()) < span style = " font-size: 16px; font-weight:700 " > {{ __ ( 'There are no tickets' )}} .</ span >
@ else
< table class = " table " >
< thead >
< tr >
< th > {{ __ ( 'Title' )}} </ th >
< th > {{ __ ( 'User' )}} </ th >
< th > {{ __ ( 'Status' )}} </ th >
< th > {{ __ ( 'Last updated' )}} </ th >
</ tr >
</ thead >
< tbody >
2023-01-13 17:57:35 +00:00
2022-08-20 19:19:27 +00:00
@ foreach ( $tickets as $ticket_id => $ticket )
< tr >
< td >< a class = " text-info " href = " { { route('moderator.ticket.show', ['ticket_id' => $ticket_id ])}} " > #{{$ticket_id}} - {{$ticket->title}}</td>
< td >< a href = " { { route('admin.users.show', $ticket->user_id )}} " > {{ $ticket -> user }} </ a ></ td >
< td >< span class = " badge { { $ticket -> statusBadgeColor } } " > {{ $ticket -> status }} </ span ></ td >
< td > {{ $ticket -> last_updated }} </ td >
</ tr >
@ endforeach
2023-01-13 17:57:35 +00:00
2022-08-20 19:19:27 +00:00
</ tbody >
</ table >
@ endif
</ div >
</ div >
2022-08-18 13:53:33 +00:00
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
2023-04-29 22:31:32 +00:00
< span >< i class = " fas fa-server mr-2 " ></ i > {{ __ ( 'CtrlPanel.gg' )}} </ span >
2022-08-18 13:53:33 +00:00
</ div >
2022-08-19 17:37:37 +00:00
</ div >
< div class = " card-body py-1 " >
2022-08-18 13:53:33 +00:00
2022-08-19 17:37:37 +00:00
</ div >
< div class = " card-footer " >
< span >< i class = " fas fa-info mr-2 " ></ i > {{ __ ( " Version " )}} {{ config ( " app.version " )}} - {{ config ( " BRANCHNAME " )}} </ span >
</ div >
2022-08-18 13:53:33 +00:00
</ div >
2022-08-19 17:37:37 +00:00
</ div >
2021-11-07 00:47:16 +00:00
</ div >
2022-08-19 17:18:44 +00:00
< div class = " col-md-6 " >
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
2022-08-20 15:07:54 +00:00
< span >< i class = " fas fa-server mr-2 " ></ i > {{ __ ( 'Individual nodes' )}} </ span >
2022-08-19 17:18:44 +00:00
</ div >
</ div >
</ div >
< div class = " card-body py-1 " >
@ if ( $perPageLimit )
< div class = " alert alert-danger m-2 " >
< h5 >< i class = " icon fas fa-exclamation-circle " ></ i > {{ __ ( 'Error!' ) }} </ h5 >
2022-10-21 19:12:07 +00:00
< p class = " mb-2 " >
2022-08-19 17:18:44 +00:00
{{ __ ( 'You reached the Pterodactyl perPage limit. Please make sure to set it higher than your server count.' ) }} < br >
2022-10-21 19:12:07 +00:00
{{ __ ( 'You can do that in settings.' ) }} < br >< br >
2023-04-29 22:38:47 +00:00
{{ __ ( 'Note' ) }} : {{ __ ( 'If this error persists even after changing the limit, it might mean a server was deleted on Pterodactyl, but not on CtrlPanel. Try clicking the button below.' ) }}
2022-08-19 17:18:44 +00:00
</ p >
2022-10-21 19:12:07 +00:00
< a href = " { { route('admin.servers.sync')}} " class = " btn btn-primary btn-md " >< i
class = " fas fa-sync mr-2 " ></ i > {{ __ ( 'Sync servers' )}} </ a >
2022-08-19 17:18:44 +00:00
</ div >
@ endif
< table class = " table " >
< thead >
< tr >
< th > {{ __ ( 'ID' )}} </ th >
< th > {{ __ ( 'Node' )}} </ th >
< th > {{ __ ( 'Server count' )}} </ th >
< th > {{ __ ( 'Resource usage' )}} </ th >
2023-02-06 20:34:58 +00:00
< th > {{ $credits_display_name . ' ' . __ ( 'Usage' )}} </ th >
2022-08-19 17:18:44 +00:00
</ tr >
</ thead >
< tbody >
@ foreach ( $nodes as $nodeID => $node )
< tr >
< td > {{ $nodeID }} </ td >
< td > {{ $node -> name }} </ td >
< td > {{ $node -> activeServers }} / {{ $node -> totalServers }} </ td >
< td > {{ $node -> usagePercent }} %</ td >
< td > {{ $node -> activeEarnings }} / {{ $node -> totalEarnings }} </ td >
</ tr >
@ endforeach
</ tbody >
< tfoot >
< tr >
< td colspan = " 2 " >< span style = " float: right; font-weight: 700 " > {{ __ ( 'Total' )}} ({{ __ ( 'active' )}} / {{ __ ( 'total' )}}) :</ span ></ td >
< td > {{ $counters [ 'servers' ] -> active }} / {{ $counters [ 'servers' ] -> total }} </ td >
< td > {{ $counters [ 'totalUsagePercent' ]}} %</ td >
< td > {{ $counters [ 'earnings' ] -> active }} / {{ $counters [ 'earnings' ] -> total }} </ td >
</ tr >
</ tfoot >
</ table >
2022-10-14 20:59:02 +00:00
< hr style = " width: 100%; height:2px; border-width:0; background-color:#6c757d; margin-top: 0px; " >
2022-08-19 17:18:44 +00:00
</ div >
</ div >
2022-08-20 15:07:54 +00:00
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
< span >< i class = " fas fa-file-invoice-dollar mr-2 " ></ i > {{ __ ( 'Latest payments' )}} </ span >
</ div >
</ div >
</ div >
< div class = " card-body py-1 " >
< div class = " row " >
2022-10-14 21:09:16 +00:00
@ if ( $counters [ 'payments' ][ 'lastMonth' ] -> count ())
< div class = " col-md-6 " style = " border-right:1px solid #6c757d " >
< span style = " margin:auto; display:table; font-size: 18px; font-weight:700 " > {{ __ ( 'Last month' )}} :
< i data - toggle = " popover " data - trigger = " hover " data - html = " true "
data - content = " { { __('Payments in this time window') }}:<br> { { $counters [ 'payments' ][ 'lastMonth' ] -> timeStart } } - { { $counters [ 'payments' ][ 'lastMonth' ] -> timeEnd } } "
class = " fas fa-info-circle " ></ i >
</ span >
< table class = " table " >
< thead >
< tr >
< th >< b > {{ __ ( 'Currency' )}} </ b ></ th >
< th > {{ __ ( 'Number of payments' )}} </ th >
< th > {{ __ ( 'Total amount' )}} </ th >
</ tr >
</ thead >
< tbody >
@ foreach ( $counters [ 'payments' ][ 'lastMonth' ] as $currency => $income )
< tr >
< td > {{ $currency }} </ td >
< td > {{ $income -> count }} </ td >
< td > {{ $income -> total }} </ td >
</ tr >
@ endforeach
</ tbody >
</ table >
< hr style = " width: 100%; height:1px; border-width:0; background-color:#6c757d; margin-top: -16px " >
</ div >
@ endif
@ if ( $counters [ 'payments' ][ 'lastMonth' ] -> count ()) < div class = " col-md-6 " >
@ else < div class = " col-md-12 " > @ endif
2022-08-20 15:07:54 +00:00
< span style = " margin:auto; display:table; font-size: 18px; font-weight:700 " > {{ __ ( 'This month' )}} :
< i data - toggle = " popover " data - trigger = " hover " data - html = " true "
data - content = " { { __('Payments in this time window') }}:<br> { { $counters [ 'payments' ][ 'thisMonth' ] -> timeStart } } - { { $counters [ 'payments' ][ 'thisMonth' ] -> timeEnd } } "
class = " fas fa-info-circle " ></ i >
</ span >
< table class = " table " >
< thead >
< tr >
< th >< b > {{ __ ( 'Currency' )}} </ b ></ th >
< th > {{ __ ( 'Number of payments' )}} </ th >
2022-10-14 20:59:02 +00:00
< th > {{ __ ( 'Total amount' )}} </ th >
2022-08-20 15:07:54 +00:00
</ tr >
</ thead >
< tbody >
@ foreach ( $counters [ 'payments' ][ 'thisMonth' ] as $currency => $income )
< tr >
< td > {{ $currency }} </ td >
< td > {{ $income -> count }} </ td >
< td > {{ $income -> total }} </ td >
</ tr >
@ endforeach
</ tbody >
</ table >
< hr style = " width: 100%; height:1px; border-width:0; background-color:#6c757d; margin-top: -16px " >
</ div >
</ div >
2023-01-13 17:57:35 +00:00
2022-08-20 15:07:54 +00:00
</ div >
</ div >
2022-10-14 20:59:02 +00:00
< div class = " card " >
< div class = " card-header " >
< div class = " d-flex justify-content-between " >
< div class = " card-title " >
< span >< i class = " fas fa-hand-holding-usd mr-2 " ></ i > {{ __ ( 'Tax overview' )}} </ span >
</ div >
</ div >
</ div >
< div class = " card-body py-1 " >
2022-10-14 21:09:16 +00:00
@ if ( $counters [ 'taxPayments' ][ 'lastYear' ] -> count ())
< span style = " margin:auto; display:table; font-size: 18px; font-weight:700 " > {{ __ ( 'Last year' )}} :
< i data - toggle = " popover " data - trigger = " hover " data - html = " true "
data - content = " { { __('Payments in this time window') }}:<br> { { $counters [ 'taxPayments' ][ 'lastYear' ] -> timeStart } } - { { $counters [ 'taxPayments' ][ 'lastYear' ] -> timeEnd } } "
class = " fas fa-info-circle " ></ i >
</ span >
< table class = " table " >
< thead >
< tr >
< th >< b > {{ __ ( 'Currency' )}} </ b ></ th >
< th > {{ __ ( 'Number of payments' )}} </ th >
< th >< b > {{ __ ( 'Base amount' )}} </ b ></ th >
< th >< b > {{ __ ( 'Total taxes' )}} </ b ></ th >
< th > {{ __ ( 'Total amount' )}} </ th >
</ tr >
</ thead >
< tbody >
@ foreach ( $counters [ 'taxPayments' ][ 'lastYear' ] as $currency => $income )
< tr >
< td > {{ $currency }} </ td >
< td > {{ $income -> count }} </ td >
< td > {{ $income -> price }} </ td >
< td > {{ $income -> taxes }} </ td >
< td > {{ $income -> total }} </ td >
</ tr >
@ endforeach
</ tbody >
</ table >
< hr style = " width: 100%; height:2px; border-width:0; background-color:#6c757d; margin-top: 0px; margin-bottom: 8px " >
@ endif
2022-10-14 20:59:02 +00:00
< span style = " margin:auto; display:table; font-size: 18px; font-weight:700 " > {{ __ ( 'This year' )}} :
< i data - toggle = " popover " data - trigger = " hover " data - html = " true "
data - content = " { { __('Payments in this time window') }}:<br> { { $counters [ 'taxPayments' ][ 'thisYear' ] -> timeStart } } - { { $counters [ 'taxPayments' ][ 'thisYear' ] -> timeEnd } } "
class = " fas fa-info-circle " ></ i >
</ span >
< table class = " table " >
< thead >
< tr >
< th >< b > {{ __ ( 'Currency' )}} </ b ></ th >
< th > {{ __ ( 'Number of payments' )}} </ th >
< th >< b > {{ __ ( 'Base amount' )}} </ b ></ th >
< th >< b > {{ __ ( 'Total taxes' )}} </ b ></ th >
< th > {{ __ ( 'Total amount' )}} </ th >
</ tr >
</ thead >
< tbody >
@ foreach ( $counters [ 'taxPayments' ][ 'thisYear' ] as $currency => $income )
< tr >
< td > {{ $currency }} </ td >
< td > {{ $income -> count }} </ td >
< td > {{ $income -> price }} </ td >
< td > {{ $income -> taxes }} </ td >
< td > {{ $income -> total }} </ td >
</ tr >
@ endforeach
</ tbody >
</ table >
< hr style = " width: 100%; height:2px; border-width:0; background-color:#6c757d; margin-top: 0px; " >
</ div >
</ div >
2022-08-19 17:18:44 +00:00
</ div >
2021-11-07 00:47:16 +00:00
</ div >
</ div >
<!-- END CUSTOM CONTENT -->
</ section >
<!-- END CONTENT -->
@ endsection