main
ilhamwara 2025-05-19 09:36:25 +07:00
parent 148acc3ba0
commit f9ea728282
6 changed files with 151 additions and 10 deletions

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers\Management;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
use App\Models\Master\Group;
@ -43,8 +44,9 @@ class RoleController extends Controller
if((permission('is_create', $this->route.'.*','module',false)) || (permission('is_update', $this->route.'.*','module',false))){
$action .= '<div class="flex gap-3 justify-center items-center flex-row">';
$action .= '<a href="'.url('/management/role/akses/'.encode_id($row->MsGroupId)).'/edit" data-toggle="tooltip" title="Edit Hak Akses Role" class="btn btn-sm bg-primary"><i class="ri-list-settings-line text-white"></i></a>';
$action .= '<a href="'.url('/management/role/'.encode_id($row->MsGroupId).'/edit').'" data-toggle="tooltip" title="Edit Data" class="btn btn-sm bg-success"><i class="ri-pencil-line text-white"></i></a>';
$action .= '<a href="'.url('/management/role/update/'.encode_id($row->MsGroupId)).'" data-toggle="tooltip" title="Edit Data" class="btn btn-sm bg-success"><i class="ri-pencil-line text-white"></i></a>';
// $action .= '<a data-toggle="tooltip" title="Hapus Data" class="btn btn-xs bg-danger"><i class="ri-trash-line text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('management/role/delete/'.encode_id($row->MsGroupId)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
$action .= '</div>';
}
@ -67,7 +69,15 @@ class RoleController extends Controller
*/
public function create()
{
//
$data['breadcrumbs'] = [
['name' => 'Dashboard','url' => url('dashboard')],
['name' => 'Management & Akses Role'],
['name' => 'Data Role User','active' => true],
];
$data['title'] = $this->title;
$data['route'] = $this->route;
return view($this->template.'.form',$data);
}
/**
@ -75,7 +85,40 @@ class RoleController extends Controller
*/
public function store(Request $request)
{
//
try {
$keyId = decode_id($request->secure_id);
Validator::make($request->all(), [
'name' => 'required',
'alias' => 'required',
])->validate();
if(@$keyId){
$group = Group::find($keyId);
$group->name = $request->name;
$group->alias = $request->alias;
$group->save();
}else{
$group = new Group;
$group->name = $request->name;
$group->alias = $request->alias;
$group->created_by = auth()->user()->id;
$group->status = true;
$group->save();
}
return redirect()->back()->with([
'message' => 'Berhasil update data',
'type' => 'success',
]);
}catch (Exception $e) {
return redirect()->back()->with([
'message' => $e->getMessage(),
'type' => "error"
]);
}
}
/**
@ -97,9 +140,19 @@ class RoleController extends Controller
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
public function update($id = null)
{
//
$data['breadcrumbs'] = [
['name' => 'Dashboard','url' => url('dashboard')],
['name' => 'Management & Akses Role'],
['name' => 'Data Role User','active' => true],
];
$keyId = decode_id($id);
$data['title'] = $this->title;
$data['route'] = $this->route;
$data['keyId'] = $id;
$data['item'] = Group::find($keyId);
return view($this->template.'.form',$data);
}
/**
@ -109,4 +162,13 @@ class RoleController extends Controller
{
//
}
public function delete($id)
{
$keyId = decode_id($id);
$group = Group::where('MsGroupId',$keyId)->delete();
return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']);
}
}

View File

@ -52,7 +52,7 @@ class UserController extends Controller
$action .= '<a href="'.url('management/user/update/'.encode_id($row->id)).'" data-toggle="tooltip" title="Edit Data" class="btn btn-sm btn-block bg-primary"><i class="ri-pencil-line text-white"></i></a>';
if(session('group_id') == 1){
$action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin btn btn-sm btn-block bg-success"><i class="ri-user-2-line text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('management/user/delete/'.encode_id($row->id)).'" data-toggle="tooltip" title="Edit Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('management/user/delete/'.encode_id($row->id)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
}
$action .= '</div>';
}

View File

@ -98,16 +98,16 @@
});
});
@if (Session::get('message_type')=='invalid')
@if (Session::get('type')=='error')
toastr.error("{{ Session::get('message') }}", 'Error!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
@endif
@if (Session::get('message_type')=='success')
@if (Session::get('type')=='success')
toastr.success("{{ Session::get('message') }}", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
@endif
@if (Session::get('message_type')=='warning')
@if (Session::get('type')=='warning')
toastr.warning("{{ Session::get('message') }}", 'Whoopss!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
@endif
@if (Session::get('message_type')=='info')
@if (Session::get('type')=='info')
toastr.info("{{ Session::get('message') }}", 'Info!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
@endif
</script>

View File

@ -0,0 +1,35 @@
@extends('layouts.master')
@section('content')
<div class="card">
<div class="card-header">
<h4 class="card-title">Data {{$title}}</h4>
</div>
<form action="{{route($route.'.store')}}" method="POST" class="">
{{csrf_field()}}
<input type="hidden" name="secure_id" value="{{@$keyId}}">
<div class="p-6">
<div class="grid lg:grid-cols-2 gap-3">
<div class="mb-3">
<label class="mb-3">Role</label>
<input type="text" value="{{@$item->name ? @$item->name : old('name')}}" name="name" class="form-input @error('name') is-invalid @enderror" placeholder="Masukan Nama Role" required>
@error('name')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3">
<label class="mb-3">Alias</label>
<input type="text" value="{{@$item->alias ? @$item->alias : old('alias')}}" name="alias" class="form-input @error('alias') is-invalid @enderror" placeholder="Masukan Alias Role" required>
<small><i>Pastikan mengandung huruf kecil semua dan tidak ada "spasi" atau tanda baca "-"</i></small>
@error('alias')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="p-6">
<a href="{{route($route.'.index')}}" class="btn bg-danger text-white"><i class="ri-close-line"></i>&nbsp;Batal</a>
<button type="submit" class="btn bg-success text-white"><i class="ri-save-line"></i> Simpan</button>
</div>
</form>
</div>
@endsection

View File

@ -11,6 +11,9 @@
</div>
</div>
<div class="p-6">
<div id="toolbar">
<a href="{{route($route.'.create')}}" class="btn bg-primary text-white">Tambah Data</a>
</div>
<table class="gridjs-table"
data-search="true"
data-toggle="table"
@ -39,5 +42,44 @@
@endsection
@section('js')
<script type="text/javascript">
$("#grid-data").on("click", ".remove_data", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
swal({
title: "Hapus Data!",
text: "Apa anda yakin ingin menghapus data ini ?",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Ya Hapus Sekarang",
cancelButtonText: "Tidak",
closeOnConfirm: true,
closeOnCancel: true
},
function(isConfirm) {
if(isConfirm){
request = $.ajax({
url: base_url,
type: "GET",
});
// Callback handler that will be called on success
request.done(function(response, textStatus, jqXHR){
console.log(response);
toastr.success("Berhasil Menhapus Data", 'Berhasil!', {positionClass: 'toast-bottom-right', containerId: 'toast-bottom-right'});
$('#grid-data').bootstrapTable('refresh');
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
toastr.error(
"Gagal "+textStatus, errorThrown
);
});
}
});
return false;
});
</script>
@endsection

View File

@ -22,6 +22,8 @@ Route::name('management.')->prefix('management')->group(function () {
Route::name('role.')->prefix('role')->group(function () {
Route::resource('/',RoleController::class);
Route::get('grid',[RoleController::class,'grid'])->name('grid');
Route::get('update/{id?}',[RoleController::class,'update'])->name('update');
Route::get('delete/{id?}',[RoleController::class,'delete'])->name('delete');
Route::name('akses.')->prefix('akses')->group(function () {
Route::resource('/',AksesController::class);