ldc-mesbr-app/app/Http/Controllers/CouponController.php

244 lines
8.2 KiB
PHP
Raw Permalink Normal View History

2019-01-15 14:17:15 +01:00
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
2025-04-02 15:14:41 +00:00
use Illuminate\Support\Str;
use App\Models\Coupon;
use App\Models\Site;
use App\Models\Campagne;
use App\Models\Mouvement;
use App\Models\Calendrier;
use App\Http\Requests\Coupons\StoreCoupons;
use App\Http\Requests\Coupons\UpdateCoupons;
2019-02-13 16:37:14 +01:00
use App\Traits\GenerateBR;
2019-02-20 16:26:32 +01:00
use App\Traits\CouponTrait;
2019-02-13 16:37:14 +01:00
2019-01-15 14:17:15 +01:00
class CouponController extends Controller
{
2019-02-13 16:37:14 +01:00
use GenerateBR;
2019-02-20 16:26:32 +01:00
use CouponTrait;
2021-04-27 17:29:47 +02:00
2019-01-15 14:17:15 +01:00
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
2021-04-27 17:29:47 +02:00
{
// TODO : Revoir le passage du site
$site = session()->get('site');
$coupons = Coupon::where('coupon_siteId', $site->id)->get();
2019-01-15 14:17:15 +01:00
foreach ($coupons as $coupon) {
2019-02-20 16:26:32 +01:00
// ---- 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
2025-04-03 09:30:16 +02:00
$coupon->coupon_left = 0;
// $coupon->coupon_quantity - $this->getUsedQuantity($coupon);
2019-01-15 14:17:15 +01:00
}
return view('coupon.index', ['coupons' => $coupons]);
2019-01-15 14:17:15 +01:00
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
// TODO : Revoir le passage du site
$site = session()->get('site');
2019-01-15 14:17:15 +01:00
$campagnes = Campagne::where('camp_siteId', session()->get('site')->site_id)->get()
2025-04-02 15:14:41 +00:00
->pluck('camp_name', 'camp_id');
2019-01-15 14:17:15 +01:00
$site = Site::findOrFail($site->id);
2019-02-13 16:37:14 +01:00
return view('coupon.create')->with('campagnes', $campagnes)->with('site', $site);
2019-01-15 14:17:15 +01:00
}
/**
* Store a newly created resource in storage.
*
* @param StoreCoupons $request
2019-01-15 14:17:15 +01:00
* @return \Illuminate\Http\Response
*/
public function store(StoreCoupons $request)
2021-04-27 17:29:47 +02:00
{
$site_id = $request->site_id;
2019-02-21 17:02:25 +01:00
2019-01-15 14:17:15 +01:00
$datas = $this->saveImg($request);
$coupon = new Coupon();
$coupon->fill($datas);
2019-01-15 14:17:15 +01:00
// TODO : A revoir au moment ou on enlevera les images mobiles
2019-01-15 14:17:15 +01:00
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'];
}
//TODO : Voir si on peut mettre le set a 0 dans la request
if (!isset($datas['coupon_published'])) {
2019-03-04 09:34:54 +01:00
$coupon->coupon_published = 0;
}
if (!isset($datas['coupon_legal_mentions_splitted'])) {
$coupon->coupon_legal_mentions_splitted = 0;
}
2019-01-15 14:17:15 +01:00
$br_path = $this->generateBase($request, $coupon);
$coupon->coupon_image = $br_path;
$coupon->coupon_siteId = $site_id;
$coupon->save();
2019-01-15 14:17:15 +01:00
$site = Site::findOrFail($site_id);
2019-01-15 14:17:15 +01:00
$site->coupons()->save($coupon);
if (isset($datas['initial_quantity'])) {
2025-04-03 09:30:16 +02:00
$mouvement = new Mouvement();
2019-02-22 09:50:25 +01:00
$mouvement->mouvement_nombre = $datas['initial_quantity'];
$coupon->mouvements()->save($mouvement);
2019-01-15 14:17:15 +01:00
}
2021-04-27 17:29:47 +02:00
if (isset($datas['startdate'])) {
foreach ($datas['startdate'] as $key => $value) {
2025-04-03 09:30:16 +02:00
$calendar = new Calendrier();
2019-03-04 09:34:54 +01:00
$calendar->calendrier_startdate = $value;
2025-04-03 09:30:16 +02:00
$calendar->calendrier_enddate = $datas['enddate'][$key];
2019-03-04 09:34:54 +01:00
$coupon->calendriers()->save($calendar);
}
2019-01-15 14:17:15 +01:00
}
2021-04-27 17:29:47 +02:00
2026-10-28 12:27:46 +01:00
return to_route('coupon.edit', ['coupon' => $coupon]);
2019-01-15 14:17:15 +01:00
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Coupon $coupon
2019-01-15 14:17:15 +01:00
* @return \Illuminate\Http\Response
*/
public function edit(Coupon $coupon)
{
return view('coupon.edit', ['coupon' => $coupon]);
}
/**
* Update the specified resource in storage.
*
* @param UpdateCoupons $request
* @param \App\Models\Coupon $coupon
2019-01-15 14:17:15 +01:00
* @return \Illuminate\Http\Response
*/
public function update(UpdateCoupons $request, Coupon $coupon)
2021-04-27 17:29:47 +02:00
{
//TODO : Voir si on peut mettre le set a 0 dans la request
2021-04-27 17:29:47 +02:00
if (!isset($request->coupon_enablelimitquantity)) {
2019-02-26 11:32:45 +01:00
$coupon->coupon_enablelimitquantity = 0;
}
2021-04-27 17:29:47 +02:00
if (!isset($request->coupon_enablelimitperiod)) {
2019-02-26 11:32:45 +01:00
$coupon->coupon_enablelimitperiod = 0;
}
2021-04-27 17:29:47 +02:00
if (!isset($request->coupon_norme)) {
2019-02-26 11:32:45 +01:00
$coupon->coupon_norme = 0;
}
2021-04-27 17:29:47 +02:00
if (!isset($request->coupon_published)) {
2019-02-26 11:32:45 +01:00
$coupon->coupon_published = 0;
}
2021-04-27 17:29:47 +02:00
if (!isset($request->coupon_legal_mentions_splitted)) {
$coupon->coupon_legal_mentions_splitted = 0;
}
$datas = $this->saveImg($request);
// On sauvegarde les informations
if ($coupon->update($datas)) {
// Si l'update est OK on met à jour l'image du BR
2025-04-03 09:30:16 +02:00
$br_path = $this->generateBase($request, $coupon);
2019-02-13 16:37:14 +01:00
$coupon->coupon_image = $br_path;
$coupon->save();
// Si on ajoute des BR
// TODO : Gestion de l'erreur si on ajoute une ligne vide
2021-04-27 17:29:47 +02:00
if (isset($datas['mouvementNbre'])) {
foreach ($datas['mouvementNbre'] as $key => $value) {
2025-04-03 09:30:16 +02:00
$mouvement = new Mouvement();
$mouvement->mouvement_nombre = $value;
2019-01-15 14:17:15 +01:00
$mouvement->mouvement_created_at = $datas['mouvementDate'][$key];
$coupon->mouvements()->save($mouvement);
}
}
// Si on ajoute une plage de diffusion
// TODO : Gestion de l'erreur si on ajoute une ligne vide
2021-04-27 17:29:47 +02:00
if (isset($datas['startdate'])) {
2019-02-26 16:31:42 +01:00
$coupon->calendriers()->delete();
2021-04-27 17:29:47 +02:00
foreach ($datas['startdate'] as $key => $value) {
2025-04-03 09:30:16 +02:00
$calendar = new Calendrier();
2019-02-26 16:31:42 +01:00
$calendar->calendrier_startdate = $value;
2025-04-03 09:30:16 +02:00
$calendar->calendrier_enddate = $datas['enddate'][$key];
2019-02-26 16:31:42 +01:00
$coupon->calendriers()->save($calendar);
}
}
2019-01-15 14:17:15 +01:00
session()->flash('update_ok', 'Mise à jour du coupon réussie !');
2026-10-28 12:27:46 +01:00
return to_route('coupon.edit', ['coupon' => $coupon]);
2019-01-15 14:17:15 +01:00
} else {
return view('holder');
} //end if
2019-01-15 14:17:15 +01:00
2026-10-28 12:27:46 +01:00
return to_route('coupon.edit', ['coupon' => $coupon]);
2019-01-15 14:17:15 +01:00
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Coupon $coupon
2019-01-15 14:17:15 +01:00
* @return \Illuminate\Http\Response
*/
public function destroy(Coupon $coupon)
{
2019-02-21 12:05:28 +01:00
$coupon->coupon_published = 0;
$coupon->save();
2019-02-13 16:37:14 +01:00
if ($coupon->delete()) {
2026-10-28 12:27:46 +01:00
return to_route('coupon.index');
2019-02-13 16:37:14 +01:00
} else {
session()->flash('delete_nok', 'Erreur lors de la suppression');
return back();
2019-02-13 16:37:14 +01:00
}
2019-01-15 14:17:15 +01:00
}
/**
2025-04-03 09:30:16 +02:00
* @param \Illuminate\Http\Request $request
2019-01-15 14:17:15 +01:00
*
* @return array
*/
private function saveImg(Request $request)
{
$datas = collect($request->all());
foreach ($datas as $key => $item) {
2019-02-22 10:42:37 +01:00
if ($key == 'coupon_image' || $key == 'coupon_gs1code' || $key == 'coupon_decoration_image' || $key == 'coupon_logo_image' || (substr($key, 7, 9) == 'thumbnail' && strlen($key) < 18)) {
2019-01-15 14:17:15 +01:00
if (isset($item)) {
2025-04-02 15:14:41 +00:00
/** @var \Illuminate\Http\UploadedFile $item */
$path = $item->store('modelfiles/coupons', 'public');
$path = Str::start($path, 'storage/');
2019-01-15 14:17:15 +01:00
$datas->put($key, $path);
} else {
$datas->put($key, $request->input($key . '_hidden'));
}
}
}
return $datas->toArray();
}
}