Current File : /home/getxxhzo/app.genicards.com/app/Http/Controllers/AdminUserController.php |
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CreateUserRequest;
use App\Http\Requests\UpdateUserRequest;
use App\Models\MultiTenant;
use App\Models\Role;
use App\Models\User;
use App\Models\Vcard;
use App\Repositories\UserRepository;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Routing\Redirector;
use Illuminate\Support\Facades\Auth;
use Laracasts\Flash\Flash;
class AdminUserController extends AppBaseController
{
/**
* UserController constructor.
*/
public function __construct(UserRepository $userRepository)
{
$this->userRepo = $userRepository;
}
public function index(): \Illuminate\View\View
{
return view('admin_users.index');
}
/**
* @return Application|Factory|View
*/
public function show($id): \Illuminate\View\View
{
$user = User::find($id);
if (! empty($user) && $user->getRoleNames()[0] == 'super_admin') {
return view('admin_users.show', compact('user'));
}
abort(404);
}
/**
* @return Application|Factory|View
*/
public function create(): \Illuminate\View\View
{
return view('admin_users.create');
}
/**
* @return Application|RedirectResponse|Redirector
*/
public function store(CreateUserRequest $request): RedirectResponse
{
$input = $request->all();
$input['role'] = Role::ROLE_SUPER_ADMIN;
$this->userRepo->store($input);
Flash::success(__('messages.admin.admin_created_successfully'));
return redirect(route('admins.index'));
}
/**
* @return Application|Factory|View
*/
public function edit($id): \Illuminate\View\View
{
$user = User::find($id);
return view('admin_users.edit', compact('user'));
}
/**
* @return Application|RedirectResponse|Redirector
*/
public function update(UpdateUserRequest $request, $id): RedirectResponse
{
$user = User::findOrFail($id);
$this->userRepo->update($request->all(), $user);
Flash::success(__('messages.admin.admin_updated_successfully'));
return redirect(route('admins.index'));
}
/**
* @param User $user
* @return mixed
*/
public function destroy(User $admin)
{
$adminDate = $admin->created_at;
$loggedInAdminDate = Auth::user()->created_at;
if ($loggedInAdminDate > $adminDate) {
return $this->sendError(__('messages.admin.not_allowed_to_access'));
}
Vcard::where('tenant_id', $admin->tenant_id)->delete();
MultiTenant::where('id', $admin->tenant_id)->delete();
$admin->delete();
return $this->sendSuccess(__('messages.admin.admin_delete_successfully'));
}
}