ctrlpanel/app/Http/Controllers/Admin/OverViewController.php
2021-11-07 12:16:46 +01:00

65 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Egg;
use App\Models\Location;
use App\Models\Nest;
use App\Models\Node;
use App\Models\Payment;
use App\Models\Server;
use App\Models\User;
use Illuminate\Support\Facades\Cache;
class OverViewController extends Controller
{
public const TTL = 86400;
public function index()
{
$userCount = Cache::remember('user:count', self::TTL, function () {
return User::query()->count();
});
$creditCount = Cache::remember('credit:count', self::TTL, function () {
return User::query()->sum('credits');
});
$paymentCount = Cache::remember('payment:count', self::TTL, function () {
return Payment::query()->count();
});
$serverCount = Cache::remember('server:count', self::TTL, function () {
return Server::query()->count();
});
$lastEgg = Egg::query()->latest('updated_at')->first();
$syncLastUpdate = $lastEgg ? $lastEgg->updated_at->isoFormat('LLL') : __('unknown');
return view('admin.overview.index', [
'serverCount' => $serverCount,
'userCount' => $userCount,
'paymentCount' => $paymentCount,
'creditCount' => number_format($creditCount, 2, '.', ''),
'locationCount' => Location::query()->count(),
'nodeCount' => Node::query()->count(),
'nestCount' => Nest::query()->count(),
'eggCount' => Egg::query()->count(),
'syncLastUpdate' => $syncLastUpdate
]);
}
/**
* @description Sync locations,nodes,nests,eggs with the linked pterodactyl panel
*/
public function syncPterodactyl()
{
Node::syncNodes();
Egg::syncEggs();
return redirect()->back()->with('success', __('Pterodactyl synced'));
}
}