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 !== 0) { 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 (strtotime(date('Y-m-d H:i:s')) > strtotime($calendar->calendrier_startdate) && strtotime(date('Y-m-d H:i:s')) < strtotime($calendar->calendrier_enddate)) { $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) ]); } }