'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Show the form for creating a new resource. * * @return StatusResource */ public function create() { return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Store a newly created resource in storage. * * @param StoreRequest $request * @return CustomersResource | StatusResource */ public function store(StoreRequest $request) { $datas = $request->validated(); try { $customer = Customers::where([ ['hashcode', $datas['hashcode']], ['email', $datas['email']] ])->firstOrNew(); $customer->fill($datas); $customer->saveOrFail(); return new CustomersResource($customer); } catch (\Throwable $e) { Log::critical($e->getMessage()); return new StatusResource(['status' => 'KO', 'code' => '500', 'message' => 'Server Error.']); } } /** * Display the specified resource. * * @param integer $id * @return StatusResource */ public function show($id) { return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Show the form for editing the specified resource. * * @param integer $id * @return StatusResource */ public function edit($id) { return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Update the specified resource in storage. * * @param Request $request * @return StatusResource */ public function update(Request $request) { return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Remove the specified resource from storage. * * @param integer $id * @return StatusResource */ public function destroy($id) { return new StatusResource(['status' => 'KO', 'code' => '501', 'message' => 'Not Implemented']); } /** * Recupere le contenu d'un mur pour une campagne et un user * @param MurRequest $request * @return StatusResource * @throws ValidationException */ public function mur(MurRequest $request) { $datas = $request->validated(); $customer = Customers::where('hashcode', $datas['hashcode'])->first(); $campagne = Campagne::find($datas['refcamp']); if (!$campagne->camp_type->equals(CampaignTypes::mur())) { return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign is not mur.']); } if ($campagne->camp_published === 0) { return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']); } $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; } } // Available for user $coupon->isUsed = $this->isUsed($coupon, $campagne, $customer); $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) ]); } /** * Recupere le contenu d'un panier pour une campagne et un user * @param BasketRequest $request * @return StatusResource * @throws ValidationException */ public function basket(BasketRequest $request) { $montantDispo = 0; $montantTotal = 0; $nbCoupons = 0; $couponTotal = 0; $coupons = []; $datas = $request->validated(); $customer = Customers::where('hashcode', $datas['hashcode'])->first(); $campagne = Campagne::find($datas['refcamp']); if (!$campagne->camp_type->equals(CampaignTypes::panier())) { return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign is not basket.']); } if ($campagne->camp_published === 0) { return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Campaign not found.']); } $basket = $customer->baskets()->where('campagne_id', $campagne->camp_id)->first(); if (is_null($basket)) { return new StatusResource(['status' => 'KO', 'code' => 404, 'message' => 'Basket not found.']); } foreach ($basket->contents as $content) { $published = true; $nbCoupons += $content->quantity; $couponTotal += $content->printed; $montantTotal += ($content->coupon->coupon_value * $content->printed); $coupon = $content->coupon()->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())")->first(); if (!is_null($coupon)) { // ---- ContrĂ´le des calendriers de diffusion $calendars = Calendrier::where(['calendrier_couponId' => $coupon->coupon_id])->get(); if (!$calendars->isEmpty()) { $published = false; foreach ($calendars as $calendar) { if ($calendar->isPublished()) { $published = true; } } } if ($published){ $montantDispo += ($coupon->coupon_value * $content->quantity); $montantTotal += ($coupon->coupon_value * $content->quantity); $couponTotal += $content->quantity; $coupons[] = [ 'quantity' => $content->quantity, 'printed' => $content->printed, 'coupon' => new CouponsResource($coupon) ]; } } } return new StatusResource([ 'status' => "OK", 'ref' => $basket->uuid, 'name' => $campagne->camp_name, 'limited_printing' => $campagne->camp_limitedPrinting, 'available_coupon' => $nbCoupons, 'available_amount' => $montantDispo, 'total_coupon' => $couponTotal, 'total_amount' => $montantTotal, 'coupons' => $coupons ]); } }