first commit

This commit is contained in:
2026-05-22 20:46:29 +08:00
commit b04f87f2b0
121 changed files with 14851 additions and 0 deletions

View File

@@ -0,0 +1,182 @@
@extends('layouts.app')
@push('styles')
<link rel="stylesheet" href="{{ asset('css/adminHeader.css') }}">
<link rel="stylesheet" href="{{ asset('css/usersAdmin.css') }}">
@endpush
@section('content')
<div class="container">
{{-- Header --}}
<div class="admin-header-box">
<div>
<h4>Pengurusan Pengguna</h4>
<p>Senarai pengguna dalam sistem berserta nombor pekerja, jabatan, dan role.</p>
</div>
<button type="button" class="btn btn-sm btn-light px-3 fw-bold text-primary" data-bs-toggle="modal" data-bs-target="#addUserModal">
<i class="bi bi-plus-lg"></i> Tambah Pengguna
</button>
</div>
@if(session('success'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
<i class="bi bi-check-circle me-2"></i>{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
@endif
{{-- Search Form --}}
<form method="GET" action="{{ route('admin.users.index') }}" class="mb-4">
<div class="input-group shadow-sm">
<input type="text" name="search" value="{{ request('search') }}" class="form-control border-end-0" placeholder="Cari nama, nombor pekerja atau jabatan...">
<button class="btn btn-primary" type="submit"><i class="bi bi-search"></i></button>
<a href="{{ route('admin.users.index') }}" class="btn btn-outline-secondary"><i class="bi bi-arrow-counterclockwise"></i></a>
</div>
</form>
<div class="card user-table-card">
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead class="table-light">
<tr>
<th class="px-4">ID</th>
<th>Nama</th>
<th>Nombor Pekerja</th>
<th>Jabatan</th>
<th>Role</th>
<th class="text-center">Tindakan</th>
</tr>
</thead>
<tbody>
@forelse($users as $user)
<tr>
<td class="px-4">{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->no_pekerja }}</td>
<td>{{ $user->jabatan ?? 'N/A' }}</td>
<td>
<span class="badge {{ $user->role == 'admin' ? 'badge-admin' : 'badge-staff' }}">
{{ ucfirst($user->role) }}
</span>
</td>
<td class="text-center">
<button class="btn btn-sm btn-warning me-1" data-bs-toggle="modal" data-bs-target="#editUser{{ $user->id }}">
<i class="bi bi-pencil"></i>
</button>
<form action="{{ route('admin.users.delete', $user->id) }}" method="POST" class="d-inline">
@csrf
@method('DELETE')
<button class="btn btn-sm btn-danger" onclick="return confirm('Hapus pengguna ini?')">
<i class="bi bi-trash"></i>
</button>
</form>
</td>
</tr>
{{-- Edit Modal --}}
<div class="modal fade" id="editUser{{ $user->id }}" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<form method="POST" action="{{ route('admin.users.update', $user->id) }}">
@csrf
@method('PUT')
<div class="modal-header">
<h5 class="modal-title">Edit Pengguna</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label class="form-label">Nama</label>
<input type="text" name="name" class="form-control" value="{{ $user->name }}" required>
</div>
<div class="mb-3">
<label class="form-label">Nombor Pekerja</label>
<input type="text" name="no_pekerja" class="form-control" value="{{ $user->no_pekerja }}" required>
</div>
<div class="mb-3">
<label class="form-label">Jabatan</label>
<input type="text" name="jabatan" class="form-control" value="{{ $user->jabatan }}" placeholder="Contoh: IT, HR, Kewangan" required>
</div>
<div class="mb-3">
<label class="form-label">Password</label>
<input type="password" name="password" class="form-control" placeholder="Kosongkan jika tidak mahu tukar">
<small class="text-muted">Biarkan kosong untuk kekalkan password semasa</small>
</div>
<div class="mb-3">
<label class="form-label">Role</label>
<select name="role" class="form-select" required>
<option value="admin" {{ $user->role == 'admin' ? 'selected' : '' }}>Admin</option>
<option value="staff" {{ $user->role == 'staff' ? 'selected' : '' }}>Staff</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
<button type="submit" class="btn btn-primary">Simpan Perubahan</button>
</div>
</form>
</div>
</div>
</div>
@empty
<tr>
<td colspan="6" class="text-center py-5">
<i class="bi bi-people text-muted" style="font-size: 3rem;"></i>
<p class="text-muted mt-3 mb-0">Tiada pengguna dijumpai</p>
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
{{-- Add User Modal --}}
<div class="modal fade" id="addUserModal" tabindex="-1" aria-labelledby="addUserModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="POST" action="{{ route('admin.users.store') }}">
@csrf
<div class="modal-header">
<h5 class="modal-title" id="addUserModalLabel">Tambah Pengguna Baharu</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label for="name" class="form-label">Nama</label>
<input type="text" id="name" name="name" class="form-control" placeholder="Nama penuh" required>
</div>
<div class="mb-3">
<label for="no_pekerja" class="form-label">Nombor Pekerja</label>
<input type="text" id="no_pekerja" name="no_pekerja" class="form-control" placeholder="Nombor pekerja" required>
</div>
<div class="mb-3">
<label for="jabatan" class="form-label">Jabatan</label>
<input type="text" id="jabatan" name="jabatan" class="form-control" placeholder="Contoh: IT, HR, Kewangan" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" id="password" name="password" class="form-control" placeholder="Minimum 6 aksara" required>
<small class="text-muted">Minimum 6 aksara</small>
</div>
<div class="mb-3">
<label for="role" class="form-label">Role</label>
<select id="role" name="role" class="form-select" required>
<option value="" disabled selected>Pilih role</option>
<option value="admin">Admin</option>
<option value="staff">Staff</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
<button type="submit" class="btn btn-success">Simpan</button>
</div>
</form>
</div>
</div>
</div>
@endsection