Exemplo n.º 1
0
 /**
  * 返回DM主页
  */
 public function home(Request $request)
 {
     $users = Auth::user();
     //        $features = DB::table('users')
     //            ->join('hasfeatures', 'users.id', '=', 'hasfeatures.user_id')
     //            ->join('features', 'hasfeatures.feature_id', '=', 'features.id')
     //            ->select('features.id', 'features.href', 'features.btnclass', 'features.innerhtml')
     //            ->where('users.id', '=', $users->id)
     //            ->get();
     // 權限
     //        $doctor = ($users->position == '门诊医生' || $users->position == '住院医生') ? 1 : 0;
     $chiefs = array("院长", "副院长", "病区主任");
     $positions = array("院长", "副院长", "病区主任", "门诊医生", "住院医生");
     if (in_array($users->position, $positions)) {
         $doctor = 1;
     } else {
         $doctor = 0;
     }
     if ($users->position == null || $users->position == '患者') {
         // 患者登入
         //            return view('dm.personal', compact('doctor', 'users', 'features'));
         return Redirect::route("bdata");
     } else {
         $search = urldecode($request->search);
         $category = $request->category;
         if ($search) {
             $categoryList = [1 => "buildcases.personid", 2 => "buildcases.cardid", 3 => "users.name"];
             $field = in_array($category, array_keys($categoryList)) ? $categoryList[$category] : "other";
             if ($field != "other") {
                 $results = DB::table('buildcases')->leftjoin('users', 'users.pid', '=', 'buildcases.personid')->select('buildcases.id', 'buildcases.doctor', 'buildcases.duty', 'buildcases.nurse', 'buildcases.dietitian', 'buildcases.personid', 'buildcases.cardid', 'buildcases.build_at', 'buildcases.nurse_status', 'buildcases.duty_status', 'buildcases.dietitian', 'buildcases.dietitian_status', 'users.name')->where($field, 'like', '%' . $search . '%')->where(function ($query) {
                     $users = Auth::user();
                     $chiefs = array("院长", "副院长", "病区主任");
                     if (!in_array($users->position, $chiefs)) {
                         $query->where('doctor', '=', $users->id)->orWhere('duty', '=', $users->id)->orWhere('nurse', '=', $users->id)->orWhere('dietitian', '=', $users->id);
                     }
                 })->orderBy('build_at', 'desc');
             } else {
                 $results = DB::table('buildcases')->leftjoin('users', 'users.pid', '=', 'buildcases.personid')->select('buildcases.id', 'buildcases.doctor', 'buildcases.duty', 'buildcases.nurse', 'buildcases.dietitian', 'buildcases.personid', 'buildcases.cardid', 'buildcases.build_at', 'buildcases.nurse_status', 'buildcases.duty_status', 'buildcases.dietitian', 'buildcases.dietitian_status', 'users.name');
                 if (!in_array($users->position, $chiefs)) {
                     $results->where('doctor', '=', $users->id)->orWhere('duty', '=', $users->id)->orWhere('nurse', '=', $users->id)->orWhere('dietitian', '=', $users->id);
                 }
                 $results->orderBy('build_at', 'desc');
             }
         } else {
             $results = DB::table('buildcases')->leftjoin('users', 'users.pid', '=', 'buildcases.personid')->select('buildcases.id', 'buildcases.doctor', 'buildcases.duty', 'buildcases.nurse', 'buildcases.dietitian', 'buildcases.personid', 'buildcases.cardid', 'buildcases.build_at', 'buildcases.nurse_status', 'buildcases.duty_status', 'buildcases.dietitian', 'buildcases.dietitian_status', 'users.name');
             if (!in_array($users->position, $chiefs)) {
                 $results->where('doctor', '=', $users->id)->orWhere('duty', '=', $users->id)->orWhere('nurse', '=', $users->id)->orWhere('dietitian', '=', $users->id);
             }
             $results->orderBy('build_at', 'desc');
         }
         $count = $results->count();
         $buildcases = $results->paginate(10)->appends(['search' => $search, 'category' => $category]);
         $soa_nurse_classes = SoaNurseClass::orderBy('soa_nurse_class_pk')->get();
         return view('dm.home', compact('doctor', 'users', 'count', 'buildcases', 'search', 'category', 'soa_nurse_classes'));
     }
 }