Files
wticreatorstudio/Modules/MLMDownline/Http/Controllers/API/UserController.php
T
2024-02-12 22:54:20 -05:00

64 lines
2.2 KiB
PHP

<?php
namespace Modules\MLMDownline\Http\Controllers\API;
use App\Models\Staff;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\MLMDownline\Entities\MLMDownlineStaff;
use Modules\MLMDownline\Entities\MLMDownlineUser;
use Modules\MLMDownline\Transformers\UserResource;
class UserController extends Controller
{
public function index(Request $request)
{
$users = MLMDownlineUser::query()
->withCount(['videos', 'downline'])
->when(auth()->user()->role->type !== 'superadmin', fn ($query) => $query->where('parent_id', auth()->id())->whereHas('role.permissions', fn ($query) => $query->where('route', 'downline')))
->paginate();
return UserResource::collection($users);
}
public function unassignedUsers(Request $request, MLMDownlineStaff $mLMDownlineStaff)
{
$users = MLMDownlineUser::query()
->with(['staff', 'role'])
->whereHas('role.permissions', fn ($query) => $query->where('route', 'downline'))
->whereHas('staff', fn ($query) => $query->where('id', '!=', $mLMDownlineStaff->id))
->where(fn ($query) => $query->whereNull('parent_id')->orWhere('parent_id', $mLMDownlineStaff->user->id))
->paginate();
return UserResource::collection($users);
}
public function assign(Request $request, MLMDownlineStaff $mLMDownlineStaff)
{
$validated = $request->validate([
'users' => ['required', 'array']
]);
$user = $mLMDownlineStaff->user;
$user->downline()->update(['parent_id' => null]);
MLMDownlineUser::query()
->whereIn('id', $validated['users'])
->update(['parent_id' => $user->id]);
return response()->noContent();
}
public function canRoleBeDownline(Request $request) {
$role = explode('-', $request->role);
$role_id = $role[0];
$role = \Modules\RolePermission\Entities\Role::where('id', $role_id)->whereHas('permissions', function ($q) {
$q->where('route', 'downline');
})->first();
return response()->json([
'allowed' => $role ? true : false
]);
}
}