authorize('view', $account); $balances = $account->balances() ->orderBy('balance_date', 'desc') ->paginate(50); return response()->json($balances); } /** * Store a new balance for an account. */ public function store(Account $account): JsonResponse { $this->authorize('update', $account); $validated = request()->validate([ 'balance' => 'required|numeric', 'balance_date' => 'required|date', ]); $balance = AccountBalance::updateOrCreate( [ 'account_id' => $account->id, 'balance_date' => $validated['balance_date'], ], [ 'balance' => $validated['balance'], ] ); return response()->json([ 'data' => $balance, ], 201); } /** * Update or create the current balance for an account. */ public function updateCurrent(UpdateCurrentAccountBalanceRequest $request, Account $account): JsonResponse { $this->authorize('update', $account); $today = now()->toDateString(); $balance = AccountBalance::updateOrCreate( [ 'account_id' => $account->id, 'balance_date' => $today, ], [ 'balance' => $request->validated()['balance'], ] ); return response()->json([ 'data' => $balance, ]); } /** * Delete a balance record. */ public function destroy(Account $account, AccountBalance $accountBalance): JsonResponse { $this->authorize('update', $account); if ($accountBalance->account_id !== $account->id) { abort(404); } $accountBalance->delete(); return response()->json(null, 204); } }