user()->business_id) ->when(request('status'), function ($query) { $query->where('status', request('status') == 'active' ? 1 : 0); }) ->latest()->get(); return response()->json([ 'message' => __('Data fetched successfully.'), 'data' => $data, ]); } public function store(Request $request) { $request->validate([ 'name' => 'required|in:Morning,Day,Evening,Night', 'start_time' => 'required|date_format:H:i', 'end_time' => 'required|date_format:H:i', 'start_break_time' => 'nullable|date_format:H:i', 'end_break_time' => 'nullable|date_format:H:i', 'break_status' => 'nullable|in:yes,no', ]); if ($request->start_break_time && $request->end_break_time) { $startTime = Carbon::parse($request->input('start_break_time')); $endTime = Carbon::parse($request->input('end_break_time')); $hoursDiff = $endTime->diffInHours($startTime); $minutesDiff = $endTime->diffInMinutes($startTime) % 60; $breakTime = sprintf('%02d:%02d', $hoursDiff, $minutesDiff); } else { $breakTime = null; } $data = Shift::create($request->except('break_time', 'business_id') + [ 'business_id' => auth()->user()->business_id, 'break_time' => $breakTime, ]); return response()->json([ 'message' => __('Data saved successfully.'), 'data' => $data, ]); } public function show($id) { $data = Shift::where('business_id', auth()->user()->business_id)->findOrFail($id); return response()->json([ 'message' => __('Data fetched successfully.'), 'data' => $data, ]); } public function update(Request $request, $id) { $shift = Shift::where('business_id', auth()->user()->business_id)->find($id); if (!$shift) { return response()->json([ 'message' => __('Data not found.'), ], 404); } $request->validate([ 'name' => 'required|in:Morning,Day,Evening,Night', 'start_time' => 'required|date_format:H:i', 'end_time' => 'required|date_format:H:i', 'start_break_time' => 'nullable|date_format:H:i', 'end_break_time' => 'nullable|date_format:H:i', 'break_status' => 'nullable|in:yes,no', ]); if ($request->start_break_time && $request->end_break_time) { $startTime = Carbon::parse($request->input('start_break_time')); $endTime = Carbon::parse($request->input('end_break_time')); $hoursDiff = $endTime->diffInHours($startTime); $minutesDiff = $endTime->diffInMinutes($startTime) % 60; $breakTime = sprintf('%02d:%02d', $hoursDiff, $minutesDiff); } else { $breakTime = null; } $shift->update($request->except('break_time', 'business_id') + [ 'break_time' => $breakTime, ]); return response()->json([ 'message' => __('Data saved successfully.'), 'data' => $shift, ]); } public function destroy($id) { $shift = Shift::where('business_id', auth()->user()->business_id) ->find($id); if (!$shift) { return response()->json([ 'message' => __('Data not found.'), ], 404); } $shift->delete(); return response()->json([ 'message' => __('Data deleted successfully.'), ]); } public function status(Request $request, $id) { $request->validate([ 'status' => 'required|boolean' ]); $shift = Shift::where('business_id', auth()->user()->business_id)->find($id); if (!$shift) { return response()->json([ 'message' => 'Shift not found.' ], 404); } $shift->update(['status' => $request->status]); return response()->json([ 'message' => 'Shift status updated successfully.', 'data' => $shift ]); } }