customer_hashcode)->first(); $campaign = Campaign::find($request->campaign_id); $couponsToPrint = []; $crmApi = new CrmApiV2( config('services.crm.endpoint'), $campaign->brand->crm_token, $campaign->brand->crm_password ); $crmCustomer = $crmApi->getCustomer($customer->hashcode); if ($campaign->type === CampaignTypes::WALL) { $coupons = $request->coupons; $availableCoupons = $campaign->coupons ->where('status', 1)->where('can_be_used', 1)->whereIn('id', explode(",", $coupons)); // FIXME : Mettre une condition et un retour erreur si availableCoupons est vide pour ne pas renvoyer un PDF vide. foreach ($availableCoupons as $coupon) { if (!CouponHelper::wallCouponIsUsed($coupon, $campaign, $customer)) { $printUniqId = CouponLog::create( ['coupon_id' => $coupon->id, 'campaign_id' => $campaign->id, 'customer_id' => $customer->id] )->id; $cpH = new CouponHelper($coupon, $campaign, $crmCustomer, $printUniqId); $couponsToPrint[] = $cpH->generate(); // ----- Mémorise l'impression. $wall = new PrintedWall(); $wall->campaign_id = $campaign->id; $wall->coupon_id = $coupon->id; $wall->customer_id = $customer->id; $wall->save(); // FIXME : Ajout le save pour les stats, se servir de la table coupon_logs pour journaliser ? } } } //end if if ($campaign->type === CampaignTypes::BASKET) { $basket = Basket::firstOrCreate( [ 'campaign_id' => $campaign->id, 'customer_id' => $customer->id ] ); foreach ($basket->content as $content) { if ($content->coupon->status === 1 && $content->coupon->can_be_used) { for ($i = 1; $i <= $content->qty; $i++) { $printUniqId = CouponLog::create( [ 'coupon_id' => $content->coupon->id, 'campaign_id' => $campaign->id, 'customer_id' => $customer->id ] )->id; $cpH = new CouponHelper($content->coupon, $campaign, $crmCustomer, $printUniqId); $couponsToPrint[] = $cpH->generate(); } } $basket->content()->delete(); } } //end if $pdfName = sprintf("Coupons_%s_%s_%s.pdf", $crmCustomer->firstname, $crmCustomer->lastname, Str::ulid()); $pdfPath = sprintf("%s/%s", 'app/private/coupons_pdf', $pdfName); Pdf::loadView('api.pdf.coupons', ['coupons' => $couponsToPrint])->save(storage_path($pdfPath)); // FIXME : Gérer l'échec /** * Methode Pixibox a fixer sur le print * return route('coupons.print', ['pdf' => * Storage::disk('coupons_pdf')->temporaryUrl($pdfName, now()->addMinutes(config('coupons.fileValidity')))]);. */ return Storage::disk('coupons_pdf')->temporaryUrl($pdfName, now()->addMinutes(config('coupons.fileValidity'))); } }