2021-04-27 17:29:47 +02:00
< ? php
namespace App\Http\Controllers\Api\v1 ;
use App\Calendrier ;
use App\Campagne ;
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.' ]);
}
2021-08-05 12:06:24 +02:00
if ( $campagne -> camp_type !== 0 ) {
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 ( 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 ;
}
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 )
]);
}
}