authorize('shifts.index'); $lists = Shift::with(['doctor']) ->when(isset($request->search) , function ($query) use ($request){ $query->where(function ($q) use ($request) { $q->whereHas('doctor', function ($doctorQuery) use ($request) { $doctorQuery->where('fullname', 'LIKE', "%{$request->search}%"); })->orWhere('id', $request->search); }); }) ->when(isset($request->day_of_week) && $request->day_of_week != 'همه روزها', function ($query) use ($request) { $query->whereIn('day_of_week' , (array) $request->day_of_week); }) ->when(isset($request->status) && $request->status != 'همه وضعیت ها', function ($query) use ($request) { $query->where('is_active' , $request->status == 'فعال'); }) ->when(isset($request->occupancy) && $request->occupancy != 'همه شیفت ها', function ($query) use ($request) { $request->occupancy == 'آزاد' ? $query->whereNull('user_id') : $query->whereNotNull('user_id'); }) ->latest() ->paginate(20) ->withQueryString() ->onEachSide(1); $shifts = ShiftResource::collection($lists); return Inertia::admin('Shifts/index', [ 'shifts' => $shifts, 'search' => $request->search, 'day_of_week' => $request->day_of_week, 'status' => $request->status, 'occupancy' => $request->occupancy, 'permissions_edit' => auth()->user()->can('shifts.edit') ? false : true, 'permissions_delete' => auth()->user()->can('shifts.delete') ? false : true, ]); } public function create() { $this->authorize('shifts.create'); return Inertia::admin('Shifts/create_and_edit'); } public function store(ShiftRequest $request) { $this->authorize('shifts.create'); Shift::create([ 'user_id' => $request->user_id, 'day_of_week' => $request->day_of_week, 'date' => $request->date, 'start_time' => $request->start_time, 'end_time' => $request->end_time, 'is_active' => $request->is_active, 'created_by' => auth()->id(), ]); session()->flash('success', 'شیفت با موفقیت ثبت شد'); return response(null , 200); } public function show(Shift $shift) { // } public function edit(Shift $shift) { $this->authorize('shifts.edit'); return Inertia::admin('Shifts/create_and_edit', [ 'shift' => ShiftResource::make($shift->load('doctor'))->resolve(), 'is_edit' => true, ]); } public function update(ShiftRequest $request, Shift $shift) { $this->authorize('shifts.edit'); $shift->update([ 'user_id' => $request->user_id, 'day_of_week' => $request->day_of_week, 'date' => $request->date, 'start_time' => $request->start_time, 'end_time' => $request->end_time, 'is_active' => $request->is_active, ]); session()->flash('success', 'شیفت با موفقیت بروزرسانی شد'); return response(null , 200); } public function destroy(Shift $shift) { $this->authorize('shifts.delete'); $shift->delete(); session()->flash('success', 'شیفت با موفقیت حذف شد'); return response(null , 200); } public function calendarData() { $this->authorize('shifts.index'); $lists = Shift::with('doctor')->get(); return response()->json([ 'success' => true, 'data' => ShiftResource::collection($lists), ]); } public function bulkDelete(Request $request) { $this->authorize('shifts.delete'); Shift::destroy($request->ids); session()->flash('success', 'شیفت های مورد نظر با موفقیت حذف شدند.'); return response(null , 200); } }