120 lines
4.1 KiB
PHP
120 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Dealer;
|
|
use App\Models\Menu;
|
|
use App\Models\Role;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Gate;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$menu = Menu::where('link', 'user.index')->first();
|
|
abort_if(Gate::denies('view', $menu), 403, 'Unauthorized User');
|
|
if ($request->ajax()) {
|
|
$data = User::select('r.name as role_name', 'd.name as dealer_name', 'users.id', 'users.name', 'users.email')
|
|
->leftJoin('dealers as d', 'd.id', '=', 'users.dealer_id')
|
|
->join('roles as r', 'r.id', '=', 'users.role_id');
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('action', function($row) use ($menu) {
|
|
$btn = '';
|
|
|
|
if(Auth::user()->can('delete', $menu)) {
|
|
$btn .= '<button class="btn btn-danger btn-sm btn-bold" data-action="'. route('user.destroy', $row->id) .'" id="destroyUser'. $row->id .'" onclick="destroyUser('. $row->id .')"> Hapus </button>';
|
|
}
|
|
|
|
if(Auth::user()->can('update', $menu)) {
|
|
$btn .= '<button class="btn btn-warning btn-sm btn-bold" id="editUser'. $row->id .'" data-url="'. route('user.edit', $row->id) .'" data-action="'. route('user.update', $row->id) .'" onclick="editUser('. $row->id .')"> Edit </button>';
|
|
}
|
|
|
|
return $btn;
|
|
})
|
|
->rawColumns(['action'])
|
|
->make();
|
|
}
|
|
|
|
$dealers = Dealer::all();
|
|
$roles = Role::all();
|
|
return view('back.users', compact('dealers', 'roles'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$menu = Menu::where('link', 'user.index')->first();
|
|
abort_if(Gate::denies('create', $menu), 403, 'Unauthorized User');
|
|
User::create([
|
|
"name" => $request->name,
|
|
"dealer_id" => $request->dealer_id,
|
|
"role_id" => $request->role,
|
|
"email" => $request->email,
|
|
"password" => bcrypt($request->password)
|
|
]);
|
|
|
|
$response = [
|
|
"message" => "Data created succesfully",
|
|
"status" => 200
|
|
];
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$menu = Menu::where('link', 'user.index')->first();
|
|
abort_if(Gate::denies('view', $menu), 403, 'Unauthorized User');
|
|
$user = User::find($id);
|
|
$response = [
|
|
"data" => $user,
|
|
"message" => "get data successfully",
|
|
"status" => 200
|
|
];
|
|
return response()->json($response);
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \App\Models\Dealer $dealer
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
$menu = Menu::where('link', 'user.index')->first();
|
|
abort_if(Gate::denies('update', $menu), 403, 'Unauthorized User');
|
|
User::find($id)
|
|
->update([
|
|
"name" => $request->name,
|
|
"dealer_id" => $request->dealer_id,
|
|
"role_id" => $request->role,
|
|
"email" => $request->email,
|
|
"password" => bcrypt($request->password)
|
|
]);
|
|
|
|
$response = [
|
|
"status" => 200,
|
|
"message" => "Data updated successfully"
|
|
];
|
|
|
|
return response()->json($response);
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$menu = Menu::where('link', 'user.index')->first();
|
|
abort_if(Gate::denies('delete', $menu), 403, 'Unauthorized User');
|
|
User::destroy($id);
|
|
$response = [
|
|
"message" => "Data deleted successfully",
|
|
"status" => 200
|
|
];
|
|
return response()->json($response);
|
|
}
|
|
}
|