Updated ERP with new modules and features

This commit is contained in:
Kwesi Banson
2026-09-22 08:06:31 +00:00
parent 71bc103fee
commit 5174e82e51
53 changed files with 3706 additions and 203 deletions

View File

@@ -0,0 +1,64 @@
<?php
namespace App\Http\Controllers;
use App\Models\StaffMember;
use App\Models\LeaveRequest;
use Illuminate\Http\Request;
use Carbon\Carbon;
class ManagementDashboardController extends Controller
{
public function index(Request $request)
{
// 1. Fetch Pending Leaves (Adjust status/model names to match your schema)
$pendingLeaves = LeaveRequest::with('staff')
->where('status', 'Pending')
->orderBy('created_at', 'asc')
->get();
$startDate = $request->input('start_date', Carbon::now()->startOfMonth()->format('Y-m-d'));
$endDate = $request->input('end_date', Carbon::now()->endOfMonth()->format('Y-m-d'));
$staffReports = StaffMember::withCount(['dailyReports' => function ($query) use ($startDate, $endDate) {
$query->whereBetween('report_date', [$startDate, $endDate]);
}])
->orderBy('name')
->get();
return view('management.index', compact('pendingLeaves', 'staffReports', 'startDate', 'endDate'));
}
public function updateLeaveStatus(Request $request, $id)
{
$request->validate(['status' => 'required|in:Approved,Rejected']);
$leave = LeaveRequest::findOrFail($id);
if ($request['status'] === 'Approved' && $leave->status !== 'Approved') {
if ($leave->leave_type === 'Annual') {
$staff = $leave->staff;
$staff->annual_leave_balance -= $leave->total_days;
$staff->save();
}
}
if ($request['status'] === 'Rejected' && $leave->status === 'Rejected') {
if ($leave->leave_type === 'Annual') {
$staff = $leave->staff;
$staff->annual_leave_balance += $leave->total_days;
$staff->save();
}
}
$leave->update([
'status' => strtoupper($request['status']),
'admin_remarks' => 'N/A',
'approved_by' => auth()->id(),
]);
// $leave->update(['status' => $request->status]);
return response()->json(['success' => true, 'message' => "Leave request {$request->status} successfully."]);
}
}