with('search', false); } public function search(SearchContact $request) { session()->put('active_route', 'contact'); $contacts = Contact::where('contact_siteId', session()->get('site')->site_id) ->searchFirstname($request->searchFirstname) ->searchName($request->searchName) ->searchEmail($request->searchEmail) ->searchCp($request->searchCp) ->searchVille($request->searchVille) ->searchCountry($request->searchCountry) ->orderBy('contact_createdate', 'DESC') ->paginate(15, ['*'], 'page', $request->page); $searchData = array( 'name' => $request->searchName, 'firstname' => $request->searchFirstname, 'email' => $request->searchEmail, 'cp' => $request->searchCp, 'ville' => $request->searchVille, 'pays' => $request->searchCountry ); return view('contact.index')->with('contacts', $contacts)->with('search', true)->with('searchData', $searchData); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('contact.create'); } /** * Store a newly created resource in storage. * * @param StoreContact $request * @return \Illuminate\Http\Response */ public function store(StoreContact $request) { // TODO : Revoir le passage du site $site = session()->get('site'); $contact = new Contact(); $contact->fill($request->validated()); $contact->contact_siteId = $site->site_id; $contact->save(); return redirect()->route('contact.edit', ['contact' => $contact]); } /** * Show the form for editing the specified resource. * * @param \App\Campagne $campagne * @return \Illuminate\Http\Response */ public function edit(Contact $contact) { $campagnes = Campagne::where(['camp_siteId' => $contact->contact_siteId, 'camp_published' => 1])->get(); return view('contact.edit', ['contact' => $contact, 'campagnes' => $campagnes]); } /** * Update the specified resource in storage. * * @param UpdateContact $request * @param \App\Contact $contact * @return \Illuminate\Http\Response */ public function update(UpdateContact $request, Contact $contact) { $contact->fill($request->validated()); if ($contact->save()) { session()->flash('update_ok', __('La campagne a bien été modifiée')); } else { session()->flash('update_nok', "Erreur lors de l'enregistrement"); } return redirect()->route('contact.edit', ['contact' => $contact]); } public function updateContact(Request $request) { $error = false; // ---- Contrôle des paramètres 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; } 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 ($error) { return response()->json([ 'Statut' => 'KO', 'Code' => 101, 'Message' => 'Des paramètres de la requête sont mal renseignés ou non présents' ]); } $contact = Contact::where(['contact_siteId' => $refsite, 'contact_ref' => $refadherent])->first(); if ($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'); if (isset($request->hashcode) && $request->hashcode != "") { $contact->contact_hash = $request->hashcode; } } else { $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; if (isset($request->hashcode) && $request->hashcode != "") { $contact->contact_hash = $request->hashcode; } else { $contact->contact_hash = strtoupper(md5(uniqid(time(), true))); } } else { return response()->json([ 'Statut' => 'KO', 'Code' => 102, 'Message' => 'Le site spécifié n\'existe pas' ]); }//end if }//end if if ($contact->save()) { return response()->json([ 'Statut' => 'OK', 'contact' => $contact ]); } else { return response()->json([ 'Statut' => 'KO', 'Code' => 109, 'Message' => 'Une erreur est survenue' ]); } } public function loadWidget(LoadWidgetContact $request, Contact $contact) { $camp_id = $request->camp_id; $campagne = Campagne::where(['camp_id' => $camp_id])->first(); $coupons = $campagne->coupons; foreach ($coupons as $key => $coupon) { if (!$this->isAvailableToPrint($coupon, $campagne)) { $coupons->forget($key); } } $allLogs = Log::where(['log_refsite' => $campagne->camp_siteId, 'log_contactId' => $contact->contact_id, 'log_statut' => 'OK'])->orderBy('created_at', 'DESC')->get(); $logs = array(); foreach ($allLogs as &$l) { $params = json_decode($l->log_params); if ($l->log_action == 3 || $l->log_action == 1) { $l->log_message = json_decode($l->log_message, true); } if (intval($params->refcamp) == $camp_id) { array_push($logs, $l); } } // ---- Pour les types murs if ($campagne->camp_type->equals(CampaignTypes::mur()) || $campagne->camp_type->equals(CampaignTypes::murss())) { foreach ($coupons as &$coupon) { $coupon->isAvailable = $this->isAvailable($coupon, $campagne, $contact); } unset($coupon); // Montant total et Nombre réductions disponible $montantDispo = 0; $montantTotal = 0; $nbCoupon = 0; foreach ($coupons as $coupon) { $montantTotal += $coupon->coupon_value; if ($coupon->isAvailable == true) { $montantDispo += $coupon->coupon_value; $nbCoupon++; } } if (count($coupons) === $nbCoupon) { $reset = false; } else { $reset = true; } $campagne->url = url('/') . "/?refsite=" . $campagne->camp_siteId . "&refcamp=" . $camp_id . "&hash=" . $contact->contact_hash; $returnHTML = view('widgets.mur') ->with([ 'campagne' => $campagne, 'reset' => $reset, 'montantTotal' => $montantTotal, 'montantDispo' => $montantDispo, 'logs' => $logs, 'contact' => $contact]) ->renderSections()['widget']; return json_encode(array('success' => true, 'html' => $returnHTML)); } else { // ---- Pour les types paniers $panier = Panier::where(['panier_campId' => $campagne->camp_id, 'panier_contactId' => $contact->contact_id, 'panier_pending' => 1])->first(); if ($panier) { $panier_ref = $panier->panier_ref; foreach ($coupons as &$coupon) { $paniercontent = PanierContent::where(['panier_content_couponId' => $coupon->coupon_id, 'panier_content_panierId' => $panier->panier_id])->first(); if ($paniercontent) { $coupon->qty = $paniercontent->panier_content_quantity; } else { $coupon->qty = 0; } } $campagne->url = url('/') . "/?basketid=" . $panier_ref; unset($coupon); } else { $panier_ref = ""; foreach ($coupons as &$coupon) { $coupon->qty = 0; } $campagne->url = "Pas d'url disponible (panier non créé)"; } $returnHTML = view('widgets.panier') ->with([ 'campagne' => $campagne, 'contact' => $contact, 'panier' => $panier_ref, 'logs' => $logs, 'coupons' => $coupons ]) ->renderSections()['widget']; return json_encode(array('success' => true, 'html' => $returnHTML)); } } }