public function index() { switch ($this->user->role->name) { case 'admin': { $orders = Order::with('user')->orderBy('created_at', 'desc'); if (Input::has('search')) { $wrappedSearchString = '%' . Input::get('search') . '%'; $orders->where('serial', 'like', $wrappedSearchString) ->orWhereHas('user', function($query) use ($wrappedSearchString) { $query->where('first_name', 'like', $wrappedSearchString) ->orWhere('last_name', 'like', $wrappedSearchString) ->orWhere('middle_name', 'like', $wrappedSearchString) ->orWhere('address', 'like', $wrappedSearchString); }); } $fields = ['status', 'lab_id', 'analysis_id', 'creature_id', 'user_id']; foreach ($fields as $field) { if (Input::has($field)) { $orders->where($field, Input::get($field)); } } $orders = $orders->get(); Input::flash(); return view('private.admin.orders.index')->withOrders($orders) ->withLabs(Lab::all()) ->withAnalyses(Analysis::all()) ->withCreatures(Creature::all()) ->withUsers(User::all()); } case 'customer': { $orders = Order::with(['analysis', 'creature']) ->where('user_id', $this->user->id) ->orderBy('created_at', 'desc') ->get(); return view('private.customer.orders.index')->withOrders($orders); } case 'lab-manager': { $orders = Order::where('lab_id', $this->user->lab->id)->orderBy('created_at', 'desc'); if (Input::has('search')) { $wrappedSearchString = '%' . Input::get('search') . '%'; $orders->whereHas('analysis', function($query) use ($wrappedSearchString) { $query->where('name', 'like', $wrappedSearchString); })->orWhereHas('creature', function($query) use ($wrappedSearchString) { $query->where('name', 'like', $wrappedSearchString); })->orWhere('serial', 'like', $wrappedSearchString); } $orders = $orders->get(); Input::flash(); return view('private.lab-manager.orders.index')->withOrders($orders); } } }