<?php
namespace Modules\User\Http\Controllers\Admin;
use App\Http\Controllers\MyController;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Modules\User\Http\Requests\UserPwdRequest;
use Modules\User\Http\Requests\UserStoreRequest;
use Modules\User\Http\Requests\UserUpdateRequest;
use Modules\User\Models\User;
use Modules\User\Service\UserService;
class UserController extends MyController
{
public function index(Request $request)
{
if ($request->ajax() && $request->wantsJson()) {
$where = [];
if ($json = $request->input('filter')) {
$filters = json_decode($json, true);
foreach ($filters as $name => $filter) {
$where[] = [$name, '=', $filter];
}
}
$admins = User::orderBy('id', 'desc')
->where($where)
->paginate($this->request('limit', 'intval'))->toArray();
return $this->jsonSuc($admins);
}
return $this->view('admin.user.index');
}
public function create()
{
return $this->view('admin.user.create');
}
public function store(UserStoreRequest $request, User $user)
{
$data = $request->validated();
$data['password'] = Hash::make($data['password']);
$result = $user->store($data);
return $this->result($result);
}
public function show($id)
{
return view('user::show');
}
public function edit()
{
$user = User::find($this->request('id', 'intval'));
return $this->view('admin.user.edit', compact('user'));
}
public function update(UserUpdateRequest $request, User $user)
{
$data = $request->validated();
$result = $user->up($data);
return $this->result($result);
}
public function password()
{
$user = User::find($this->request('id', 'intval'));
return $this->view('admin.user.password', compact('user'));
}
public function setPwd(UserPwdRequest $request, User $user)
{
$data = $request->validated();
$result = $user->up(['password' => Hash::make($data['password']), 'id' => $data['id']]);
return $this->result($result);
}
public function modify()
{
$user = User::find($this->request('id', 'intval'));
$user->{$this->request('field')} = $this->request('value');
$result = $user->save();
return $this->result($result);
}
public function destroy()
{
$result = User::destroy($this->request('id', 'intval'));
return $this->result($result);
}
public function account()
{
$user = User::find($this->request('id', 'intval'));
return $this->view('admin.user.account', compact('user'));
}
public function setAccount(UserService $service)
{
$balanceRes = $pointRes = true;
$id = $this->request('id', 'intval');
if ($balance = $this->request('balance', 'floatval')) {
$balanceRes = $service->balance($balance, $id);
}
if ($point = $this->request('point', 'floatval')) {
$pointRes = $service->point($point, $id);
}
return $this->result($balanceRes && $pointRes);
}
}