team_directory/app/Http/Controllers/AdminController.php

135 lines
3.5 KiB
PHP
Raw Normal View History

2023-05-25 15:04:43 -04:00
<?php
namespace App\Http\Controllers;
use DB;
use Mail;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class AdminController extends Controller
{
public function index () {
return view('Admin.index');
}
public function login (Request $request) {
$data = $request->all();
if ((!isset($data['mail'])) || (!isset($data['password']))){
$errors = '1';
return view('Admin.index', compact('errors'));
}
$credentials = [
'mail' => $data['mail'],
'password' => $data['password']
];
try {
if (Auth::attempt($credentials)) {
$user = DB::table('users')->where('email', '=', $credentials['mail'])
->get(['name']);
$credentials['name'] = $user[0]->name;
Session::push('credentials', $credentials);
return redirect()->route('employees');
}
else{
$errors = '2';
return view('Admin.index', compact('errors'));
}
} catch (\Exception $ex) {
Log::channel('error')->info('Error:'.$ex);
}
}
public function logout (Request $request) {
$request->session()->flush();
$request->session()->regenerate();
Auth::logout();
return redirect()->route('login');
}
public function search (Request $request) {
$data = $request->all();
$criteria = $data['search'];
$users = User::where('name', 'LIKE', '%'.$criteria.'%')
->orWhere('department', 'LIKE', '%'.$criteria.'%')
->get();
$curr_user = $request->session()->get('credentials');
$data = [
'users' => $users,
'curr_user' => $curr_user[0]['name']
];
return view('Admin.employees', compact('data'));
}
public function show (Request $request) {
$users = DB::table('users')->orderBy('name')->get();
$curr_user = $request->session()->get('credentials');
$data = [
'users' => $users,
'curr_user' => $curr_user[0]['name']
];
return view('Admin.employees')->with(compact('data'));
}
public function import () {
try {
Artisan::call('ldap:import user -n');
DB::table('users')->where('description', '=', 'Test Account')->delete();
return redirect()->route('employees');
} catch (\Exception $ex) {
Log::channel('error')->info('Error:'.$ex);
}
}
public function export (Request $request) {
$data = array('data' => json_decode($request->data));
return response()->json($data);
}
public function sort (Request $request, $sortBy) {
$data = array('data' => json_decode($request->data));
if ($sortBy != 'name'){
$sorted = collect($data['data'])->sortByDesc($sortBy);
}
else {
$sorted = collect($data['data'])->sortBy($sortBy);
}
$data = $sorted->values()->all();
$curr_user = $request->session()->get('credentials');
$data = [
'users' => $data,
'curr_user' => $curr_user[0]['name']
];
return view('Admin.employees', compact('data'));
}
}