донат шоп, управление магазином, яндекс метрика

This commit is contained in:
2026-07-19 19:17:29 +04:00
parent 8bf1b852f0
commit df7f98fe8b
48 changed files with 1859 additions and 18 deletions
@@ -0,0 +1,59 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\AdjustBalanceRequest;
use App\Services\AzerothCoreAccountService;
use App\Services\BalanceService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
use InvalidArgumentException;
class BalanceController extends Controller
{
public function index(Request $request, BalanceService $balances): View
{
$search = trim((string) $request->query('search', ''));
return view('admin.balances.index', [
'transactions' => $balances->adminTransactions($search !== '' ? $search : null),
'search' => $search,
]);
}
public function adjust(
AdjustBalanceRequest $request,
AzerothCoreAccountService $accounts,
BalanceService $balances,
): RedirectResponse {
$accountInput = trim($request->string('account')->toString());
$account = ctype_digit($accountInput)
? $accounts->findUserById((int) $accountInput)
: $accounts->findUserByUsername($accountInput);
if (! $account) {
return back()->withInput()->withErrors(['account' => 'Игровой аккаунт не найден.']);
}
try {
$transaction = $balances->adjustByAdmin(
$account->id,
$request->string('amount')->toString(),
$request->string('direction')->toString(),
$request->user()->id,
$request->user()->username,
$request->string('reason')->toString(),
);
} catch (InvalidArgumentException $exception) {
return back()->withInput()->withErrors(['amount' => $exception->getMessage()]);
}
return back()->with('status', sprintf(
'Счёт %s изменён. Теперь на нём %s Слёз Элуны.',
$account->username,
number_format((float) $transaction->balance_after, 2, ',', ' '),
));
}
}