diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php
index 6271d81..a93a65a 100644
--- a/app/Http/Controllers/Dashboard/DatatableController.php
+++ b/app/Http/Controllers/Dashboard/DatatableController.php
@@ -1861,15 +1861,33 @@ public function issueManagement(Request $request){
public function user(Request $request){
if ($request->ajax()) {
- $roleParam = $request->input('role', null);
+ $role = $request->input('role', null);
+ $status = $request->input('status', null);
- if($roleParam){
- $role = Role::findOrFail(decrypt_id($roleParam));
- $data = User::with(['role'])->where('role_id', '=', $role->id)->get();
- }else{
- $data = User::with(['role'])->get();
+ $query = User::with(['role']);
+
+ if($role && $role !== 'all'){
+ $role = Role::findOrFail(decrypt_id($role));
+ $query->where('role_id', '=', $role->id)->get();
}
+ if($status && in_array($status, ['waiting','active','nonactive'])){
+ switch($status){
+ case 'waiting':
+ $statusNum = '0';
+ break;
+ case 'active':
+ $statusNum = '1';
+ break;
+ case 'nonactive':
+ $statusNum = '2';
+ break;
+ }
+ $query->where('status', '=', $statusNum)->get();
+ }
+
+ $data = $query->get();
+
return DataTables::of($data)
->addIndexColumn()
->addColumn('role', function ($data){
@@ -1893,9 +1911,9 @@ public function user(Request $request){
->addColumn('action', function ($data) {
$showUrl = route('dashboard.users.show', ['id' => encrypt_id($data->id), 'type' => 'account']);
- $acceptUrl = route('dashboard.users.status.action', ['id' => encrypt_id($data->id), 'action' => 'accept']);
+ $acceptUrl = route('dashboard.users.process', ['id' => encrypt_id($data->id), 'type' => 'account', 'process' => 'accept']);
- $rejectUrl = route('dashboard.users.status.action', ['id' => encrypt_id($data->id), 'action' => 'reject']);
+ $rejectUrl = route('dashboard.users.process', ['id' => encrypt_id($data->id), 'type' => 'account', 'process' => 'reject']);
$resetPasswordUrl = route('dashboard.users.reset.password', ['id' => encrypt_id($data->id)]);
@@ -1909,12 +1927,20 @@ public function user(Request $request){
- Detail
';
+ // if (is_role([1]) && $data->status === '0') {
+ // $dropdown .= '- Setujui
';
+ // }
+
+ // if (is_role([1]) && $data->status === '0') {
+ // $dropdown .= '- Tolak
';
+ // }
+
if (is_role([1]) && $data->status === '0') {
- $dropdown .= '- Setujui
';
+ $dropdown .= '- Setujui
';
}
if (is_role([1]) && $data->status === '0') {
- $dropdown .= '- Tolak
';
+ $dropdown .= '- Tolak
';
}
if (is_role([1])) {
diff --git a/app/Http/Controllers/Dashboard/UserController.php b/app/Http/Controllers/Dashboard/UserController.php
index 9e28aab..d395fa4 100644
--- a/app/Http/Controllers/Dashboard/UserController.php
+++ b/app/Http/Controllers/Dashboard/UserController.php
@@ -16,7 +16,8 @@ class UserController extends Controller
public function index(Request $request){
return view('dashboard.users.index', [
'title' => 'Pengguna',
- 'role' => $request->input('role', null)
+ 'role' => $request->input('role', null),
+ 'status' => $request->input('status', null),
]);
}
@@ -118,20 +119,40 @@ public function resetPasswordAction(ResetPasswordRequest $request, $id){
}
}
- public function statusAction($id, $action){
+ public function statusAction(Request $request, $id, $action){
$user = User::findOrFail(decrypt_id($id));
- if($user->status === '0'){
+ if($user->status === '0' && Auth::check() && is_role(['1'])){
if($action == 'accept'){
$user->update([
'status' => '1'
]);
+
+ return response()->json(['message' => 'Berhasil menyetujui pengguna.']);
}else if($action == 'reject'){
+
+ $validatedData = $request->validate([
+ 'rejection_reason' => ['required'],
+ ], [
+ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.',
+ ]);
+
$user->update([
'status' => '3'
]);
+
+ $user->company->update([
+ 'rejection_reason' => $validatedData['rejection_reason']
+ ]);
+
+ return redirect()->back()->with('success-status', 'Berhasil menolak pengguna.');
}
+
}
+
+ // return redirect()->route('dashboard.users.index')->with('success-status', 'Berhasil menyetujui pengguna.');
+
+
}
public function destroy($id)
@@ -189,4 +210,41 @@ public function profile($type){
}
}
+ public function filter(Request $request){
+
+ $filteredRequest = $request->except('_token');
+
+ $filterField = array_filter($filteredRequest, function ($value) {
+ return filled($value);
+ });
+
+ return redirect()->route('dashboard.users.index', $filterField);
+ }
+
+ public function process($id, $type, $process){
+ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id));
+
+ $data = [
+ 'title' => 'Profile Pengguna',
+ 'user' => $user,
+ 'roles' => Role::all(),
+ 'page' => 'process',
+ 'type' => $type,
+ 'process' => $process,
+ ];
+
+ if($type === 'account'){
+ return view('dashboard.users.profiles.account', $data);
+ }elseif($type === 'login-activities'){
+ $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20);
+ return view('dashboard.users.profiles.login-activity', $data);
+ }elseif($type === 'company'){
+ return view('dashboard.users.profiles.company', $data);
+ }elseif($type === 'media'){
+ return view('dashboard.users.profiles.media', $data);
+ }elseif($type === 'journalists'){
+ return view('dashboard.users.profiles.journalists', $data);
+ }
+ }
+
}
diff --git a/resources/views/dashboard/users/index.blade.php b/resources/views/dashboard/users/index.blade.php
index 9d05a3f..7e121e0 100644
--- a/resources/views/dashboard/users/index.blade.php
+++ b/resources/views/dashboard/users/index.blade.php
@@ -28,6 +28,11 @@
--}}
+ -
+
+
- Tambah
@@ -55,6 +60,51 @@
+
diff --git a/resources/views/dashboard/users/profiles/account.blade.php b/resources/views/dashboard/users/profiles/account.blade.php
index 796d5a2..4637786 100644
--- a/resources/views/dashboard/users/profiles/account.blade.php
+++ b/resources/views/dashboard/users/profiles/account.blade.php
@@ -82,6 +82,7 @@
+ @include('dashboard.users.profiles.action')
diff --git a/resources/views/dashboard/users/profiles/action.blade.php b/resources/views/dashboard/users/profiles/action.blade.php
new file mode 100644
index 0000000..127f9a2
--- /dev/null
+++ b/resources/views/dashboard/users/profiles/action.blade.php
@@ -0,0 +1,48 @@
+@if ($user->status === '0' && isset($process) && $process === 'accept')
+
+@elseif ($user->status === '0' && isset($process) && $process === 'reject')
+
+
+
+ {{-- {{dd($mediaCooperationPivot->status != '0')}} --}}
+
+
+
+@endif
diff --git a/resources/views/dashboard/users/profiles/company.blade.php b/resources/views/dashboard/users/profiles/company.blade.php
index b580529..beff99f 100644
--- a/resources/views/dashboard/users/profiles/company.blade.php
+++ b/resources/views/dashboard/users/profiles/company.blade.php
@@ -197,6 +197,7 @@
+ @include('dashboard.users.profiles.action')
diff --git a/resources/views/dashboard/users/profiles/heading.blade.php b/resources/views/dashboard/users/profiles/heading.blade.php
index d01b87a..c27231d 100644
--- a/resources/views/dashboard/users/profiles/heading.blade.php
+++ b/resources/views/dashboard/users/profiles/heading.blade.php
@@ -11,7 +11,7 @@
Kembali
-@elseif ($page === 'show-user')
+@elseif (in_array($page, ['show-user', 'process']))
Profile Pengguna
diff --git a/resources/views/dashboard/users/profiles/journalists.blade.php b/resources/views/dashboard/users/profiles/journalists.blade.php
index 364061f..f366bae 100644
--- a/resources/views/dashboard/users/profiles/journalists.blade.php
+++ b/resources/views/dashboard/users/profiles/journalists.blade.php
@@ -108,6 +108,7 @@
+ @include('dashboard.users.profiles.action')
diff --git a/resources/views/dashboard/users/profiles/media.blade.php b/resources/views/dashboard/users/profiles/media.blade.php
index e3781d2..0ced3d5 100644
--- a/resources/views/dashboard/users/profiles/media.blade.php
+++ b/resources/views/dashboard/users/profiles/media.blade.php
@@ -95,6 +95,7 @@
+ @include('dashboard.users.profiles.action')
diff --git a/resources/views/dashboard/users/profiles/tabs.blade.php b/resources/views/dashboard/users/profiles/tabs.blade.php
index a90345c..53d1577 100644
--- a/resources/views/dashboard/users/profiles/tabs.blade.php
+++ b/resources/views/dashboard/users/profiles/tabs.blade.php
@@ -38,4 +38,21 @@
Aktivitas Login
+@elseif ($page === 'process' && isset($process))
+
@endif
diff --git a/resources/views/partials/app/datatable.blade.php b/resources/views/partials/app/datatable.blade.php
index 69efc1c..46a5d3d 100644
--- a/resources/views/partials/app/datatable.blade.php
+++ b/resources/views/partials/app/datatable.blade.php
@@ -900,7 +900,14 @@
$('#usersTable').DataTable({
processing: true,
serverSide: true,
- ajax: '{{ route('dashboard.users.data', ["role" => $role]) }}',
+ ajax: {
+ url: '{{ route('dashboard.users.data') }}',
+ type: 'GET',
+ data: function(d) {
+ d.role = '{{ $role }}';
+ d.status = '{{ $status }}';
+ }
+ },
columns: [
{ data: 'DT_RowIndex', name: 'DT_RowIndex', orderable: false, searchable: false },
{ data: 'name', name: 'name' },
diff --git a/routes/web.php b/routes/web.php
index e9a099f..26e37d6 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -464,8 +464,10 @@
Route::controller(UserController::class)->group(function(){
Route::middleware(['role:1'])->group(function(){
Route::get('/', 'index')->name('index');
+ Route::post('/filter', 'filter')->name('filter');
Route::get('/create', 'create')->name('create');
Route::post('/', 'store')->name('store');
+ Route::get('/{id}/{type}/{process}/process', 'process')->name('process');
Route::get('/{id}/{type}/show', 'show')->name('show');
Route::get('/{id}/edit', 'edit')->name('edit');
Route::put('/{id}', 'update')->name('update');