2024-08-06 22:59:17 -05:00
|
|
|
<?php
|
|
|
|
|
|
2025-01-28 17:33:54 -06:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2024-08-06 22:59:17 -05:00
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
2024-08-21 20:47:06 -05:00
|
|
|
use App\Models\Holding;
|
|
|
|
|
use Illuminate\Http\Request;
|
2024-08-06 22:59:17 -05:00
|
|
|
|
|
|
|
|
class DashboardController extends Controller
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Display the specified resource.
|
|
|
|
|
*/
|
|
|
|
|
public function show(Request $request)
|
|
|
|
|
{
|
2024-08-27 21:17:54 -05:00
|
|
|
$user = $request->user()->load(['portfolios', 'holdings', 'transactions']);
|
2024-08-06 22:59:17 -05:00
|
|
|
|
2024-08-21 20:47:06 -05:00
|
|
|
// get portfolio metrics
|
2024-10-23 13:43:34 -05:00
|
|
|
$metrics = cache()->remember(
|
2025-01-28 17:14:49 -06:00
|
|
|
'dashboard-metrics-'.$user->id,
|
|
|
|
|
10,
|
2024-08-21 20:47:06 -05:00
|
|
|
function () {
|
|
|
|
|
return
|
|
|
|
|
Holding::query()
|
2025-01-28 17:14:49 -06:00
|
|
|
->myHoldings()
|
|
|
|
|
->withoutWishlists()
|
|
|
|
|
->withPortfolioMetrics()
|
|
|
|
|
->first();
|
2024-08-21 20:47:06 -05:00
|
|
|
}
|
|
|
|
|
);
|
2024-08-06 22:59:17 -05:00
|
|
|
|
2024-08-21 20:47:06 -05:00
|
|
|
return view('dashboard', compact('user', 'metrics'));
|
2024-08-06 22:59:17 -05:00
|
|
|
}
|
|
|
|
|
}
|