when($request->has('employee_id'), function ($query) use ($request) { $query->where('employee_id', $request->employee_id); }) ->when($request->has('date'), function ($query) use ($request) { $query->where('date', $request->date); }) ->get(); return response()->json($availabilities); } public function store(Request $request) { $validated = $request->validate([ 'employee_id' => 'required|exists:users,id', 'date' => 'required|date', 'start_time' => 'required|date_format:H:i:s', 'end_time' => 'required|date_format:H:i:s|after:start_time', 'is_available' => 'boolean' ]); $availability = EmployeeAvailability::create($validated); return response()->json($availability, 201); } public function bulkStore(Request $request) { $validated = $request->validate([ 'employee_id' => 'required|exists:users,id', 'date' => 'required|date', 'intervals' => 'required|array' ]); foreach ($request->intervals as $interval) { EmployeeAvailability::create([ 'employee_id' => $request->employee_id, 'date' => $request->date, 'start_time' => $interval['start'], 'end_time' => $interval['end'], 'is_available' => true ]); } return response()->json(['message' => 'Расписание добавлено']); } public function destroy($id) { $availability = EmployeeAvailability::findOrFail($id); $availability->delete(); return response()->json(['message' => 'Слот удалён']); } // ✅ Единственный метод publicAvailability public function publicAvailability(Request $request) { $serviceId = $request->query('service_id'); $date = $request->query('date'); if (!$serviceId || !$date) { return response()->json([]); } $availabilities = EmployeeAvailability::where('date', $date) ->where('is_available', true) ->get(); $slots = []; foreach ($availabilities as $avail) { $slots[] = [ 'employee_id' => $avail->employee_id, 'start' => substr($avail->start_time, 0, 5), 'end' => substr($avail->end_time, 0, 5), ]; } return response()->json($slots); } }