store/app/Http/Controllers/Admin/Finance/ExpenseController.php
Yoga Pangestu 0489badf03
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (8.3) (push) Waiting to run
tests / ci (8.4) (push) Waiting to run
tests / ci (8.5) (push) Waiting to run
feat: update services and controllers to include user information in transaction notifications for improved clarity
2026-07-14 21:41:39 +07:00

61 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Finance;
use App\Http\Controllers\Concerns\FlashesEntityMessage;
use App\Http\Controllers\Concerns\ParsesDataTableQuery;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\Finance\ExpenseRequest;
use App\Models\Expense;
use App\Services\Finance\ExpenseService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Inertia\Response;
class ExpenseController extends Controller
{
use FlashesEntityMessage, ParsesDataTableQuery;
public function __construct(
private readonly ExpenseService $expenseService,
) {}
public function index(Request $request): Response
{
$tableQuery = $this->parseDataTableQuery($request);
return Inertia::render('admin/finance/expenses/Index', [
'expenses' => $this->expenseService->paginateForIndex($tableQuery),
'filters' => $this->dataTableFilters($tableQuery),
]);
}
public function store(ExpenseRequest $request): RedirectResponse
{
$this->expenseService->create($request->validated(), $request->user());
$this->flashCreated('Pengeluaran');
return redirect()->route('admin.finance.expenses.index');
}
public function update(ExpenseRequest $request, Expense $expense): RedirectResponse
{
$this->expenseService->update($expense, $request->validated(), $request->user());
$this->flashUpdated('Pengeluaran');
return redirect()->route('admin.finance.expenses.index');
}
public function destroy(Request $request, Expense $expense): RedirectResponse
{
$this->expenseService->delete($expense, $request->user());
$this->flashDeleted('Pengeluaran');
return redirect()->route('admin.finance.expenses.index');
}
}