79 lines
2.8 KiB
PHP
79 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Models\Reductions;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class UpdateReductions implements ShouldQueue
|
|
{
|
|
use Dispatchable;
|
|
use InteractsWithQueue;
|
|
use Queueable;
|
|
use SerializesModels;
|
|
|
|
public $console = null;
|
|
|
|
public function handle()
|
|
{
|
|
// 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;
|
|
|
|
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();
|
|
}
|
|
}
|
|
|
|
$this->log(__CLASS__ . " Reductions updated successfuly!");
|
|
}
|
|
|
|
private function log(string $message)
|
|
{
|
|
if ($this->console) {
|
|
$this->console->info($message);
|
|
}
|
|
Log::debug($message);
|
|
}
|
|
}
|