mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-07-31 05:16:49 -04:00
64 lines
2.2 KiB
PHP
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
|
|
]);
|
|
}
|
|
}
|