Untitled
unknown
plain_text
a year ago
2.5 kB
5
Indexable
<?php
namespace App\Http\Controllers;
use App\Models\Expense;
use App\Models\Income;
use App\Models\User;
use Illuminate\Http\Request;
use Inertia\Inertia;
class FinanceController extends Controller
{
public function index(Request $request)
{
$user = $request->user();
$data = [
'currentAmount' => $user->getCurrentAmount(),
'totalIncome' => $user->getTotalIncome(),
'totalExpense' => $user->getTotalExpense(),
'recentIncomes' => $user->getRecentIncomes(),
'recentExpenses' => $user->getRecentExpenses(),
];
if ($user->isAdmin()) {
$adminUser = User::where('is_admin', true)->first();
$data['globalCurrentAmount'] = $adminUser->getCurrentAmount();
$data['globalTotalIncome'] = $adminUser->getTotalIncome();
$data['globalTotalExpense'] = $adminUser->getTotalExpense();
}
return Inertia::render('Dashboard/Index', $data);
}
public function storeExpense(Request $request)
{
$user = $request->user();
$validated = $request->validate([
'description' => 'required|string|max:255',
'amount' => 'required|numeric|min:0',
'date' => 'required|date',
]);
$expense = $user->expenses()->create($validated);
if ($user->isAdmin()) {
$this->updateFinanceStatus('expense', $validated['amount']);
}
return back()->with('success', 'Dépense ajoutée avec succès.');
}
public function storeIncome(Request $request)
{
$user = $request->user();
$validated = $request->validate([
'description' => 'required|string|max:255',
'amount' => 'required|numeric|min:0',
'date' => 'required|date',
]);
$income = $user->incomes()->create($validated);
if ($user->isAdmin()) {
$this->updateFinanceStatus('income', $validated['amount']);
}
return back()->with('success', 'Revenu ajouté avec succès.');
}
private function updateFinanceStatus($type, $amount)
{
$adminUser = User::where('is_admin', true)->first();
$currentAmount = $adminUser->getCurrentAmount();
$trend = $type === 'income' ? 'positive' : 'negative';
Inertia::share([
'globalCurrentAmount' => $currentAmount,
'lastTransactionAmount' => $amount,
'trend' => $trend
]);
}
}Editor is loading...
Leave a Comment