first initial
This commit is contained in:
119
app/Http/Controllers/UserController.php
Normal file
119
app/Http/Controllers/UserController.php
Normal file
@@ -0,0 +1,119 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user