����JFIF��x�x����'
Server IP : 66.29.137.217 / Your IP : 18.219.23.38 Web Server : LiteSpeed System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : gltevjme ( 1095) PHP Version : 7.0.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/gltevjme/./cbt.gltechlimited.com/app/Http/Controllers/Admin/ |
Upload File : |
<?php /** * File name: UserCrudController.php * Last modified: 19/07/21, 12:55 AM * Author: NearCraft - https://codecanyon.net/user/nearcraft * Copyright (c) 2021 */ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Filters\UserFilters; use App\Http\Requests\Admin\StoreUserRequest; use App\Http\Requests\Admin\UpdateUserRequest; use App\Models\User; use App\Models\UserGroup; use App\Transformers\Admin\UserSearchTransformer; use App\Transformers\Admin\UserTransformer; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Inertia\Inertia; class UserCrudController extends Controller { public function __construct() { $this->middleware(['role:admin'])->except('search'); } /** * List all users * * @param UserFilters $filters * @return \Inertia\Response */ public function index(UserFilters $filters) { return Inertia::render('Admin/Users', [ 'roles' => [ ['value' => 1, 'text' => 'Admin'], ['value' => 2, 'text' => 'Instructor'], ['value' => 3, 'text' => 'Student'], ['value' => 5, 'text' => 'Guest'], ], 'users' => function () use($filters) { return fractal(User::with('roles:id,name')->filter($filters) ->paginate(request()->perPage != null ? request()->perPage : 10), new UserTransformer())->toArray(); }, 'userGroups' => UserGroup::select(['id', 'name'])->active()->get() ]); } /** * Search users api endpoint * * @param Request $request * @param UserFilters $filters * @return \Illuminate\Http\JsonResponse */ public function search(Request $request, UserFilters $filters) { $query = $request->get('query'); return response()->json([ 'users' => fractal(User::select(['id', 'first_name', 'last_name']) ->filter($filters) ->where('first_name', 'like', '%'.$query.'%') ->orWhere('last_name', 'like', '%'.$query.'%')->limit(20) ->get(), new UserSearchTransformer()) ->toArray()['data'] ]); } /** * Store an user * * @param StoreUserRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreUserRequest $request) { $user = User::create([ 'first_name' => $request['first_name'], 'last_name' => $request['last_name'], 'user_name' => $request['user_name'], 'email' => $request['email'], 'password' => Hash::make($request['password']), 'email_verified_at' => $request['email_verified_at'] ? Carbon::now()->toDateTimeString() : null, 'is_active' => $request['is_active'], ]); if($user) { $user->assignRole($request['role']); $user->userGroups()->sync($request->user_groups); } return redirect()->back()->with('successMessage', 'User was successfully added!'); } /** * Show an user * * @param $id * @return array */ public function show($id) { $user = User::find($id); return fractal($user, new UserTransformer())->toArray(); } /** * Edit an user * * @param $id * @return \Illuminate\Http\JsonResponse */ public function edit($id) { $user = User::find($id); return response()->json([ 'user' => $user, 'userGroups' => $user->userGroups()->pluck('id') ]); } /** * Update an user * * @param UpdateUserRequest $request * @param $id * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateUserRequest $request, $id) { if(config('qwiktest.demo_mode')) { return redirect()->back()->with('errorMessage', 'Demo Mode! Users can\'t be changed.'); } $user = User::find($id); $user->first_name = $request['first_name']; $user->last_name = $request['last_name']; $user->user_name = $request['user_name']; $user->email = $request['email']; $user->email_verified_at = $request['email_verified_at'] ? Carbon::now()->toDateTimeString() : null; $user->is_active = $request['is_active']; // If user is in-active, delete all sessions if($request['is_active'] == false) { if (config('session.driver') == 'database') { DB::connection(config('session.connection'))->table(config('session.table', 'sessions')) ->where('user_id', $user->getAuthIdentifier()) ->delete(); } } if($request['password'] != null || $request['password'] != '') { $user->password = Hash::make($request['password']); } $user->update(); $user->syncRoles($request['role']); $user->userGroups()->sync($request->user_groups); return redirect()->back()->with('successMessage', 'User was successfully updated!'); } /** * Delete an user * * @param $id * @return \Illuminate\Http\RedirectResponse */ public function destroy($id) { if(config('qwiktest.demo_mode')) { return redirect()->back()->with('errorMessage', 'Demo Mode! Users can\'t be deleted.'); } try { $user = User::find($id); DB::transaction(function () use ($user) { $user->practiceSessions()->forceDelete(); $user->quizSessions()->forceDelete(); $user->examSessions()->forceDelete(); $user->payments()->forceDelete(); $user->subscriptions()->forceDelete(); $user->userGroups()->detach(); $user->roles()->detach(); DB::table('transactions')->where('payable_type', '=', 'App\Models\User') ->where('payable_id', '=', $user->id)->delete(); DB::table('wallets')->where('holder_type', '=', 'App\Models\User') ->where('holder_id', '=', $user->id)->delete(); DB::table('sessions')->where('user_id', '=', $user->id)->delete(); $user->forceDelete(); }); } catch (\Illuminate\Database\QueryException $e){ return redirect()->back()->with('errorMessage', 'Unable to Delete User . Remove all associations and Try again!'); } return redirect()->back()->with('successMessage', 'User was successfully deleted!'); } }