76 lines
2.8 KiB
PHP
76 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Bo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Ranges;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Reductions;
|
|
use Carbon\Carbon;
|
|
use LDCWeb\MesBR;
|
|
|
|
class ReductionsController extends Controller
|
|
{
|
|
public function index() {
|
|
$r = Reductions::all();
|
|
$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();
|
|
foreach ($products as $product)
|
|
if (in_array($product, $range->products()->pluck('id')->toArray()))
|
|
array_splice($products, array_search($product, $products), 1);
|
|
}
|
|
$reduction->products()->sync($products);
|
|
$reduction->notification = $notification;
|
|
$reduction->save();
|
|
|
|
return "Traitement terminé";
|
|
}
|
|
|
|
/**
|
|
* Permet la mise à jour des bons de réductions depuis MesBR manuellement dans le BO
|
|
*/
|
|
public function updateBR() {
|
|
// On récupère les réductions depuis MesBR
|
|
$mesBR = new MesBR(config('app.REF_SITE'), config('app.REF_CAMP'));
|
|
$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;
|
|
|
|
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")));
|
|
}
|
|
$reduction->end_date_broadcast = $endDatetime;
|
|
$reduction->save();
|
|
}
|
|
}
|
|
|
|
return redirect()->route('bo.reductions.index');
|
|
}
|
|
}
|