ldc-mesbr-app/app/Http/Controllers/Api/v1/MurController.php

69 lines
2.4 KiB
PHP
Raw Permalink Normal View History

2021-04-27 17:29:47 +02:00
<?php
namespace App\Http\Controllers\Api\v1;
use App\Models\Calendrier;
use App\Models\Campagne;
use App\Enums\CampaignTypes;
2021-04-27 17:29:47 +02:00
use App\Http\Controllers\Controller;
2021-08-05 12:06:24 +02:00
use App\Http\Requests\Murs\MursShowRequest;
2021-04-27 17:29:47 +02:00
use App\Http\Resources\CouponsResource;
use App\Http\Resources\StatusResource;
use App\Traits\CouponTrait;
class MurController extends Controller
{
use CouponTrait;
2021-08-05 12:06:24 +02:00
public function show(MursShowRequest $request)
2021-04-27 17:29:47 +02:00
{
$datas = $request->validated();
$campagne = Campagne::find($datas['refcamp']);
if ($campagne->camp_published === 0) {
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
}
2025-08-14 17:05:09 +02:00
if (!$campagne->camp_type->equals(CampaignTypes::mur())) {
2021-08-05 12:06:24 +02:00
return new StatusResource(['status' => 'KO', 'code' => 403, 'message' => 'Campaign type error.']);
}
2021-04-27 17:29:47 +02:00
$coupons = $campagne->coupons()->whereRaw("coupon_published = 1 AND (coupon_mindatediffusion IS NULL OR coupon_mindatediffusion <= NOW()) AND (coupon_maxdatediffusion IS NULL OR coupon_maxdatediffusion >= NOW()) AND (coupon_maxdatevalidity IS NULL OR coupon_maxdatevalidity >= NOW())")->get();
$montantDispo = 0;
$montantTotal = 0;
// TODO : Improve
foreach ($coupons as $key => $coupon) {
// ---- Contrôle des calendriers de diffusion
$calendars = Calendrier::where(['calendrier_couponId' => $coupon->coupon_id])->get();
if (!$calendars->isEmpty()) {
$pub = false;
foreach ($calendars as $calendar) {
if ($calendar->isPublished()) {
2021-04-27 17:29:47 +02:00
$pub = true;
}
}
if (!$pub) {
$coupons->forget($key);
continue;
}
}
$montantTotal += $coupon->coupon_value;
if (!$coupon->isUsed) {
$montantDispo += $coupon->coupon_value;
}
2025-04-03 09:30:16 +02:00
}//end foreach
2021-04-27 17:29:47 +02:00
return new StatusResource([
'status' => "OK",
2021-08-05 12:06:24 +02:00
'name' => $campagne->camp_name,
'limited_printing' => $campagne->camp_limitedPrinting,
2021-04-27 17:29:47 +02:00
'total' => count($coupons),
'available_amount' => $montantDispo,
'total_amount' => $montantTotal,
'coupons' => CouponsResource::collection($coupons)
]);
}
}