input('campid'); $campagne = Campagne::where('camp_id', $camp_id)->first(); $ids = $request->input('ids'); $coupons = Coupon::find($ids); $campagne->coupons()->attach($coupons); return json_encode($coupons); } // ---- Efface des coupons d'une campagne public function remove_coupons_ajax(Request $request) { $camp_id = $request->input('campid'); $campagne = Campagne::where('camp_id', $camp_id)->first(); $coupon_id = $request->input('couponid'); $coupon = Coupon::find($coupon_id); $campagne->coupons()->detach($coupon_id); return json_encode($coupon); } // ---- Dépublie un coupon public function unpublishCouponsAjax(Request $request) { $coupon_id = $request->input('couponid'); $coupon = Coupon::find($coupon_id); $coupon->coupon_published = 0; $coupon->save(); return json_encode($coupon); } // ---- Publie un coupon public function publishCouponsAjax(Request $request) { $coupon_id = $request->input('couponid'); $coupon = Coupon::find($coupon_id); $coupon->coupon_published = 1; $coupon->save(); return json_encode($coupon); } // ---- Impression des BR public function impressionAjax(Request $request) { if ($request->session()->has('coupons')) { $couponsToPrint = $request->session()->get('coupons'); } if ($request->session()->has('campagne')) { $campagne = $request->session()->get('campagne'); } else { die(); } if ($request->session()->has('contact')) { $contact = $request->session()->get('contact'); } else { die(); } if ($request->session()->has('panier')) { $panier = $request->session()->get('panier'); } if ($contact->contact_ref == "DEMO") { $source = 'ADMIN'; } else { $source = 'API'; } // ---- INIT du log $log = new Log(); $log->log_action = config('constants.impression'); $log->log_source = $source; $log->log_contactId = $contact->contact_id; $log->log_refsite = $campagne->camp_siteId; $log->log_params = json_encode(['refcamp' => $campagne->camp_id]); $couponsPrinted = []; $coupons = ''; $coupons .= ''; $coupons .= '
'; if ($campagne->camp_type->equals(CampaignTypes::mur())) { // ---- POUR LES MURS if (!isset($couponsToPrint)) { die(); } $nbCoupon = 0; foreach ($couponsToPrint as $coupon_code) { $cp = Coupon::where(['coupon_code' => $coupon_code])->first(); if ($this->isAvailable($cp, $campagne, $contact) && $this->isAvailableToPrint($cp, $campagne)) { array_push($couponsPrinted, ['cp_code' => $cp->coupon_code, 'qty' => 1]); $imgCoupon = $this->printCp($cp, $contact); $coupons .= ''; $nbCoupon++; if ($nbCoupon % 3 == 0) { $coupons .= '
'; } // ----- mémorise l'impression $mur = new Mur(); $mur->mur_campid = $campagne->camp_id; $mur->mur_contactId = $contact->contact_id; $mur->mur_couponId = $cp->coupon_id; $mur->save(); // Sauvegarde de stat $this->saveStat($campagne, $cp); }//end if }//end foreach } elseif ($campagne->camp_type->equals(CampaignTypes::panier())) { // ---- POUR LES PANIERS if (!isset($panier)) { die(); } $allPanierContent = $panier->panierContents()->get(); if (count($allPanierContent) == 0) { die("error"); } $nbCoupon = 0; foreach ($allPanierContent as $panierContent) { $cp = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first(); if ($cp && $this->isAvailableToPrint($cp, $campagne)) { $imgCoupon = $this->printCp($cp, $contact); // ---- Création du html du contenu à imprimer if ($campagne->camp_limitedPrinting == 0) { for ($i = 0; $i < $panierContent->panier_content_quantity; $i++) { $coupons .= ''; $nbCoupon++; if ($nbCoupon % 3 == 0) { $coupons .= '
'; } } $newQtyAvailable = 0; $newQtyPrinted = $panierContent->panier_content_quantity + $panierContent->panier_content_printed; array_push($couponsPrinted, ['cp_code' => $cp->coupon_code, 'qty' => $panierContent->panier_content_quantity]); // Sauvegarde de stat $this->saveStat($campagne, $cp); } else { if ($panierContent->panier_content_quantity > 0) { $coupons .= ''; $nbCoupon++; if ($nbCoupon % 3 == 0) { $coupons .= '
'; } $newQtyAvailable = $panierContent->panier_content_quantity - 1; $newQtyPrinted = $panierContent->panier_content_printed + 1; array_push($couponsPrinted, ['cp_code' => $cp->coupon_code, 'qty' => 1]); // Sauvegarde de stat $this->saveStat($campagne, $cp); } }//end if // ---- Mémorise l'impression $panierContent->panier_content_quantity = $newQtyAvailable; $panierContent->panier_content_printed = $newQtyPrinted; $panierContent->save(); }//end if }//end foreach // ---- Update du status du panier $qty = $panier->panierContents()->sum('panier_content_quantity'); if ($qty == 0) { $panier->panier_pending = 0; } else { $panier->panier_pending = 1; } $panier->save(); } elseif ($campagne->camp_type->equals(CampaignTypes::murss())) { // ---- POUR LES MURS SANS SELECTION $nbCoupon = 0; $cps = $campagne->coupons()->get(); foreach ($cps as $cp) { // ---- Contrôle si le BR a déjà fait l'objet d'une impression if ($this->isAvailable($cp, $campagne, $contact) && $this->isAvailableToPrint($cp, $campagne)) { // ---- Génère l'image du BR à imprimer $imgCoupon = $this->printCp($cp, $contact); $coupons .= ''; $nbCoupon++; if ($nbCoupon % 3 == 0) { $coupons .= '
'; } array_push($couponsPrinted, ['cp_code' => $cp->coupon_code, 'qty' => 1]); // ----- mémorise l'impression $mur = new Mur(); $mur->mur_campid = $campagne->camp_id; $mur->mur_contactId = $contact->contact_id; $mur->mur_couponId = $cp->coupon_id; $mur->save(); // Sauvegarde de stat $this->saveStat($campagne, $cp); }//end if }//end foreach } elseif ($campagne->camp_type->equals(CampaignTypes::paniers())) { // ---- POUR LES PANIERS AVEC SELECTION if (!isset($couponsToPrint)) { die(); } $nbCoupon = 0; if (!isset($panier)) { die(); } foreach ($couponsToPrint as $coupon_code) { $cp = Coupon::where(['coupon_code' => $coupon_code])->first(); if ($this->isAvailable($cp, $campagne, $contact) && $this->isAvailableToPrint($cp, $campagne)) { $imgCoupon = $this->printCp($cp, $contact); $panierContent = PanierContent::where(['panier_content_couponId' => $cp->coupon_id, 'panier_content_panierId' => $panier->panier_id])->first(); if ($panierContent->panier_content_quantity > 0) { $coupons .= ''; $nbCoupon++; if ($nbCoupon % 3 == 0) { $coupons .= '
'; } $newQtyAvailable = $panierContent->panier_content_quantity - 1; $newQtyPrinted = $panierContent->panier_content_printed + 1; // Sauvegarde de stat $this->saveStat($campagne, $cp); // ---- Mémorise l'impression $panierContent->panier_content_quantity = $newQtyAvailable; $panierContent->panier_content_printed = $newQtyPrinted; $panierContent->save(); } array_push($couponsPrinted, ['cp_code' => $cp->coupon_code, 'qty' => 1]); }//end if }//end foreach // ---- Update du status du panier $qty = $panier->panierContents()->sum('panier_content_quantity'); if ($qty == 0) { $panier->panier_pending = 0; } else { $panier->panier_pending = 1; } $panier->save(); }//end if $coupons .= '
'; $log->log_statut = 'OK'; $log->log_message = json_encode(['Message' => 'Impressions réussies', 'Coupons' => $couponsPrinted], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $log->save(); return $coupons; } // ---- Retour au bon index une fois l'impression faite public function backToIndex(Request $request) { if ($request->session()->has('campagne')) { $campagne = $request->session()->get('campagne'); } else { die(); } if ($campagne->camp_type->equals(CampaignTypes::panier()) || $campagne->camp_type->equals(CampaignTypes::paniers())) { if ($request->session()->has('panier')) { $panier = $request->session()->get('panier'); } else { die(); } return redirect(url('/') . '/?basketid=' . $panier->panier_ref); } } }