model->with("paramedicLevels")->paginate(10); return view($this->bladePath . ".index", compact("data")); } public function stored($model) { event(new ProjectSaved($model)); } public function edit($id = null, Request $request, FormBuilder $formBuilder) { $vo = (new Project())->with("paramedicLevels")->find($id ?: $request->id); $form = $formBuilder->create($this->formClass, [ "method" => "POST", "id" => "fm", "url" => url($this->urlPrefix . "/update/" . $vo->id), "class" => "form form-horizontal validate-form", "model" => $vo ]); $form->add("_previous", "hidden", ["value" => (url()->previous())]); return view($this->bladePath . ".create", compact("form")); } public function updated($model) { event(new ProjectSaved($model)); } public function beds($id) { $project = (new Project())->with(["buildings" => function ($query) { $query->with(["areas" => function ($query) { $query->with("rooms"); }]); }])->find($id); $data = (new Bed())->where("project_id", $id)->orderBy("id", "desc")->with(["project", "building", "area", "room"])->paginate(10); return view($this->bladePath . ".beds", compact("project", "data")); } public function createSub(Request $request) { switch ($request->type) { case "project": $data = [ "project_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Building())->create($data); break; case "building": $parent = Building::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Area())->create($data); break; case "area": $parent = Area::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $parent->building_id, "area_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Room())->create($data); break; case "room": $parent = Room::find($request->id); $data = [ "project_id" => $parent->project_id, "building_id" => $parent->building_id, "area_id" => $parent->area_id, "room_id" => $request->id, "name" => $request->name, "myindex" => $request->myindex ]; $res = (new Bed())->create($data); break; default: return $this->error("不正确的类型"); } return $this->success("添加成功!", '', $res); } public function editDepartment(Request $request) { $data = [ "name" => $request->name, "myindex" => $request->myindex ]; switch ($request->type) { case "building": $res = (new Building())->find($request->id)->update($data); break; case "area": $res = (new Area())->find($request->id)->update($data); break; case "room": $res = (new Room())->find($request->id)->update($data); break; case "bed": $res = (new Bed())->find($request->id)->update($data); break; default: return $this->error("不正确的类型"); } return $this->success($res); } public function deleteDepartment(Request $request) { switch ($request->type) { case "building": $vo = (new Building())->find($request->id); break; case "area": $vo = (new Area())->find($request->id); break; case "room": $vo = (new Room())->find($request->id); break; case "bed": $vo = (new Bed())->find($request->id); break; default: return $this->error("不正确的类型"); } $res = $vo->delete(); if ($res) { return $this->success("删除成功"); } else { return $this->success("删除失败"); } } function exportBeds(Request $request) { $beds = Bed::with(["area", "building", "room"]) ->whereHas("area") ->whereHas("building") ->whereHas("room") ->where("project_id", $request->project_id) ->orderBy("building_id") ->orderBy("area_id") ->orderBy("room_id") ->get(); $data = []; foreach ($beds as $bed) { $data[] = [ "楼栋" => $bed->building ? $bed->building->name : "", "病区" => $bed->area ? $bed->area->name : "", "病房" => $bed->room ? $bed->room->name : "", "床号" => $bed->name, ]; } $data = collect($data); return Excel::download(new CommonExport($data), "beds.xlsx"); } }