employeeService = $employeeService; } public function index(Request $request) { $user = $request->user(); $overtimeRequests = DB::table('overtime_applications') ->where('user_id', $user->id) ->latest() ->get() ->map(function ($ot) { return [ 'id' => $ot->id, 'date' => $ot->date ?? date('Y-m-d'), 'hours' => (float)($ot->requested_hours ?? 0), 'requested_hours' => (float)($ot->requested_hours ?? 0), 'approved_hours' => $ot->approved_hours ? (float)$ot->approved_hours : null, 'reason' => $ot->reason ?? 'Shift Extension', 'status' => $ot->status ?? 'pending', 'created_at' => $ot->created_at ?? date('Y-m-d H:i:s'), ]; }); return response()->json([ 'success' => true, 'data' => $overtimeRequests, 'message' => null, 'errors' => null, ]); } public function store(Request $request) { $request->validate([ 'date' => 'required|date', 'hours' => 'required|numeric|min:0.5|max:12', 'reason' => 'required|string', ]); $user = $request->user(); $id = DB::table('overtime_applications')->insertGetId([ 'user_id' => $user->id, 'date' => $request->date, 'requested_hours' => $request->hours, 'reason' => $request->reason, 'status' => 'pending', 'created_at' => now(), 'updated_at' => now(), ]); return response()->json([ 'success' => true, 'data' => [ 'id' => $id, 'date' => $request->date, 'hours' => (float)$request->hours, 'reason' => $request->reason, 'status' => 'pending', ], 'message' => 'Overtime application submitted successfully', 'errors' => null, ], 201); } public function suggest(Request $request) { $user = $request->user(); $employee = $this->employeeService->resolveEmployee($user); // Calculate database-based suggestions from employee branch & attendance history $recentPending = DB::table('overtime_applications') ->where('user_id', $user->id) ->where('date', '>=', date('Y-m-d')) ->pluck('date') ->toArray(); $suggestions = []; for ($i = 1; $i <= 3; $i++) { $date = date('Y-m-d', strtotime("+{$i} day")); if (!in_array($date, $recentPending)) { $suggestions[] = [ 'id' => $i, 'date' => $date, 'suggested_hours' => 2.0, 'reason' => 'Scheduled Shift Extension', ]; } } return response()->json([ 'success' => true, 'data' => $suggestions, 'message' => null, 'errors' => null, ]); } }