ldc-legaulois/app/Http/Controllers/Bo/ReductionsController.php

102 lines
3.8 KiB
PHP
Raw Normal View History

2020-10-05 15:21:25 +02:00
<?php
namespace App\Http\Controllers\Bo;
use App\Enums\NotificationType;
use App\Events\NewNotification;
2020-10-05 15:21:25 +02:00
use App\Http\Controllers\Controller;
use App\Models\Ranges;
2020-10-05 15:21:25 +02:00
use Illuminate\Http\Request;
use App\Models\Reductions;
use Carbon\Carbon;
2020-10-05 15:21:25 +02:00
class ReductionsController extends Controller
{
public function index()
{
2021-04-12 10:01:48 +02:00
$r = Reductions::where('end_date_broadcast', '>', Carbon::now())->paginate();
$ranges = Ranges::with('products')->get();
return view('bo.reductions.index', compact('r', 'ranges'));
}
public function saveDatas(Request $request)
{
$reductionId = $request->reductionId;
$products = $request->products;
$ranges = $request->ranges;
$notification = $request->notification === null ? 0 : 1;
$reduction = Reductions::find($reductionId);
$reduction->ranges()->sync($ranges);
foreach ($ranges as $rangeId) {
$range = $reduction->ranges()->where('range_id', $rangeId)->first();
2021-03-20 14:38:15 +01:00
foreach ($products as $product) {
if (in_array($product, $range->products()->pluck('id')->toArray())) {
array_splice($products, array_search($product, $products), 1);
2021-03-20 14:38:15 +01:00
}
}
}
$reduction->products()->sync($products);
$reduction->notification = $notification;
$reduction->save();
2021-03-20 14:38:15 +01:00
if ($notification === 1) {
event(new NewNotification(NotificationType::reduction(), route('club.reductions'), $reduction));
2021-03-20 14:38:15 +01:00
}
return "Traitement terminé";
}
/**
* Permet la mise à jour des bons de réductions depuis MesBR manuellement dans le BO
*/
2021-06-14 15:15:52 +02:00
public function updateBr()
{
// On commence par supprimer les réductions dont la date de fin est dépassée
Reductions::where('end_date_broadcast', '<', Carbon::now())->delete();
// On récupère les réductions depuis MesBR
/** @var \App\Lib\MesBR */
$mesBR = app('mesBr');
$reductions = $mesBR->getDetailCampaign();
// Mise à jour et ajout des coupons en BDD
$detailCampagne = $reductions->{'Détails Campagne'};
if (isset($detailCampagne->Coupons)) {
foreach ($detailCampagne->Coupons as $coupon) {
$reduction = Reductions::where('code', $coupon->{'Code traitement'})->first();
if (!$reduction) {
$reduction = new Reductions();
$reduction->code = $coupon->{'Code traitement'};
}
$reduction->wording = $coupon->{'Nom'};
$reduction->number_broadcast = $coupon->{'Nb à diffuser'};
$reduction->number_broadcasted = $coupon->{'Nb diffusé'};
$reduction->face_value = floatval($coupon->{'Valeur faciale'});
$reduction->status = $coupon->{'En ligne'} == "oui" ? 1 : 0;
2021-06-14 15:15:52 +02:00
if (
isset($coupon->{'Date de fin de diffusion'}) &&
$coupon->{'Date de fin de diffusion'} != "01/01/1970"
) {
$endDatetime = Carbon::createFromFormat(
'Y-m-d',
date('Y-m-d', strtotime(str_replace("/", "-", $coupon->{'Date de fin de diffusion'})))
);
} else {
$endDatetime = Carbon::createFromFormat('Y-m-d', date('Y-m-d', strtotime("2099-12-30")));
}
// Ne pas enregistrer les reductions dont la date de fin est déjà passée
if ($endDatetime < Carbon::now()) {
continue;
}
$reduction->end_date_broadcast = $endDatetime;
$reduction->save();
}
}
return redirect()->route('bo.reductions.index');
2020-10-05 15:21:25 +02:00
}
}