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