diff --git a/app/Http/Controllers/Admin/AdminStaffController.php b/app/Http/Controllers/Admin/AdminStaffController.php
index 020239e..f7d8ddb 100644
--- a/app/Http/Controllers/Admin/AdminStaffController.php
+++ b/app/Http/Controllers/Admin/AdminStaffController.php
@@ -55,6 +55,7 @@ class AdminStaffController extends Controller
DB::beginTransaction();
try {
+ // 1️⃣ Create staff WITHOUT employee_id (ID not available yet)
$admin = Admin::create([
'name' => $request->name,
'email' => $request->email,
@@ -69,23 +70,33 @@ class AdminStaffController extends Controller
'status' => $request->status,
'additional_info' => $request->additional_info,
- 'username' => $request->username,
+ // username may be NULL here
+ 'username' => $request->username ?: null,
'password' => Hash::make($request->password),
'type' => 'staff',
]);
- // Generate EMPLOYEE ID using admin ID (safe)
+ // 2️⃣ Generate EMPLOYEE ID
$employeeId = 'EMP' . str_pad($admin->id, 4, '0', STR_PAD_LEFT);
- $admin->update(['employee_id' => $employeeId]);
- // Assign permissions (if any)
+ // 3️⃣ Auto-generate username if left blank
+ $username = $request->username ?: strtolower($employeeId);
+
+ // 4️⃣ Update employee_id + username together
+ $admin->update([
+ 'employee_id' => $employeeId,
+ 'username' => $username,
+ ]);
+
+ // 5️⃣ Assign permissions (if any)
if ($request->permissions) {
$admin->givePermissionTo($request->permissions);
}
DB::commit();
- return redirect()->route('admin.staff.index')
+ return redirect()
+ ->route('admin.staff.index')
->with('success', 'Staff created successfully.');
} catch (\Exception $e) {
@@ -94,6 +105,7 @@ class AdminStaffController extends Controller
}
}
+
public function edit($id)
{
$staff = Admin::where('type', 'staff')->findOrFail($id);
diff --git a/app/Http/Controllers/Admin/UserRequestController.php b/app/Http/Controllers/Admin/UserRequestController.php
index e09c56f..eb977c6 100644
--- a/app/Http/Controllers/Admin/UserRequestController.php
+++ b/app/Http/Controllers/Admin/UserRequestController.php
@@ -15,7 +15,12 @@ class UserRequestController extends Controller
public function index()
{
$requests = CustomerRequest::orderBy('id', 'desc')->get();
- return view('admin.requests', compact('requests'));
+ $pendingProfileUpdates = \App\Models\UpdateRequest::where('status', 'pending')->count();
+
+ return view('admin.requests', compact(
+ 'requests',
+ 'pendingProfileUpdates'
+ ));
}
// Approve user request
diff --git a/app/Models/Admin.php b/app/Models/Admin.php
index 118f371..c897aeb 100644
--- a/app/Models/Admin.php
+++ b/app/Models/Admin.php
@@ -18,7 +18,7 @@ class Admin extends Authenticatable
'name', 'email', 'password', 'username',
'phone', 'emergency_phone', 'address',
'role', 'department', 'designation', 'joining_date',
- 'status', 'additional_info', 'type', // admin/staff indicator
+ 'status', 'additional_info', 'type','employee_id', // admin/staff indicator
];
protected $hidden = [
diff --git a/public/invoices/invoice-INV-2025-000016.pdf b/public/invoices/invoice-INV-2025-000016.pdf
new file mode 100644
index 0000000..0a36ff8
Binary files /dev/null and b/public/invoices/invoice-INV-2025-000016.pdf differ
diff --git a/public/invoices/invoice-INV-2025-000030.pdf b/public/invoices/invoice-INV-2025-000030.pdf
index 2f12f72..593eead 100644
Binary files a/public/invoices/invoice-INV-2025-000030.pdf and b/public/invoices/invoice-INV-2025-000030.pdf differ
diff --git a/resources/views/admin/layouts/app.blade.php b/resources/views/admin/layouts/app.blade.php
index 7f63cc7..04b1698 100644
--- a/resources/views/admin/layouts/app.blade.php
+++ b/resources/views/admin/layouts/app.blade.php
@@ -201,7 +201,7 @@
background: #fff;
padding: 10px 18px !important;
position: relative;
- height: 48px;
+ height: 65px;
width: 100%;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
@@ -221,6 +221,32 @@
font-size: 1.06rem;
font-weight: 500;
}
+
+ /* ================================
+ HEADER NOTIFICATION BADGE FIX
+================================ */
+
+/* Target ONLY badge inside bell icon */
+header .bi-bell {
+ position: relative;
+}
+
+/* Override broken global badge styles */
+header .bi-bell .badge {
+ width: 22px !important;
+ height: 22px !important;
+ min-width: 22px !important;
+ padding: 0 !important;
+ font-size: 12px !important;
+ line-height: 22px !important;
+ border-radius: 50% !important;
+ display: inline-flex !important;
+ align-items: center;
+ justify-content: center;
+ animation: none !important;
+ box-shadow: 0 0 0 2px #ffffff;
+}
+
@@ -285,12 +311,12 @@
@endcan
- {{-- Profile Update Requests --}}
+
{{-- Staff (NO PERMISSION REQUIRED) --}}
diff --git a/resources/views/admin/profile_update_requests.blade.php b/resources/views/admin/profile_update_requests.blade.php
index 4797665..e6938ce 100644
--- a/resources/views/admin/profile_update_requests.blade.php
+++ b/resources/views/admin/profile_update_requests.blade.php
@@ -5,107 +5,207 @@
@section('content')
Profile Update Requests ({{ $total }})
+
+@foreach($currentItems as $index => $req)
+@php
+ $user = $req->user;
+ $newData = is_array($req->data) ? $req->data : json_decode($req->data, true);
+@endphp
+
+
+ {{ $user->email }}
+ ID: {{ $user->customer_id }}
+ User Requests (Total: {{ $total }})
-
- User Requests (Total: {{ $total }})
+
+ @can('request.update_profile')
+
+
+ Profile Update Requests
+
+ @if($pendingProfileUpdates > 0)
+
+ {{ $pendingProfileUpdates }}
+
+ @endif
+
+ @endcan
+
+