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);
            }
        }
	}