331 lines
12 KiB
PHP
331 lines
12 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Str;
|
|
use App\Coupon;
|
|
use App\Site;
|
|
use App\Campagne;
|
|
use App\Mouvement;
|
|
use App\Calendrier;
|
|
use App\Traits\GenerateBR;
|
|
use App\Traits\CouponTrait;
|
|
use Validator;
|
|
|
|
class CouponController extends Controller
|
|
{
|
|
use GenerateBR;
|
|
use CouponTrait;
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
$campIds = Campagne::where('camp_siteId', session()->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 = 0;
|
|
// $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_code' => 'required|unique:coupon,coupon_code',
|
|
'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()->back()
|
|
->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'];
|
|
}
|
|
if (isset($datas['coupon_published'])) {
|
|
$coupon->coupon_published = $datas['coupon_published'];
|
|
} else {
|
|
$coupon->coupon_published = 0;
|
|
}
|
|
if (isset($datas['coupon_legal_mentions_splitted'])) {
|
|
$coupon->coupon_legal_mentions_splitted = $datas['coupon_legal_mentions_splitted'];
|
|
} else {
|
|
$coupon->coupon_legal_mentions_splitted = 0;
|
|
}
|
|
$coupon->coupon_validity = $datas['coupon_validity'];
|
|
$coupon->coupon_mindatediffusion = $datas['coupon_mindatediffusion'];
|
|
$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'];
|
|
$coupon->coupon_seuil_alert = $datas['coupon_seuil_alert'];
|
|
|
|
$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);
|
|
}
|
|
}
|
|
|
|
if (isset($datas['startdate'])) {
|
|
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) {
|
|
if (isset($input->coupon_gs1code_image_hidden)) {
|
|
return false;
|
|
}
|
|
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 (!isset($request->coupon_legal_mentions_splitted)) {
|
|
$coupon->coupon_legal_mentions_splitted = 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 redirect()->route('coupon.edit', ['coupon' => $coupon]);
|
|
} else {
|
|
return view('holder');
|
|
} //end if
|
|
|
|
return redirect()->route('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)) {
|
|
/** @var \Illuminate\Http\UploadedFile $item */
|
|
$path = $item->store('modelfiles/coupons', 'public');
|
|
$path = Str::start($path, 'storage/');
|
|
$datas->put($key, $path);
|
|
} else {
|
|
$datas->put($key, $request->input($key . '_hidden'));
|
|
}
|
|
}
|
|
}
|
|
return $datas->toArray();
|
|
}
|
|
}
|