You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

70 lines
1.8 KiB

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Spatie\QueryBuilder\QueryBuilder;
use Spatie\QueryBuilder\AllowedFilter;
class UserController extends Controller
{
public function search(Request $request)
{
$limit = 20;
$userQ = User::query();
if ($request->filled('search')){
$userQ = $userQ->where(function($query) use ($request) {
$query->where('email', 'like', '%'.$request->search.'%')
->orWhere('username', 'like', '%'.$request->search.'%');
});
}
return $userQ->where('id', '!=', auth()->id())
->whereNotIn('id', request('_business_info')['info']['users']->keys())
->select('id', 'name', 'email', 'username')->take($limit)->get();
}
public function index(Request $request)
{
$userQ = QueryBuilder::for(User::class)
->allowedFilters([
AllowedFilter::exact('id'),
]);
return $userQ->select('id', 'name', 'email', 'username')->get();
}
public function show($user)
{
return User::select('id', 'name', 'email', 'username')->findOrFail($user);
}
public function update(Request $request, string $user)
{
$user = User::findOrFail($user);
$user->update($request->all());
return $user;
}
public function setAvatar(Request $request, string $user)
{
$user = User::findOrFail($user);
if ($request->hasFile('avatar')) {
$user->saveAsAvatar($request->file('avatar'));
}
return $user;
}
public function unSetAvatar(Request $request, string $user)
{
$user = User::findOrFail($user);
$user->deleteAvatar();
$user->refresh();
return $user;
}
}