query('basketid')); $panier = Panier::where(['panier_ref' => $request->basketid])->first(); if (!$panier) { abort(404); } session()->put('panier', $panier); $panierCouponsCount = $this->getCountCouponsPanierPublished($panier); $contact = Contact::where(['contact_id' => $panier->panier_contactId])->first(); if (!$contact) { abort(404); } session()->put('contact', $contact); $campagne = Campagne::where(['camp_id' => $panier->panier_campId, 'camp_published' => 1])->first(); if (!$campagne) { abort(404); } session()->put('campagne', $campagne); if ($campagne->camp_type == 1) { $coupons = $this->getCouponsPublished($campagne); } else { $panierContents = $this->getPanierContentPublished($panier); $coupons = array(); foreach ($panierContents as $panierContent) { $cp = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first(); $qty = $panierContent->panier_content_quantity; for ($i = 0; $i < $qty; $i++) { $coupons[] = $cp; } } } session()->put('coupons', $coupons); return view('landings::' . $panier->panier_campId . '.index') ->with(['ref' => $panier->panier_campId, 'coupons' => $coupons, 'contact' => $contact, 'nb' => $panierCouponsCount]); } public function printPanierSelect(Request $request) { if (isset($request->coupons)) { session()->put('coupons', $request->coupons); $coupons = $request->coupons; } if ($request->session()->has('campagne')) { $campagne = $request->session()->get('campagne'); } $ref = $campagne->camp_id; return view('landings::' . $ref . '.imprimer') ->with(['ref' => $ref, 'coupons' => $coupons, 'contact' => $request->session()->get('contact')]); } public function updateBasket(Request $request) { if (isset($request->admin)) { $source = 'ADMIN'; } else { $source = 'API'; } // ---- INIT du log $log = new Log(); $log->log_action = config('constants.updatebasket'); $log->log_source = $source; if (isset($request->basketid)) { $basketid = $request->basketid; if ($basketid != '') { $panier = Panier::where('panier_ref', $basketid)->first(); if (!$panier) { $log->log_params = json_encode(['basketid' => $basketid]); $log->log_statut = 'NOK'; $log->log_message = "Le panier n'existe pas"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 106, 'Message' => 'Le panier n\'existe pas' ]); } if (isset($request->panier) && $request->panier != "") { $panier = $request->panier; $panierTab = explode(",", $panier); $coupons = array(); foreach ($panierTab as $panier) { $pos = strpos($panier, ")"); if ($pos === false || substr_count($panier, ")") != 1) { $log->log_params = json_encode(['basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'NOK'; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 101, 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' ]); } $quantity = substr($panier, 0, $pos); $quantity = str_replace("(", "", $quantity); $couponCode = substr($panier, $pos + 1); if (is_numeric($quantity) && is_numeric($couponCode)) { if (isset($coupons[$couponCode])) { $coupons[$couponCode] = $coupons[$couponCode] + $quantity; } else { $coupons[$couponCode] = $quantity; } } else { $log->log_params = json_encode(['basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'NOK'; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 101, 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' ]); } } //---- Préparation message de log avec coupons $panierCoupons = array(); foreach ($coupons as $code => $qty) { array_push($panierCoupons, ['cp_code' => $code, 'qty' => $qty]); } if (sizeof($coupons) == 0) { die(); } } else { $log->log_params = json_encode(['basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'NOK'; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 101, 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' ]); } // ---- MAJ du panier $panier = Panier::where('panier_ref', $basketid)->first(); if ($panier) { foreach ($coupons as $couponCode => $quantity) { $cp = Coupon::where('coupon_code', $couponCode)->first(); $exists = $cp->campagnes->contains($panier->panier_campId); if ($cp && $exists) { $site = $cp->coupon_siteId; $panierContent = PanierContent::where(['panier_content_panierId' => $panier->panier_id, 'panier_content_couponId' => $cp->coupon_id])->first(); if ($panierContent) { $quantity += $panierContent->panier_content_quantity; if ($quantity <= 0) { $quantity = 0; } // MAJ du contenu $panierContent->panier_content_quantity = $quantity; $panierContent->save(); } else { // Ajout du contenu if ($quantity > 0) { $panierNewContent = new PanierContent(); $panierNewContent->panier_content_panierId = $panier->panier_id; $panierNewContent->panier_content_couponId = $cp->coupon_id; $panierNewContent->panier_content_quantity = $quantity; $panierNewContent->save(); } } } else { $log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent, 'refsite' => $request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune, 'panier' => $request->panier]); $log->log_statut = 'NOK'; $log->log_message = "Le coupon ne correspond pas aux coupons liés a la campagne"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 110, 'Message' => 'Le coupon ne correspond pas aux coupons liés a la campagne' ]); } } // MAJ du status du panier $qty = $panier->panierContents()->sum('panier_content_quantity'); if ($qty == 0) { $panier_pending = 0; } else { $panier_pending = 1; } $panier->panier_pending = $panier_pending; $panier->save(); $campagne = Campagne::where(['camp_id' => $panier->panier_campId])->first(); //var_dump($panier->panier_campId); $log->log_refsite = $campagne->camp_siteId; $log->log_contactId = $panier->panier_contactId; $log->log_params = json_encode(['refcamp' => $panier->panier_campId, 'basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'OK'; $log->log_message = json_encode(['Message' => 'Le panier a bien été créé/mis à jour', 'Coupons' => $panierCoupons], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $log->save(); $contact = Contact::where(['contact_id' => $panier->panier_contactId])->first(); $site = Site::where(['site_id' => $campagne->camp_siteId])->first(); if (isset($contact->contact_nom) && isset($site->site_nom)) { if ($panier->panier_pending == 1) { $encours = "oui"; } else { $encours = "non"; } $response = new \stdClass(); $response->Site = $site->site_nom . " (" . $site->site_id . ")"; $response->Campagne = $campagne->camp_name . " (" . $campagne->camp_id . ")"; $response->Panier = $panier->panier_ref; $response->DateCreation = date("d/m/Y", strtotime($panier->panier_createdate)); $response->EnCours = $encours; $response->Nom = $contact->contact_nom; $response->Prenom = $contact->contact_prenom; $response->Email = $contact->contact_email; $response->CodePostal = $contact->contact_cp; $response->Commune = $contact->contact_ville; $allPanierContent = $panier->panierContents()->get(); foreach ($allPanierContent as $panierContent) { $panCont = []; $coupon = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first(); if ($coupon) { array_push($panCont, $coupon->coupon_code . " - " . $coupon->coupon_name . " (x" . $panierContent->panier_content_quantity . ")"); } } $response->panierContent = $panCont; return Response::json([ 'Statut' => 'OK', 'Panier' => $response ]); } else { return Response::json([ 'Statut' => 'OK', 'Panier' => $panier ]); } } else { $log->log_params = json_encode(['basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'NOK'; $log->log_message = "Le panier n'existe pas"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 106, 'Message' => 'Le panier n\'existe pas' ]); } } else { $log->log_params = json_encode(['basketid' => $basketid, 'panier' => $panier]); $log->log_statut = 'NOK'; $log->log_message = "Le panier n'existe pas"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 106, 'Message' => 'Le panier n\'existe pas' ]); } } else { // ---- Contrôle des paramètres $error = false; if (isset($request->refcamp) && $request->refcamp != "") { $refcamp = $request->refcamp; $campagne = Campagne::where(['camp_id' => $refcamp])->first(); if (!$campagne || $campagne->camp_published == 0 || ($campagne->camp_type != 1 && $campagne->camp_type != 3)) { $log->log_params = json_encode(['refcamp' => $refcamp]); $log->log_statut = 'NOK'; $log->log_message = "La campagne n'existe pas ou n'est pas un panier"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 103, 'Message' => 'La campagne n\'existe pas ou n\'est pas un panier' ]); } } else { $error = true; } if (isset($request->refadherent) && $request->refadherent != "") { $refadherent = $request->refadherent; } else { $error = true; } if (isset($request->nom) && $request->nom != "") { $nom = $request->nom; } else { $error = true; } if (isset($request->refsite) && $request->refsite != "") { $refsite = $request->refsite; if ($refsite != $campagne->camp_siteId) { return Response::json([ 'Statut' => 'KO', 'Code' => 103, 'Message' => 'La campagne ne correspond à aucune campagnes du site' ]); } } else { $error = true; } if (isset($request->prenom) && $request->prenom != "") { $prenom = $request->prenom; } else { $error = true; } if (isset($request->email) && $request->email != "" && filter_var($request->email, FILTER_VALIDATE_EMAIL)) { $email = $request->email; } else { $error = true; } if (isset($request->code_postal) && $request->code_postal != "") { $code_postal = $request->code_postal; } else { $error = true; } if (isset($request->commune) && $request->commune != "") { $commune = $request->commune; } else { $error = true; } if (isset($request->pays) && $request->pays != "") { if (filter_var($request->pays, FILTER_VALIDATE_INT)) { $pays = $request->pays; } else { $error = true; } } else { $pays = 250; } if (isset($request->panier) && $request->panier != "") { $panier = $request->panier; $panierTab = explode(",", $panier); $coupons = array(); foreach ($panierTab as $panier) { $pos = strpos($panier, ")"); if ($pos === false) { $error = true; } $quantity = substr($panier, 0, $pos); $quantity = str_replace("(", "", $quantity); $couponCode = substr($panier, $pos + 1); if (is_numeric($quantity) && is_numeric($couponCode) && $quantity > 0) { if (isset($coupons[$couponCode])) { $coupons[$couponCode] = $coupons[$couponCode] + $quantity; } else { $coupons[$couponCode] = $quantity; } } } if (sizeof($coupons) == 0) { die(); } } else { $error = true; } //---- Préparation message de log avec coupons if (isset($coupons)) { $panierCoupons = array(); foreach ($coupons as $code => $qty) { array_push($panierCoupons, ['cp_code' => $code, 'qty' => $qty]); } } if ($error) { $log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent, 'refsite' => $request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune, 'panier' => $request->panier]); $log->log_statut = 'NOK'; $log->log_message = "Des paramètres de la requête sont mal renseignés ou non présents"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 101, 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' ]); } // ---- Ajout/MAJ du contact $contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first(); if ($contact) { // ---- Mise à jour du contact $contact->contact_prenom = $prenom; $contact->contact_nom = $nom; $contact->contact_email = $email; $contact->contact_cp = $code_postal; $contact->contact_ville = $commune; $contact->contact_country = $pays; $contact->contact_updatedate = date('Y-m-d H:i:s'); } else { // ---- Création du contact $site = Site::where('site_id', $refsite)->first(); if ($site) { $contact = new Contact(); $contact->contact_nom = $nom; $contact->contact_prenom = $prenom; $contact->contact_ref = $refadherent; $contact->contact_email = $email; $contact->contact_cp = $code_postal; $contact->contact_ville = $commune; $contact->contact_country = $pays; $contact->contact_siteId = $refsite; $contact->contact_hash = strtoupper(md5(uniqid(time(), true))); } else { $log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent, 'refsite' => $request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune, 'panier' => $request->panier]); $log->log_statut = 'NOK'; $log->log_message = "Le site spécifié n'existe pas"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 102, 'Message' => 'Le site spécifié n\'existe pas' ]); } } if (!$contact->save()) { $log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent, 'refsite' => $request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune, 'panier' => $request->panier]); $log->log_statut = 'NOK'; $log->log_message = "Une erreur est survenue"; $log->save(); return Response::json([ 'Statut' => 'KO', 'Code' => 109, 'Message' => 'Une erreur est survenue' ]); } // ---- Ajout/MAJ du panier $panier = Panier::where(['panier_campId' => $refcamp, 'panier_contactId' => $contact->contact_id, 'panier_pending' => 1])->first(); if ($panier) { foreach ($coupons as $couponCode => $quantity) { $camp = Campagne::where('camp_id', $panier->panier_campId)->first(); $cp = $camp->coupons()->where('coupon_code', $couponCode)->first(); if ($cp) { $panierContent = PanierContent::where(['panier_content_panierId' => $panier->panier_id, 'panier_content_couponId' => $cp->coupon_id])->first(); if ($panierContent) { //$quantity += $panierContent->panier_content_quantity; $panierContent->panier_content_quantity = $quantity + $panierContent->panier_content_quantity; // MAJ du contenu $panierContent->save(); //$panierContent->update(['panier_content_quantity', $quantity]); } else { // Ajout du contenu if ($quantity > 0) { $panierNewContent = new PanierContent(); $panierNewContent->panier_content_panierId = $panier->panier_id; $panierNewContent->panier_content_couponId = $cp->coupon_id; $panierNewContent->panier_content_quantity = $quantity; $panierNewContent->save(); } } } } } else { // Ajout du panier et du contenu $panierRef = strtoupper(md5(uniqid(time(), true))); $panier = new Panier(); $panier->panier_ref = $panierRef; $panier->panier_campId = $refcamp; $panier->panier_contactId = $contact->contact_id; $panier->panier_createdate = date('Y-m-d H:i:s'); $panier->save(); foreach ($coupons as $couponCode => $quantity) { $cp = $campagne->coupons()->where('coupon_code', $couponCode)->first(); if ($cp) { // Ajout du contenu if ($quantity > 0) { $panierNewContent = new PanierContent(); $panierNewContent->panier_content_panierId = $panier->panier_id; $panierNewContent->panier_content_couponId = $cp->coupon_id; $panierNewContent->panier_content_quantity = $quantity; $panierNewContent->save(); } } } } $log->log_params = json_encode(['refcamp' => $request->refcamp, 'refadherent' => $request->refadherent, 'refsite' => $request->refsite, 'nom' => $request->nom, 'prenom' => $request->prenom, 'email' => $request->email, 'code postal' => $request->code_postal, 'commune' => $request->commune, 'panier' => $request->panier]); $log->log_contactId = $panier->panier_contactId; $log->log_refsite = $request->refsite; $log->log_statut = 'OK'; $log->log_message = json_encode(['Message' => 'Le panier a bien été créé/mis à jour', 'Coupons' => $panierCoupons], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $log->save(); $contact = Contact::where(['contact_id' => $panier->panier_contactId])->first(); $site = Site::where(['site_id' => $campagne->camp_siteId])->first(); if (isset($contact->contact_nom) && isset($site->site_nom)) { if ($panier->panier_pending == 1) { $encours = "oui"; } else { $encours = "non"; } $response = new \stdClass(); $response->Site = $site->site_nom . " (" . $site->site_id . ")"; $response->Campagne = $campagne->camp_name . " (" . $campagne->camp_id . ")"; $response->Panier = $panier->panier_ref; $response->DateCreation = date("d/m/Y", strtotime($panier->panier_createdate)); $response->EnCours = $encours; $response->Nom = $contact->contact_nom; $response->Prenom = $contact->contact_prenom; $response->Email = $contact->contact_email; $response->CodePostal = $contact->contact_cp; $response->Commune = $contact->contact_ville; $allPanierContent = $panier->panierContents()->get(); $panCont = []; foreach ($allPanierContent as $panierContent) { $coupon = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first(); if ($coupon) { array_push($panCont, $coupon->coupon_code . " - " . $coupon->coupon_name . " (x" . $panierContent->panier_content_quantity . ")"); } } $response->panierContent = $panCont; return Response::json([ 'Statut' => 'OK', 'Panier' => $response ]); } else { return Response::json([ 'Statut' => 'OK', 'Panier' => $panier ]); } } } public function showBasket(Request $request) { // ---- Contrôle des paramètres if (isset($request->basketid) && $request->basketid != "") { $basketid = $request->basketid; } else { return Response::json([ 'Statut' => 'KO', 'Code' => 106, 'Message' => 'Le panier n\'existe pas' ]); } $panier = Panier::where('panier_ref', $basketid)->first(); if (!$panier) { return Response::json([ 'Statut' => 'KO', 'Code' => 106, 'Message' => 'Le panier n\'existe pas' ]); } if ($panier->panier_pending == 1) { $encours = "oui"; } else { $encours = "non"; } $contact = $panier->contact()->where(['contact_id' => $panier->panier_contactId])->first(); if (!$contact) { return Response::json([ 'Statut' => 'KO', 'Code' => 104, 'Message' => 'Le contact n\'existe pas' ]); } $campagne = $panier->campagne()->where(['camp_id' => $panier->panier_campId])->first(); if (!$campagne) { return Response::json([ 'Statut' => 'KO', 'Code' => 103, 'Message' => 'La campagne n\'existe pas' ]); } $site = $campagne->site()->first(); if ($site === null) { return Response::json([ 'Statut' => 'KO', 'Code' => 102, 'Message' => 'Le site n\'existe pas' ]); } $allPanierContent = $panier->panierContents()->get(); if ($allPanierContent->count() == 0) { return Response::json([ 'Statut' => 'KO', 'Code' => 108, 'Message' => 'Le panier n\'a pas de coupons liés' ]); } $response = new \stdClass(); $response->Site = $site->site_nom . " (" . $site->site_id . ")"; $response->Campagne = $campagne->camp_name . " (" . $campagne->camp_id . ")"; $response->Panier = $panier->panier_ref; $response->DateCreation = date("d/m/Y", strtotime($panier->panier_createdate)); $response->EnCours = $encours; $response->Nom = $contact->contact_nom; $response->Prenom = $contact->contact_prenom; $response->Email = $contact->contact_email; $response->CodePostal = $contact->contact_cp; $response->Commune = $contact->contact_ville; $panCont = []; foreach ($allPanierContent as $panierContent) { $coupon = Coupon::where(['coupon_id' => $panierContent->panier_content_couponId])->first(); if ($coupon) { array_push($panCont, $coupon->coupon_code . " - " . $coupon->coupon_name . " (x" . $panierContent->panier_content_quantity . ")"); } } $response->panierContent = $panCont; return Response::json([ 'Statut' => 'OK', 'Informations Panier' => $response ]); } }