Updated ERP with new modules and features
This commit is contained in:
64
app/Http/Controllers/ManagementDashboardController.php
Normal file
64
app/Http/Controllers/ManagementDashboardController.php
Normal 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."]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user