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;
 }
Exemple #2
0
 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');
 }