public function listProductOption() { if (!Request::ajax()) { return App::abort(404); } $start = Input::has('start') ? (int) Input::get('start') : 0; $length = Input::has('length') ? Input::get('length') : 10; $search = Input::has('search') ? Input::get('search') : []; $productOptions = ProductOption::select('options.id', 'options.name', 'options.key', 'option_group_id', 'option_groups.name as option_group_name')->leftJoin('option_groups', 'options.option_group_id', '=', 'option_groups.id'); if (!empty($search)) { foreach ($search as $key => $value) { if (empty($value)) { continue; } if ($key == 'option_group_id') { $productOptions->where($key, (int) $value); } else { $value = ltrim(rtrim($value)); $productOptions->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; } $productOptions->orderBy('options.' . $columns[$column]['name'], $value['dir'] == 'asc' ? 'asc' : 'desc'); } } $count = $productOptions->count(); if ($length > 0) { $productOptions = $productOptions->skip($start)->take($length); } $arrOptions = $productOptions->get()->toArray(); $arrReturn = ['draw' => Input::has('draw') ? Input::get('draw') : 1, 'recordsTotal' => ProductOption::count(), 'recordsFiltered' => $count, 'data' => []]; if (!empty($arrOptions)) { foreach ($arrOptions as $option) { $arrReturn['data'][] = array(++$start, $option['id'], $option['name'], $option['key'], $option['option_group_id'], is_null($option['option_group_name']) ? '' : $option['option_group_name']); } } $response = Response::json($arrReturn); $response->header('Content-Type', 'application/json'); return $response; }
public static function getSmallestPrice($product, $includeSize = false) { $sizew = $sizeh = $bleed = 0; if (!isset($product->size_lists)) { $smallestSize = SizeList::where('product_id', $product->id)->cacheTags(['size_lists', 'products'])->orderBy('size_lists.sizew', 'asc')->orderBy('size_lists.sizeh', 'asc')->remember(30)->first(); if (is_object($smallestSize)) { $sizew = $smallestSize->sizew; $sizeh = $smallestSize->sizeh; } } else { $min = []; foreach ($product->size_lists as $size_list) { if (!isset($min->sizew) || $min->sizew > $size_list->sizew) { $min = $size_list; } } } $smallestDepth = ProductOption::select('name')->whereIn('id', function ($query) use($product) { $query->select('optionable_id')->from('optionables')->where('product_id', $product->id)->where('optionable_type', 'ProductOption'); })->whereIn('option_group_id', function ($query) { $query->select('id')->from('option_groups')->where('key', 'depth'); })->orderBy('key', 'asc')->first(); if (is_object($smallestDepth)) { $bleed = (double) str_replace('" Box', '', $smallestDepth->name); } if ($sizew && $sizeh || $bleed) { $product->sizew = $sizew; $product->sizeh = $sizeh; $product->bleed = $bleed; $price = JTProduct::getPrice($product); $sellPrice = $price['sell_price']; } else { $sellPrice = JTProduct::getDefaultPrice($product); } if ($includeSize) { return ['sell_price' => $sellPrice, 'sizew' => $sizew, 'sizeh' => $sizeh]; } return $sellPrice; }
public function listOrders() { if (Auth::user()->check()) { $page = Input::has('page') ? Input::get('page') : 1; $take = Input::has('take') ? Input::get('take') : 10; $skip = ($page - 1) * $take; $data = Order::select('orders.id', 'orders.status', 'orders.sum_amount', 'orders.note', 'orders.created_at', 'orders.billing_address_id', 'orders.shipping_address_id')->with('orderDetails')->where('orders.user_id', Auth::user()->get()->id)->orderBy('orders.id', 'desc')->groupBy('orders.id'); $total_order = $data->get()->count(); $total_page = ceil($total_order / $take); $from = $page - 2 > 0 ? $page - 2 : 1; $to = $page + 2 <= $total_page ? $page + 2 : $total_page; $data = $data->skip($skip)->take($take)->get(); $arr_orders = array(); if ($data->count() > 0) { $i = 0; foreach ($data as $key => $value) { $arr_orders[$i]['order_id'] = $value->id; $arr_orders[$i]['status'] = $value->status; $arr_orders[$i]['sum_amount'] = $value->sum_amount; $arr_orders[$i]['note'] = $value->note; $arr_orders[$i]['created_at'] = $value->created_at; //Get billing address $obj_address = Address::findOrFail($value->billing_address_id); if ($obj_address) { $billing_address = $obj_address->toHtml(); $arr_orders[$i]['billing_address'] = $billing_address; } //Get shipping address $obj_address = Address::findOrFail($value->shipping_address_id); if ($obj_address) { $shipping_address = $obj_address->toHtml(); $arr_orders[$i]['shipping_address'] = $shipping_address; } //Order Details $order_details = $value->order_details; foreach ($order_details as $key1 => $value1) { $viimage = VIImage::findOrFail($value1->image_id); $options = new Product(); $options->path_thumb = '/pic/thumb/' . $viimage->short_name . '-' . $viimage->id . '.jpg'; $options->order_type = $value1->type; $options->size = $value1->size; $option = $value1->option; $arr_option = []; if ($option != null && $option != '') { $arr_option_key = explode(",", $option); foreach ($arr_option_key as $option_key) { $data_option = ProductOption::select('options.name', 'options.key', DB::raw('option_groups.name as type'), DB::raw('option_groups.key as type_key'))->join('option_groups', 'options.option_group_id', '=', 'option_groups.id')->where('options.key', $option_key)->first(); $arr_option[] = ['type' => $data_option->type, 'type_key' => $data_option->type_key, 'key' => $data_option->key, 'value' => $data_option->name]; } } $options->options = $arr_option; $value1->options = $options; $value1->viimage = $viimage; $value1->price = $value1->sell_price; $value1->qty = $value1->quantity; $value1->subtotal = $value1->sum_amount; $value1->name = $viimage->name; $value1->rowid = $viimage->id . '_' . $value1->id; $order_details[$key1] = $value1; } // echo "<pre>"; // print_r($order_details[0]->options); // echo "</pre>"; // exit; $arr_orders[$i]['order_details'] = $order_details; $i++; } } $this->layout->metaTitle = Auth::user()->get()->first_name . '\'s Orders'; $this->layout->content = View::make('frontend.order.list-order', ['arr_orders' => $arr_orders, 'total_order' => $total_order, 'total_page' => $total_page, 'current' => $page, 'from' => $from, 'to' => $to]); return; } return Redirect::route('account-sign-in'); }