Example #1
0
 public function generateView()
 {
     //require
     if (!isset($this->page_attributes->breadcrumb)) {
         $this->page_attributes->breadcrumb = [];
     }
     if (!isset($this->page_attributes->title)) {
         $this->page_attributes->title = null;
     }
     if (!isset($this->page_attributes->subtitle)) {
         $this->page_attributes->subtitle = null;
     }
     if (!isset($this->page_attributes->data)) {
         $this->page_attributes->data = null;
     }
     if (!isset($this->page_attributes->paginator)) {
         $this->page_attributes->paginator = null;
     }
     if (!isset($this->page_attributes->type_form)) {
         $this->page_attributes->type_form = null;
     }
     if (!isset($this->page_attributes->metas)) {
         $this->page_attributes->metas = null;
     }
     if (!isset($this->page_attributes->controller_name)) {
         $this->page_attributes->controller_name = null;
     }
     if (!Session::has('carts') || is_null(Session::get('carts')) || empty(Session::get('carts'))) {
         if (!Session::has('whoami')) {
             $APIProduct = new APIProduct();
             $recommend = $APIProduct->getIndex(['search' => ['name' => Input::get('q'), 'recommended' => 0], 'sort' => ['name' => 'asc'], 'take' => 2, 'skip' => '']);
         } else {
             Session::set('API_token', Session::get('API_token_private'));
             $APIProduct = new APIProduct();
             $recommend = $APIProduct->getIndex(['search' => ['name' => Input::get('q'), 'recommended' => Session::get('whoami')['id']], 'sort' => ['name' => 'asc'], 'take' => 2, 'skip' => '']);
         }
     } else {
         $recommend = [];
     }
     $balin = $this->balin;
     //paginator
     $paging = $this->page_attributes->paginator;
     //initialize view
     $this->layout = view($this->page_attributes->source, compact('paging'))->with('breadcrumb', $this->page_attributes->breadcrumb)->with('page_title', $this->page_attributes->title)->with('page_subtitle', $this->page_attributes->subtitle)->with('data', $this->page_attributes->data)->with('balin', $balin)->with('recommend', $recommend)->with('metas', $this->page_attributes->metas)->with('controller_name', $this->page_attributes->controller_name)->with('type', $this->page_attributes->type_form);
     //optional data
     if (isset($this->page_attributes->search)) {
         $this->layout = $this->layout->with('searchResult', $this->page_attributes->search);
     }
     // return view
     return $this->layout;
 }
 public function show($id)
 {
     //get data category
     $APICategory = new APICategory();
     $category = $APICategory->getShow($id);
     $this->page_attributes->subtitle = $category['data']['name'];
     //search
     if (Input::has('q')) {
         $search = ['name' => Input::get('q'), 'categories' => str_replace(" ", "-", strtolower($category['data']['slug']))];
         $this->page_attributes->search = Input::get('q');
     } else {
         $search = ['categories' => str_replace(" ", "-", strtolower($category['data']['slug']))];
     }
     //sort
     if (Input::has('sort')) {
         $sort_item = explode('-', Input::get('sort'));
         $sort = [$sort_item[0] => $sort_item[1]];
     } else {
         $sort = [];
     }
     //get curent page
     if (is_null(Input::get('page'))) {
         $page = 1;
     } else {
         $page = Input::get('page');
     }
     //get product data
     $APIProduct = new APIProduct();
     $product = $APIProduct->getIndex(['search' => $search, 'sort' => $sort, 'take' => $this->take, 'skip' => ($page - 1) * $this->take]);
     //data paging
     $this->paginate(route('goods.category.show', ['id' => $category['data']['id']]), $product['data']['count'], $page);
     $category['data']['products'] = $product['data']['data'];
     //sorting
     $SortList = new SortList();
     $this->page_attributes->sorts = ['titles' => ['nama', 'harga', 'stok'], 'nama' => $SortList->getSortingList('nama'), 'harga' => $SortList->getSortingList('harga'), 'stok' => $SortList->getSortingList('stok')];
     // data here
     $this->page_attributes->data = $category['data'];
     //breadcrumb
     $breadcrumb = [$category['data']['name'] => route('goods.category.show', ['id' => $category['data']['name']])];
     //generate View
     $this->page_attributes->breadcrumb = array_merge($this->page_attributes->breadcrumb, $breadcrumb);
     $this->page_attributes->source = $this->page_attributes->source . 'show';
     return $this->generateView();
 }
Example #3
0
 /**
  * display home
  *
  * @return view
  */
 public function index()
 {
     //get data
     $APIProduct = new APIProduct();
     $datas['batik_wanita'] = $APIProduct->getIndex(['search' => ['recommended' => Session::has('whoami') ? Session::get('whoami')['id'] : 0, 'tags' => ['wanita']], 'sort' => ['name' => 'asc'], 'take' => 4, 'skip' => '']);
     $datas['batik_pria'] = $APIProduct->getIndex(['search' => ['recommended' => Session::has('whoami') ? Session::get('whoami')['id'] : 0, 'tags' => ['pria']], 'sort' => ['name' => 'asc'], 'take' => 4, 'skip' => '']);
     $datas['all'] = $APIProduct->getIndex(['search' => ['recommended' => Session::has('whoami') ? Session::get('whoami')['id'] : 0], 'take' => 4, 'skip' => 0]);
     $this->page_attributes->metas = ['og:type' => 'website', 'og:title' => 'BALIN.ID', 'og:description' => 'Fashionable and Modern Batik', 'og:url' => $this->balin['info']['url']['value'], 'og:image' => $this->balin['info']['logo']['value'], 'og:site_name' => 'balin.id', 'fb:app_id' => Config::get('fb_app.id')];
     $this->page_attributes->controller_name = $this->controller_name;
     $this->page_attributes->subtitle = 'Fashionable and Modern Batik';
     $this->page_attributes->data = $datas;
     if (isset($this->balin['banners'])) {
         $this->page_attributes->data['banners'] = $this->balin['banners'];
     } else {
         $this->page_attributes->data['banners'] = ['left_banner' => ['image_lg' => '', 'value' => json_encode(['button' => ['banner_button_url' => '']])], 'right_banner' => ['image_lg' => '', 'value' => json_encode(['button' => ['banner_button_url' => '']])], 'full_banner' => ['image_lg' => '', 'value' => json_encode(['button' => ['banner_button_url' => '']])]];
     }
     $this->page_attributes->source = $this->page_attributes->source . 'index';
     return $this->generateView();
 }
 public function show($id = null)
 {
     //initialize
     $this->page_attributes->subtitle = ucwords(str_replace('_', ' ', $id));
     // filters
     if (Input::has('q')) {
         $this->page_attributes->search = Input::get('q');
     }
     //sort
     if (Input::has('sort')) {
         $sort_item = explode('-', Input::get('sort'));
         $sort = [$sort_item[0] => $sort_item[1]];
     } else {
         $sort = ['name' => 'asc'];
     }
     //get curent page
     if (is_null(Input::get('page'))) {
         $page = 1;
     } else {
         $page = Input::get('page');
     }
     // data here
     $APIProduct = new APIProduct();
     $product = $APIProduct->getIndex(['search' => ['labelname' => $id, 'name' => Input::get('q')], 'sort' => $sort, 'take' => $this->take, 'skip' => ($page - 1) * $this->take]);
     $SortList = new SortList();
     $this->page_attributes->sorts = ['titles' => ['nama', 'harga', 'stok'], 'nama' => $SortList->getSortingList('nama'), 'harga' => $SortList->getSortingList('harga'), 'stok' => $SortList->getSortingList('stok')];
     $this->page_attributes->data = ['id' => $id, 'name' => ucwords(str_replace('_', ' ', $id)), 'product' => $product['data']['data']];
     //paginate
     $this->paginate(route('goods.label.show', ['id' => $id]), $product['data']['count'], $page);
     //breadcrumb
     $breadcrumb = [ucwords(str_replace('_', ' ', $id)) => route('goods.label.show', $id)];
     //generate View
     $this->page_attributes->breadcrumb = array_merge($this->page_attributes->breadcrumb, $breadcrumb);
     $this->page_attributes->source = $this->page_attributes->source . 'show';
     return $this->generateView();
 }
Example #5
0
 /**
  * function to update an item to cart
  *
  * 1. Check existance of product
  * 2. Parsing data
  * 3. call add to cart function
  * 4. return response
  * @param slug, varian id
  */
 public function update($slug = null, $varian_id = null)
 {
     //1. Check existance of product
     $APIProduct = new APIProduct();
     $product = $APIProduct->getIndex(['search' => ['slug' => $slug]]);
     if ($product['data']['count'] < 1) {
         \App::abort(404);
     }
     //2. Parsing data
     $carts = Session::get('carts');
     $product_id = $product['data']['data'][0]['id'];
     $carts[$product_id]['varians'][$varian_id]['quantity'] = Input::get('qty');
     $varianids = [];
     $qtys = [];
     foreach ($carts[$product_id]['varians'] as $key => $value) {
         $varianids[$key] = $key;
         $qtys[$key] = $value['quantity'];
     }
     //3. call add to cart function
     $cart = $this->addToCart($carts, $product['data']['data'][0], $qtys, $varianids);
     Session::put('carts', $cart['data']);
     $carts = $cart['data'];
     if (count($carts) == 0) {
         Session::flash('carts', 'remove carts');
     }
     //4. return response
     if ($cart['status'] == 'success') {
         return Response::json(['carts' => $cart['data']], 200);
     }
     return Response::json(['carts' => $cart['data'], 'message' => $cart['message']], 200);
 }
 /**
  * Delete a varian
  * 
  * @param pid, id
  * @return function
  */
 public function destroy($pid = null, $id = null)
 {
     //cek auth
     //get data
     $APIProduct = new APIProduct();
     $product = $APIProduct->getShow($pid);
     $varian = $this->VarianFindData($product['data']['varians'], $id);
     //delete varian
     unset($product['data']['varians'][$varian['key']]);
     //save
     $result = $APIProduct->postData($product['data']);
     //response
     if ($result['status'] != 'success') {
         $this->errors = $result['message'];
     }
     //return view
     $this->page_attributes->success = "Data Varian Telah Dihapus";
     return $this->generateRedirectRoute('goods.product.show', ['id' => $pid]);
 }
 /**
  * Display all discount
  * 
  * 1. Check filter
  * 2. Check page
  * 3. Get data from API
  * 4. Generate paginator
  * 5. Generate breadcrumb
  * 6. Generate view
  * @param page, q
  * @return Object View
  */
 public function index()
 {
     //1. Check filter
     $search = ['discount' => true];
     if (Input::has('q')) {
         $search['name'] = Input::get('q');
         $this->page_attributes->search = Input::get('q');
     } else {
         $searchResult = null;
     }
     if (Input::has('category')) {
         $search['categories'] = str_replace(" ", "-", Input::get('category'));
     }
     if (Input::has('tag')) {
         $search['tags'] = str_replace(" ", "-", Input::get('tag'));
     }
     if (Input::has('label')) {
         $search['labelname'] = str_replace(" ", "_", Input::get('label'));
     }
     if (Input::has('sort')) {
         $sort_item = explode('-', Input::get('sort'));
         $sort = [$sort_item[0] => $sort_item[1]];
     } else {
         $sort = ['name' => 'asc'];
     }
     //2. Check page
     if (is_null(Input::get('page'))) {
         $page = 1;
     } else {
         $page = Input::get('page');
     }
     //3. Get data from API
     $APIProduct = new APIProduct();
     $product = $APIProduct->getIndex(['search' => $search, 'sort' => $sort, 'take' => $this->take, 'skip' => ($page - 1) * $this->take]);
     $this->page_attributes->data = ['product' => $product];
     //4. Generate paginator
     $this->paginate(route('promote.discount.index'), $product['data']['count'], $page);
     //5. Generate breadcrumb
     $breadcrumb = [];
     $this->page_attributes->breadcrumb = array_merge($this->page_attributes->breadcrumb, $breadcrumb);
     //6. Generate View
     $filterTitles = ['tag', 'kategori', 'label'];
     $filterTags = [];
     $filterCategories = [];
     $filterLabels = [];
     $APITag = new APITag();
     $tmpTag = $APITag->getIndex()['data']['data'];
     $key = 0;
     foreach ($tmpTag as $value) {
         if ($value['category_id'] != 0) {
             $filterTags[$key] = ucwords(str_replace("-", " ", $value['slug']));
             $key++;
         }
     }
     $APICategory = new APICategory();
     $tmpCategory = $APICategory->getIndex()['data']['data'];
     $key = 0;
     foreach ($tmpCategory as $value) {
         if ($value['category_id'] != 0) {
             $filterCategories[$key] = ucwords(str_replace("-", " ", $value['name']));
             $key++;
         }
     }
     $APILabel = new APILabel();
     $tmpLabel = $APILabel->getIndex()['data']['data'];
     $key = 0;
     foreach ($tmpLabel as $value) {
         $filterLabels[$key] = ucwords(str_replace("_", " ", $value['label']));
         $key++;
     }
     $SortList = new SortList();
     $this->page_attributes->sorts = ['titles' => ['nama', 'harga', 'promo', 'discount'], 'nama' => $SortList->getSortingList('nama'), 'harga' => $SortList->getSortingList('harga'), 'promo' => $SortList->getSortingList('promo'), 'discount' => $SortList->getSortingList('discount')];
     $this->page_attributes->filters = ['titles' => $filterTitles, 'tag' => $filterTags, 'kategori' => $filterCategories, 'label' => $filterLabels];
     $this->page_attributes->source = $this->page_attributes->source . 'index';
     return $this->generateView();
 }
 /**
  * function to generate view and display spesific product of balin
  * 
  * @return view, redirect route
  */
 public function show($slug = null)
 {
     //1. Check product
     $API_product = new APIProduct();
     $product = $API_product->getIndex(['search' => ['slug' => $slug]]);
     if ($product['status'] != 'success') {
         $this->errors = $product['message'];
     } elseif ($product['data']['count'] < 1) {
         $this->errors = 'Tidak ada data.';
     } else {
         //2. Get Related product
         $related = $API_product->getIndex(['search' => ['name' => Input::get('q'), 'notid' => $product['data']['data'][0]['id']], 'sort' => ['name' => 'asc'], 'take' => 4]);
         $carts = Session::get('carts');
         //breadcrumb
         $breadcrumb = ['Produk' => route('balin.product.index'), $product['data']['data'][0]['name'] => route('balin.product.show', $product['data']['data'][0]['slug'])];
         //generate View
         $this->page_attributes->subtitle = $product['data']['data'][0]['name'];
         $this->page_attributes->controller_name = $this->controller_name;
         $this->page_attributes->data = ['product' => $product, 'related' => $related, 'carts' => $carts];
         $this->page_attributes->breadcrumb = array_merge($this->page_attributes->breadcrumb, $breadcrumb);
         $this->page_attributes->source = $this->page_attributes->source . 'show';
         return $this->generateView();
     }
     return $this->generateRedirectRoute('balin.product.index');
 }
 /**
  * create form of a purchase
  * 
  * 1. Get Previous data and page setting
  * 2. Initialize data
  * 3. Generate breadcrumb
  * 4. Generate view
  * @param id
  * @return Object View
  */
 public function create($id = null)
 {
     //1. Get Previous data and page setting
     if (is_null($id)) {
         $data = null;
         $breadcrumb = ['Baru' => route('shop.buy.create')];
         $this->page_attributes->subtitle = 'Baru';
     } else {
         $APIPurchase = new APIPurchase();
         $data = ['data' => $APIPurchase->getShow($id)['data']];
         //explode description saved in json
         $breadcrumb = [$data['data']['ref_number'] => route('shop.buy.show', ['id' => $data['data']['id']]), 'Edit' => route('shop.buy.create', ['id' => $data['data']['id']])];
         $this->page_attributes->subtitle = $data['data']['ref_number'];
     }
     //2. Initialize data
     if (Input::get('pid') && Input::get('vid')) {
         $APIProduct = new APIProduct();
         $product = $APIProduct->getShow(Input::get('pid'))['data'];
         foreach ($product['varians'] as $key => $value) {
             if (Input::get('vid') == $value['id']) {
                 $product['varians'] = ['0' => $value];
             }
         }
         if (count($product['varians']) == 0) {
             App::abort(404, 'data not found');
         }
         $data['data'] = ['id' => null, 'user_id' => null, 'supplier_id' => null, 'voucher_id' => null, 'ref_number' => null, 'type' => 'buy', 'transact_at' => null, 'unique_number' => null, 'shipping_cost' => null, 'voucher_discount' => null, 'amount' => null, 'status' => null, 'transactionlogs' => [], 'supplier' => [], 'transactiondetails' => ['0' => ['id' => null, 'transaction_id' => null, 'varian_id' => $product['varians'][0]['id'], 'quantity' => null, 'price' => null, 'discount' => null, 'varian' => ['id' => $product['varians'][0]['id'], 'product_id' => $product['varians'][0]['product_id'], 'sku' => $product['varians'][0]['sku'], 'size' => $product['varians'][0]['size'], 'product' => ['id' => $product['id'], 'name' => $product['name']]]]]];
         $data['src'] = 'dashboard';
     }
     $this->page_attributes->data = $data;
     //3. Generate breadcrumb
     $this->page_attributes->breadcrumb = array_merge($this->page_attributes->breadcrumb, $breadcrumb);
     //4. Generate view
     $this->page_attributes->source = $this->page_attributes->source . 'create';
     return $this->generateView();
 }
 /**
  * Delete a product
  * 
  * @param id
  * @return function
  */
 public function destroy($id)
 {
     //Call API
     $APIProduct = new APIProduct();
     $result = $APIProduct->deleteData($id);
     //Check response
     if ($result['status'] != 'success') {
         $this->errors = $result['message'];
     }
     //Return Message
     $this->page_attributes->success = "Data Produk telah dihapus";
     return $this->generateRedirectRoute('goods.product.index');
 }