public function get_search_customer_products($user_id = false) { // Override group_id if its a search $user_id = \Input::get('user_id', $user_id); if ($user_id && \Sentry::user_exists((int) $user_id)) { $user = \Sentry::user((int) $user_id); } $items = \Order\Model_Order::find(function ($query) { if (isset($user)) { $query->where('user_id', $user->id); } //get customer only -- start $customer_list = \Sentry::user()->all('front'); $customer_id_list = array(); foreach ($customer_list as $customer) { array_push($customer_id_list, $customer['id']); } $query->where('user_id', 'in', $customer_id_list); //get customer only -- end $query->where('finished', '1'); $query->order_by('id', 'desc'); }); foreach (\Input::get() as $key => $value) { if (!empty($value) || $value == '0') { switch ($key) { case 'title': if ($value != 'customer_order_select') { foreach ($items as $number => $item) { $full_name = $item->first_name . ' ' . $item->last_name; if (stripos($item->company, $value) === false && stripos($item->id, $value) === false) { if (stripos($full_name, $value) === false) { unset($items[$number]); } } } } break; case 'email': foreach ($items as $number => $item) { if (stripos($item->email, $value) === false) { unset($items[$number]); } } break; case 'order_total_from': is_numeric($value) or $value == 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if (isset($item_details['total_price']) && $item_details['total_price'] < $value) { unset($items[$number]); } } break; case 'order_total_to': is_numeric($value) or $value == 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if (isset($item_details['total_price']) && $item_details['total_price'] > $value) { unset($items[$number]); } } break; case 'date_from': // convert format date to m/d/Y $parts = explode('/', $value); $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2]; if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at < $date) { unset($items[$number]); } } } break; case 'date_to': // convert format date to m/d/Y $parts = explode('/', $value); $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2]; if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at > $date) { unset($items[$number]); } } } break; case 'status': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->status, $value) === false) { unset($items[$number]); } } break; case 'tracking_no': foreach ($items as $number => $item) { if (!$value != '') { break; } if (stripos($item->tracking_no, $value) === false) { unset($items[$number]); } } break; case 'payment_method': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (!empty($item->last_payment)) { if ($item->last_payment->method != $value) { unset($items[$number]); } } } break; case 'user_group': foreach ($items as $number => $item) { if ($value == 'false') { break; } if ($item->user_id && \Sentry::user_exists((int) $item->user_id)) { $user = \Sentry::user((int) $item->user_id); if ($user->in_group($value)) { unset($items[$number]); } } } break; case 'country': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->country, $value) === false) { unset($items[$number]); } } break; case 'state': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->country, $value) === false) { unset($items[$number]); } } break; case 'product_category': foreach ($items as $number => $item) { if ($value == 'false') { break; } // Get order products if (!empty($item->products)) { $exists = array(); foreach ($item->products as $product) { // Find category if (\Product\Model_Product_To_Categories::find(array('where' => array('product_id' => $product->product_id, 'category_id' => $value)))) { $exists[] = $product->id; } } if (empty($exists)) { unset($items[$number]); } } } break; } } } // Reset to empty array if there are no result found by query if (empty($items)) { $items = array(); } return array('items' => $items); }
public function get_search_items($user_id = false) { // Override group_id if its a search $user_id = \Input::get('user_id', $user_id); if ($user_id && \Sentry::user_exists((int) $user_id)) { $user = \Sentry::user((int) $user_id); } $items = \Order\Model_Order::find(function ($query) { if (isset($user)) { $query->where('user_id', $user->id); } $query->where('finished', '1'); $query->order_by('id', 'desc'); }); foreach (\Input::get() as $key => $value) { if (!empty($value) || $value == '0') { switch ($key) { case 'title': foreach ($items as $number => $item) { $full_name = $item->first_name . ' ' . $item->last_name; if (stripos($item->company, $value) === false && stripos($item->id, $value) === false) { if (stripos($full_name, $value) === false) { unset($items[$number]); } } } break; case 'email': foreach ($items as $number => $item) { if (stripos($item->email, $value) === false) { unset($items[$number]); } } break; case 'order_total_from': is_numeric($value) or $value == 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if (isset($item_details['total_price']) && $item_details['total_price'] < $value) { unset($items[$number]); } } break; case 'order_total_to': is_numeric($value) or $value == 0; foreach ($items as $number => $item) { $item_details = \Order\Model_Order::order_info($item->id); if (isset($item_details['total_price']) && $item_details['total_price'] > $value) { unset($items[$number]); } } break; case 'date_from': // convert format date to m/d/Y $parts = explode('/', $value); $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2]; if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at < $date) { unset($items[$number]); } } } break; case 'date_to': // convert format date to m/d/Y $parts = explode('/', $value); $value = $parts[1] . '/' . $parts[0] . '/' . $parts[2]; if ($date = strtotime($value)) { foreach ($items as $number => $item) { if ($item->created_at > $date) { unset($items[$number]); } } } break; case 'status': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->status, $value) === false) { unset($items[$number]); } } break; case 'tracking_no': foreach ($items as $number => $item) { if (!$value != '') { break; } if (stripos($item->tracking_no, $value) === false) { unset($items[$number]); } } break; case 'payment_method': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (!empty($item->last_payment)) { if ($item->last_payment->method != $value) { unset($items[$number]); } } } break; case 'user_group': foreach ($items as $number => $item) { if ($value == 'false') { break; } if ($item->user_id && \Sentry::user_exists((int) $item->user_id)) { $user = \Sentry::user((int) $item->user_id); if ($user->in_group($value)) { unset($items[$number]); } } } break; case 'country': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->country, $value) === false) { unset($items[$number]); } } break; case 'state': foreach ($items as $number => $item) { if ($value == 'false') { break; } if (stripos($item->country, $value) === false) { unset($items[$number]); } } break; case 'product_category': foreach ($items as $number => $item) { if ($value == 'false') { break; } // Get order products if (!empty($item->products)) { $exists = array(); foreach ($item->products as $product) { // Find category if (\Product\Model_Product_To_Categories::find(array('where' => array('product_id' => $product->product_id, 'category_id' => $value)))) { $exists[] = $product->id; } } if (empty($exists)) { unset($items[$number]); } } } break; } } } // Reset to empty array if there are no result found by query if (is_null($items)) { $items = array(); } // Initiate pagination $pagination = \Hybrid\Pagination::make(array('total_items' => count($items), 'per_page' => \Input::get('per_page', 10), 'uri_segment' => null)); // Remove unwanted items, and show only required ones $items = array_slice($items, $pagination->offset, $pagination->per_page); return array('items' => $items, 'pagination' => $pagination); }