get('site')->site_id) ->get() ->pluck('camp_id') ->flatten() ->toArray(); $coupons = Coupon::where('coupon_siteId', session()->get('site')->id)->get(); foreach ($coupons as $coupon) { // ---- Calcul de la quantité mise à disposition grace aux fonctions dans CouponTrait.php $coupon->coupon_quantity = $this->getFullQuantity($coupon); // ---- Calcul de la quantité restante toutes campagnes comprises grace aux fonctions dans CouponTrait.php $coupon->coupon_left = $coupon->coupon_quantity - $this->getUsedQuantity($coupon); } return view('coupon.index', ['coupons' => $coupons, 'camps' => $campIds]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get() ->pluck('camp_name', 'camp_id'); $site = Site::where(['id' => session()->get('site')->id])->first(); return view('coupon.create')->with('campagnes', $campagnes)->with('site', $site); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $data = $request->all(); $v = Validator::make($data, [ 'coupon_validity_text' => 'required', 'coupon_legal_mentions' => 'required', 'coupon_decoration_image' => 'required|image|mimes:jpeg,png', 'coupon_logo_image' => 'required|image|mimes:jpeg,png', 'coupon_rcs' => 'required', 'coupon_site_contact' => 'required', ]); $v->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) { return isset($input->coupon_norme); }); if ($v->fails()) { return redirect('bo/coupon/'.$coupon->coupon_id.'/edit') ->withErrors($v) ->withInput(); } $datas = $this->saveImg($request); $coupon = new Coupon(); $coupon->coupon_code = $datas['coupon_code']; $coupon->coupon_name = $datas['coupon_name']; $coupon->coupon_value = $datas['coupon_value']; if (isset($datas['coupon_thumbnail1'])) { $coupon->coupon_thumbnail1 = $datas['coupon_thumbnail1']; } if (isset($datas['coupon_thumbnail2'])) { $coupon->coupon_thumbnail2 = $datas['coupon_thumbnail2']; } if (isset($datas['coupon_thumbnail3'])) { $coupon->coupon_thumbnail3 = $datas['coupon_thumbnail3']; } if (isset($datas['coupon_thumbnail4'])) { $coupon->coupon_thumbnail4 = $datas['coupon_thumbnail4']; } if (isset($datas['coupon_image'])) { $coupon->coupon_image = $datas['coupon_image']; } if (isset($datas['coupon_norme'])) { $coupon->coupon_norme = $datas['coupon_norme']; $coupon->coupon_gs1code = $datas['coupon_gs1code']; } if (isset($datas['coupon_enablelimitquantity'])) { $coupon->coupon_enablelimitquantity = $datas['coupon_enablelimitquantity']; $coupon->coupon_limitquantity = $datas['coupon_limitquantity']; } if (isset($datas['coupon_enablelimitperiod'])) { $coupon->coupon_enablelimitperiod = $datas['coupon_enablelimitperiod']; $coupon->coupon_limitperiod = $datas['coupon_limitperiod']; } $coupon->coupon_validity = $datas['coupon_validity']; $coupon->coupon_maxdatediffusion = $datas['coupon_maxdatediffusion']; $coupon->coupon_maxdatevalidity = $datas['coupon_maxdatevalidity']; $coupon->coupon_validity_text = $datas['coupon_validity_text']; $coupon->coupon_legal_mentions = $datas['coupon_legal_mentions']; if (isset($datas['coupon_decoration_image'])) { $coupon->coupon_decoration_image = $datas['coupon_decoration_image']; } if (isset($datas['coupon_logo_image'])) { $coupon->coupon_logo_image = $datas['coupon_logo_image']; } $coupon->coupon_rcs = $datas['coupon_rcs']; $coupon->coupon_site_contact = $datas['coupon_site_contact']; $site = Site::find($request->input('site_id')); $site->coupons()->save($coupon); if (isset($datas['initial_quantity'])) { $mouvement = new Mouvement(); $mouvement->mouvement_nombre = $datas['initial_quantity']; $coupon->mouvements()->save($mouvement); } if(isset($datas['mouvementNbre'])){ foreach($datas['mouvementNbre'] as $key => $value){ $mouvement = new Mouvement(); $mouvement->mouvement_nombre = $value; $mouvement->mouvement_created_at = $datas['mouvementDate'][$key]; $coupon->mouvements()->save($mouvement); } } foreach($datas['startdate'] as $key => $value){ $calendar = new Calendrier(); $calendar->calendrier_startdate = $value; $calendar->calendrier_enddate = $datas['enddate'][$key]; $coupon->calendriers()->save($calendar); } $br_path = $this->generateBase($request, $coupon); $coupon->coupon_image = $br_path; $coupon->save(); return view('coupon.edit', ['coupon' => $coupon]); } /** * Display the specified resource. * * @param \App\Coupon $coupon * @return \Illuminate\Http\Response */ public function show(Coupon $coupon) { return view('coupon.show', ['coupon' => $coupon]); } /** * Show the form for editing the specified resource. * * @param \App\Coupon $coupon * @return \Illuminate\Http\Response */ public function edit(Coupon $coupon) { return view('coupon.edit', ['coupon' => $coupon]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Coupon $coupon * @return \Illuminate\Http\Response */ public function update(Request $request, Coupon $coupon) { $data = $request->all(); $v = Validator::make($data, [ 'coupon_decoration_image' => 'image|mimes:jpeg,png', 'coupon_logo_image' => 'image|mimes:jpeg,png', ]); $v->sometimes('coupon_gs1code', 'required|image|mimes:jpeg', function ($input) { return isset($input->coupon_norme); }); if ($v->fails()) { return redirect('bo/coupon/'.$coupon->coupon_id.'/edit') ->withErrors($v) ->withInput(); } if(!isset($request->coupon_enablelimitquantity)){ $coupon->coupon_enablelimitquantity = 0; } if(!isset($request->coupon_enablelimitperiod)){ $coupon->coupon_enablelimitperiod = 0; } if(!isset($request->coupon_norme)){ $coupon->coupon_norme = 0; } if(!isset($request->coupon_published)){ $coupon->coupon_published = 0; } if ($coupon->update($this->saveImg($request))) { $datas = $this->saveImg($request); $br_path = $this->generateBase($request, $coupon); $coupon->coupon_image = $br_path; $coupon->update($this->saveImg($request)); if(isset($datas['mouvementNbre'])){ foreach($datas['mouvementNbre'] as $key => $value){ $mouvement = new Mouvement(); $mouvement->mouvement_nombre = $value; $mouvement->mouvement_created_at = $datas['mouvementDate'][$key]; $coupon->mouvements()->save($mouvement); } } if(isset($datas['startdate'])){ $coupon->calendriers()->delete(); foreach($datas['startdate'] as $key => $value){ $calendar = new Calendrier(); $calendar->calendrier_startdate = $value; $calendar->calendrier_enddate = $datas['enddate'][$key]; $coupon->calendriers()->save($calendar); } } session()->flash('update_ok', 'Mise à jour du coupon réussie !'); return view('coupon.edit', ['coupon' => $coupon]); } else { return view('holder'); } return view('coupon.edit', ['coupon' => $coupon]); } /** * Remove the specified resource from storage. * * @param \App\Coupon $coupon * @return \Illuminate\Http\Response */ public function destroy(Coupon $coupon) { $coupon->coupon_published = 0; $coupon->save(); if ($coupon->delete()) { return redirect(route('coupon.index')); } else { session()->flash('delete_nok', 'Erreur lors de la suppression'); return view('coupon.edit')->with('coupon', $coupon); } } /** * @param \Illuminate\Http\Request $request * * @return array */ private function saveImg(Request $request) { $datas = collect($request->all()); $imgs = collect(array()); foreach ($datas as $key => $item) { if ($key == 'coupon_image' || $key == 'coupon_gs1code' || $key == 'coupon_decoration_image' || $key == 'coupon_logo_image' || (substr($key, 7, 9) == 'thumbnail' && strlen($key) < 18)) { if (isset($item)) { $path = $item->store('coupons'); $path = str_replace('public/', '', $path); $datas->put($key, $path); } else { $datas->put($key, $request->input($key . '_hidden')); } } } return $datas->toArray(); } }