public function listProduct() { if (!Request::ajax()) { return App::abort(404); } $admin_id = Auth::admin()->get()->id; $start = Input::has('start') ? (int) Input::get('start') : 0; $length = Input::has('length') ? Input::get('length') : 10; $search = Input::has('search') ? Input::get('search') : []; $products = Product::with('mainImage')->select(DB::raw('id, name, sku, sell_price, short_description, active, (SELECT COUNT(*) FROM notifications WHERE notifications.item_id = products.id AND notifications.item_type = "Product" AND notifications.admin_id = ' . $admin_id . ' AND notifications.read = 0 ) as new')); if (!empty($search)) { foreach ($search as $key => $value) { if (empty($value)) { continue; } if ($key == 'active') { if ($value == 'yes') { $value = 1; } else { $value = 0; } $products->where($key, $value); } else { if ($key == 'sell_price') { $value = trim($value); if (strpos($value, '-') !== false) { list($from, $to) = explode('-', $value); $products->where($key, '>', (double) $from); $products->where($key, '<', (double) $to); } else { $products->where($key, (double) $value); } } else { if ($key == 'category' && !empty($value)) { if (is_numeric($value)) { $products->whereHas('categories', function ($query) use($value) { $query->where('categories.id', $value); }); } else { if (is_array($value)) { foreach ($value as $k => $v) { if (empty($v)) { unset($value[$k]); } } if (empty($value)) { continue; } $products->whereHas('categories', function ($query) use($value) { $query->whereIn('categories.id', $value); }); } else { $products->whereHas('categories', function ($query) use($value) { $query->where('categories.name', 'like', '%' . $value . '%'); }); } } } else { $value = ltrim(rtrim($value)); $products->where($key, 'like', '%' . $value . '%'); } } } } } $order = Input::has('order') ? Input::get('order') : []; if (!empty($order)) { $columns = Input::has('columns') ? Input::get('columns') : []; foreach ($order as $value) { $column = $value['column']; if (!isset($columns[$column]['name']) || empty($columns[$column]['name'])) { continue; } $products->orderBy($columns[$column]['name'], $value['dir'] == 'asc' ? 'asc' : 'desc'); } } $count = $products->count(); if ($length > 0) { $products = $products->skip($start)->take($length); } $arrProducts = $products->get(); $arrReturn = ['draw' => Input::has('draw') ? Input::get('draw') : 1, 'recordsTotal' => Product::count(), 'recordsFiltered' => $count, 'data' => []]; $arrRemoveNew = []; if (!empty($arrProducts)) { foreach ($arrProducts as $product) { if (isset($product->main_image[0])) { $image = URL . '/' . str_replace('/images/products', '/images/products/thumbs', $product->main_image[0]->path); } else { $image = URL . '/assets/images/noimage/110x110.gif'; } $name = $product->name; if ($product->new) { $name .= '| <span class="badge badge-danger">new</span>'; $arrRemoveNew[] = $product->id; } if (empty($product->short_description)) { $product->short_description = '(empty)'; } $data = Product::getSmallestPrice($product, true); $arrReturn['data'][] = array(++$start, $product->id, $name, $product->sku, "({$data['sizew']}x{$data['sizeh']})|{$data['sell_price']}", $image, $product->short_description, $product->active); } } if (!empty($arrRemoveNew)) { Notification::whereIn('item_id', $arrRemoveNew)->where('item_type', 'Product')->where('admin_id', $admin_id)->update(['read' => 1]); } $response = Response::json($arrReturn); $response->header('Content-Type', 'application/json'); return $response; }
public static function getProductByKey($arrData) { $skip = isset($arrData['skip']) ? $arrData['skip'] : 0; $take = isset($arrData['take']) ? $arrData['take'] : 0; $key = isset($arrData['key']) ? $arrData['key'] : ''; $key = trim($key); $key = explode("+", $key); $raw_query = ''; foreach ($key as $index => $value) { if ($index == 0) { $raw_query .= '`name` like "%' . $value . '%" or `short_name` like "%' . $value . '%" '; } else { $raw_query .= 'or `name` like "%' . $value . '%" or `short_name` like "%' . $value . '%" '; } } $products = Product::select('id', 'sku', 'short_name', 'name')->with(['images' => function ($query) { $query->select('path'); $query->where('imageables.option', 'like', '%"main":1%'); }])->with(['categories' => function ($query) { $query->select('short_name'); }])->whereRaw($raw_query)->where('active', 1)->take($take)->skip($skip)->orderBy('id', 'desc')->get(); if (!$products->isEmpty()) { foreach ($products as $key => $product) { $product->sell_price = Product::getSmallestPrice($product); if (isset($product->images[0])) { $product->image = URL . '/' . str_replace('/images/products/', '/images/products/thumbs/', $product->images[0]->path); } else { $product->image = URL . '/assets/images/noimage/213x213.gif'; } if (isset($product->categories[0])) { $product->category = $product->categories[0]['short_name']; } else { $product->category = ''; } unset($product->images); unset($product->categories); } $products = $products->toArray(); return $products; } return []; }