From eb6d8c425681e7625590dd3b8029e7f7fba206e9 Mon Sep 17 00:00:00 2001 From: Novy San87 Date: Thu, 6 Aug 2026 21:44:52 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20Data=20Wali=20Murid=20terpisah=20?= =?UTF-8?q?=E2=80=94=20halaman=20khusus=20(daftar=20akun=20+=20anak=20+=20?= =?UTF-8?q?reset=20password),=20user=20internal=20difilter=20dari=20role?= =?UTF-8?q?=20parent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Admin/UserController.php | 2 +- .../Controllers/Admin/WaliMuridController.php | 39 ++++ resources/views/layouts/app.blade.php | 1 + resources/views/parents/index.blade.php | 172 ++++++++++++++++++ routes/web.php | 1 + 5 files changed, 214 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Admin/WaliMuridController.php create mode 100644 resources/views/parents/index.blade.php diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 4f2a6f3..dc6526e 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -16,7 +16,7 @@ class UserController extends Controller { public function index(Request $request): View { - $query = User::query(); + $query = User::query()->where('role', '!=', 'parent'); // wali murid punya halaman sendiri if ($request->filled('search')) { $search = $request->search; diff --git a/app/Http/Controllers/Admin/WaliMuridController.php b/app/Http/Controllers/Admin/WaliMuridController.php new file mode 100644 index 0000000..59305a0 --- /dev/null +++ b/app/Http/Controllers/Admin/WaliMuridController.php @@ -0,0 +1,39 @@ +where('role', 'parent') + ->with(['parentStudents' => fn ($q) => $q->with('student:id,nisn,full_name,class_name')]); + + if ($request->filled('search')) { + $search = $request->search; + $query->where(function ($q) use ($search) { + $q->where('name', 'like', "%{$search}%") + ->orWhere('username', 'like', "%{$search}%") + ->orWhere('phone', 'like', "%{$search}%"); + }); + } + + $users = $query->orderByDesc('created_at')->paginate(20); + + $total = User::where('role', 'parent')->count(); + $totalAktif = User::where('role', 'parent') + ->whereHas('parentStudents', fn ($q) => $q->where('status', 'active')) + ->count(); + + return view('parents.index', compact('users', 'total', 'totalAktif')); + } +} diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 30fe271..d64aef1 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -198,6 +198,7 @@ Riwayat Poin @endcanPermission @canPermission('parents-verify') + Data Wali Murid Verifikasi Wali @endcanPermission @canPermission('manage-school-info') diff --git a/resources/views/parents/index.blade.php b/resources/views/parents/index.blade.php new file mode 100644 index 0000000..e90333f --- /dev/null +++ b/resources/views/parents/index.blade.php @@ -0,0 +1,172 @@ +@extends('layouts.app') + +@section('title', 'Data Wali Murid') + +@section('content') +
+ + {{-- Header --}} +
+
+
+
+
+ +
+

Data Wali Murid

+

Akun orang tua/wali pengguna aplikasi SiMURID (terpisah dari user internal)

+
+
+
+ + {{ $total }} akun + + + {{ $totalAktif }} aktif + +
+
+
+ + @if(session('success')) +
+ {{ session('success') }} +
+ @endif + + @if(session('error')) +
+ {{ session('error') }} +
+ @endif + + {{-- Daftar wali --}} +
+
+

Daftar Akun Wali Murid

+
+ + +
+
+ + @if($users->isEmpty()) +
+ +

Belum ada akun wali murid terdaftar.

+
+ @else +
+ + + + + + + + + + + + @foreach($users as $user) + + + + + + + + @endforeach + +
WaliNomor HPPutra/Putri TertautTerdaftarAksi
+
+
+ {{ strtoupper(substr($user->name, 0, 1)) }} +
+
+

{{ $user->name }}

+

{{ $user->username }}

+
+
+
{{ $user->phone ?? '-' }} + @if($user->parentStudents->isEmpty()) + Belum ada tautan + @else +
+ @foreach($user->parentStudents as $link) + + + {{ $link->student?->full_name ?? 'Siswa' }} + @if($link->status === 'active') + Aktif + @elseif($link->status === 'pending') + Menunggu + @else + Ditolak + @endif + + @endforeach +
+ @endif +
{{ $user->created_at?->format('d M Y') }} + +
+
+
+ {{ $users->links() }} +
+ @endif +
+
+ +@push('scripts') + +@endpush +@endsection diff --git a/routes/web.php b/routes/web.php index 50892bf..a9dfcb3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -141,6 +141,7 @@ Route::middleware('auth')->group(function () { }); Route::middleware('permission:parents-verify')->group(function () { + Route::get('/parents', [\App\Http\Controllers\Admin\WaliMuridController::class, 'index'])->name('parents.index'); Route::get('/parents/verification', [\App\Http\Controllers\Admin\ParentVerificationController::class, 'index'])->name('parents.verification'); Route::post('/parents/verification/{link}/approve', [\App\Http\Controllers\Admin\ParentVerificationController::class, 'approve'])->name('parents.verification.approve'); Route::post('/parents/verification/{link}/reject', [\App\Http\Controllers\Admin\ParentVerificationController::class, 'reject'])->name('parents.verification.reject');