68 lines
2.4 KiB
PHP
68 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\v1;
|
|
|
|
use App\Models\Calendrier;
|
|
use App\Models\Campagne;
|
|
use App\Enums\CampaignTypes;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Murs\MursShowRequest;
|
|
use App\Http\Resources\CouponsResource;
|
|
use App\Http\Resources\StatusResource;
|
|
use App\Traits\CouponTrait;
|
|
|
|
class MurController extends Controller
|
|
{
|
|
use CouponTrait;
|
|
|
|
public function show(MursShowRequest $request)
|
|
{
|
|
$datas = $request->validated();
|
|
|
|
$campagne = Campagne::find($datas['refcamp']);
|
|
if ($campagne->camp_published === 0) {
|
|
return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']);
|
|
}
|
|
if (!$campagne->camp_type->equals(CampaignTypes::mur())) {
|
|
return new StatusResource(['status' => 'KO', 'code' => 403, 'message' => 'Campaign type error.']);
|
|
}
|
|
|
|
$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()) {
|
|
$pub = true;
|
|
}
|
|
}
|
|
if (!$pub) {
|
|
$coupons->forget($key);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
$montantTotal += $coupon->coupon_value;
|
|
if (!$coupon->isUsed) {
|
|
$montantDispo += $coupon->coupon_value;
|
|
}
|
|
}//end foreach
|
|
|
|
return new StatusResource([
|
|
'status' => "OK",
|
|
'name' => $campagne->camp_name,
|
|
'limited_printing' => $campagne->camp_limitedPrinting,
|
|
'total' => count($coupons),
|
|
'available_amount' => $montantDispo,
|
|
'total_amount' => $montantTotal,
|
|
'coupons' => CouponsResource::collection($coupons)
|
|
]);
|
|
}
|
|
}
|