public function listProducts($data) { if (is_array($data)) { $promotions = new Promotions(); $product_ids = implode(",", array_keys($data)); $query = $this->sql("SELECT products.id, products.name as product_name, products.photo as product_photo, price, categories.name as category_name, category_id FROM products JOIN categories ON categories.id = products.category_id WHERE products.id IN ({$product_ids})")->fetchAllAssoc(); foreach ($query as $key => $item) { $discount = $promotions->getProductPromotion($item['id']); if ($discount) { $query[$key]['discount'] = $discount; } } return $query; } }
public function getPromo(request $request) { $maxDiscount = 0; $bestPromo = null; if ($request['type_id'] == config('constants.credit')) { $promo_disc = Promotions::where('event_id', $request['event_id'])->where('access_id', 2)->where('startday', '<', Carbon::now())->where('endday', '>', Carbon::now())->get(); } else { if ($request['type_id'] == config('constants.cash')) { $promo_disc = Promotions::where('event_id', $request['event_id'])->where('access_id', 1)->where('startday', '<', Carbon::now())->where('endday', '>', Carbon::now())->get(); } else { $promos = null; return null; } } $promos = Promotions::where('event_id', $request['event_id'])->where('typePromotion', 2)->where('startday', '<', Carbon::now())->where('endday', '>', Carbon::now())->get(); $promos = $promos->merge($promo_disc); if ($promos) { foreach ($promos as $promo) { if ($promo->typePromotion == config('constants.discount')) { if ($promo->desc > $maxDiscount) { $pu = Zone::find($request['zone_id'])->price; $quantity = $request['quantity']; $pt = $pu * $quantity; $pd = $pt - $pt * $promo->desc / 100; $maxDiscount = $promo->desc; $bestPromo = ['id' => $promo->id, 'amount' => $pd]; } } else { if ($promo->zone_id == $request['zone_id']) { $pu = Zone::find($request['zone_id'])->price; $quantity = $request['quantity']; $pt = $pu * $quantity; $discTickets = $quantity / $promo->carry; $discTickets = floor($discTickets); $pd = $pt - $discTickets * $pu * ($promo->carry - $promo->pay); $desc = 100 - $pd / $pt * 100; if ($desc >= $maxDiscount) { $maxDiscount = $desc; $promo->desc = $desc; $bestPromo = ['id' => $promo->id, 'amount' => $pd]; } } } } } return $bestPromo; /* $maxDiscount = 0; $bestPromo = null; if($request['type_id']==config('constants.credit')){ $promo_disc = Promotions::where('event_id',$request['event_id'])->where('access_id',2)->where('startday','<',Carbon::now())->where('endday','>',Carbon::now())->get(); }else if($request['type_id']==config('constants.cash')){ $promo_disc = Promotions::where('event_id',$request['event_id'])->where('access_id',1)->where('startday','<',Carbon::now())->where('endday','>',Carbon::now())->get(); }else{ $promos = null; } $promos = Promotions::where('event_id',$request['event_id'])->where('typePromotion',2)->where('startday','<',Carbon::now())->where('endday','>',Carbon::now())->get(); $promos = $promos->merge($promo_disc); if($promos){ foreach ($promos as $promo) { if ($promo->typePromotion == config('constants.discount')){ if ($promo->desc > $maxDiscount){ $maxDiscount = $promo->desc; $bestPromo = $promo; } }else{ if($promo->zone_id == $request['zone_id']){ $pu = Zone::find($request['zone_id'])->price; $quantity = $request['quantity']; $pt = $pu * $quantity; $discTickets = $quantity / $promo->carry; $discTickets = floor($discTickets); $pd = $pt - $discTickets*$pu; $desc = 100 - ($pd/$pt)*100; if ($desc >= $maxDiscount){ $maxDiscount = $desc; $promo->desc = $desc; $bestPromo = $promo; } } } } } return $bestPromo; */ }
/** * @param $id * @param Products $products * @param Reviews $reviews * @param Categories $categories * @param Promotions $promotions * @throws \Exception */ public function getProduct($id, Products $products, Reviews $reviews, Categories $categories, Promotions $promotions) { $cart = $this->session->getSession()->cart ?: ['']; $this->view->appendToLayout('body', "products.product"); $this->view->display('layouts.main', ['product' => $products->get($id), 'cart' => $cart, 'promotion' => $promotions->getProductPromotion($id) ?: null, 'reviews' => $reviews->getForProduct($id), 'current_user_review' => $reviews->getForUser($this->auth->user()->id, $id), 'categories' => $categories->listAllNames()]); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $promotion = Promotions::find($id); if ($promotion != NULL) { $promotion->delete(); } return redirect('promoter/promotion'); }