From: Vincent Vanwaelscappel Date: Mon, 16 Oct 2023 10:51:29 +0000 (+0200) Subject: wait #6413 @0.25 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=2b4dc557eb3a97569b0086b7268928cb06f45362;p=pmi.git wait #6413 @0.25 --- diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index c8833ff..dabfacd 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -16,6 +16,7 @@ use Carbon\Carbon; use Cubist\Backpack\app\Http\Controllers\CubistFrontController; use Cubist\Backpack\app\Magic\PageData; use Cubist\Backpack\app\Magic\Search; + //use Cubist\Util\ObjectUtil; use Illuminate\Validation\ValidationException; use Illuminate\Http\Request; @@ -38,7 +39,8 @@ class AjaxController extends CubistFrontController 'ref' => 'Reference', 'phone' => 'Téléphone', 'email' => 'Adresse e-mail', - 'message' => 'Message']; + 'message' => 'Message', + 'subject' => 'Sujet']; // Shared validation logic for dynamic CMS forms @@ -53,17 +55,17 @@ class AjaxController extends CubistFrontController $messages = []; $fields = $page->get('form'); - if($form){ + if ($form) { $fields = $request->all(); } - if(!$alreadyValidate) { + if (!$alreadyValidate) { foreach ($fields as $field) { $v = []; if ($field['mandatory']) { $v[] = 'required'; - $messages[$field['type'] . '.required'] = sprintf(__('Champ obligatoire'), self::$_labels[$field['type']]); + $messages[$field['type'] . '.required'] = sprintf(__('Champ obligatoire'), self::$_labels[$field['type']] ?? $field['type']); } else { $v[] = 'nullable'; } @@ -108,11 +110,11 @@ class AjaxController extends CubistFrontController * @param PageData $page * @param array $appendContents */ - protected function _sendMail($validatedData, $page, $appendContents = [], $subject_ = "Cubedesigners", $recipient = "") + protected function _sendMail($validatedData, $page, $appendContents = [], $subject_ = "PM Instrumentation", $recipient = "") { $contents = []; - if(Client::getClientConnected()) { + if (Client::getClientConnected()) { $validatedData['tva'] = Client::getClientConnected()->vat; $validatedData['siren'] = Client::getClientConnected()->siren; } @@ -124,11 +126,11 @@ class AjaxController extends CubistFrontController } $contents = array_merge($contents, $appendContents); - Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData, $page, $subject_,$recipient) { + Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData, $page, $subject_, $recipient) { $message->from(config('mail.from.address'), config('mail.from.name')); $message->sender(config('mail.from.address'), config('mail.from.name')); $message->bcc('test+pmi@cubedesigners.com'); - if($recipient) { + if ($recipient) { $message->to($recipient); } if (null === $page->form_destination || empty($page->form_destination)) { @@ -141,20 +143,22 @@ class AjaxController extends CubistFrontController } } + dd($page); + $subject = ''; if ($page->form_prefix) { $subject .= '['; $subject .= $subject_ ?? $page->form_prefix; $subject .= '] '; - }else { - if($subject_) { - $subject .= '['.$subject_.'] '; + } else { + if ($subject_) { + $subject .= '[' . $subject_ . '] '; } } - if($subject_ === "Nouvelle commande") { - $subject .= 'Commande '.$validatedData['id']; - }elseif (isset($validatedData['subject'])) { + if ($subject_ === "Nouvelle commande") { + $subject .= 'Commande ' . $validatedData['id']; + } elseif (isset($validatedData['subject'])) { $subject .= $validatedData['subject']; } @@ -189,7 +193,7 @@ class AjaxController extends CubistFrontController $ref = $request->input('ref') ?? ''; $price = $request->input('price') ?? ''; - if(!Client::getClientConnected()) { + if (!Client::getClientConnected()) { $price = ''; } @@ -205,7 +209,7 @@ class AjaxController extends CubistFrontController $product = Product::find($id); $currentItem = false; - if($product) { + if ($product) { $categoryProduct = $product->category; $discount = \App\Models\Client::getDiscount($categoryProduct); $currentItem = array_filter($cart_items, function ($n) use ($ref) { @@ -219,7 +223,7 @@ class AjaxController extends CubistFrontController // If the item already exists in the cart, increment the quantity if ($currentItem) { $cart_items[$currentIndex]['quantity'] += $quantity; - }else { + } else { $cart_items[] = [ 'id' => $product->id, 'name' => $product->name, @@ -255,7 +259,7 @@ class AjaxController extends CubistFrontController $needs_update = true; } $cart_items[$currentIndex]['quantity'] = $quantity; - if(!Client::getClientConnected()) { + if (!Client::getClientConnected()) { $cart_items[$currentIndex]['price'] = 0; $cart_items[$currentIndex]['basic_selling_price'] = 0; } @@ -288,7 +292,7 @@ class AjaxController extends CubistFrontController // Validated form fields $validatedData = $action === "order" ? $this->_validate_form($request, $page, true) : $this->_validate_form($request, $page); - $products = PageData::fromEntities(Product::whereIn('id', array_keys($cartData) )->get()); + $products = PageData::fromEntities(Product::whereIn('id', array_keys($cartData))->get()); $cartData_ = Product::getCartData(); $productsArray = Product::getProductsByIds(array_keys($cartData)); @@ -307,7 +311,9 @@ class AjaxController extends CubistFrontController foreach ($cartData as $id => $_data) { $indexMessage++; - $cartByID = array_values(array_filter($cartData_, function($n) use($id) { return $n['id'] == $id; })); + $cartByID = array_values(array_filter($cartData_, function ($n) use ($id) { + return $n['id'] == $id; + })); $optionsPrices = Product::optionPrice($id, $cartByID[0]['ref'], $productsArray, true); $basicSellingPrice = $products[$id]['basic_selling_price']; $categoryProduct = $products[$id]['category']; @@ -315,7 +321,7 @@ class AjaxController extends CubistFrontController $price = 0; $priceDiscount = 0; - if($basicSellingPrice) { + if ($basicSellingPrice) { $price = $basicSellingPrice; if ($optionsPrices) { @@ -331,20 +337,20 @@ class AjaxController extends CubistFrontController 'reference' => (empty($cartByID[0]['ref']) ? $cartByID[0]['reference'] : $cartByID[0]['ref']), 'name' => $products[$id]['name'], 'quantity' => $_data, - 'price' => isset($price) && intval($price) > 0 && Client::getClientConnected() ? ECommerceCommon::priceWithDiscount($price, $discount)."€" : 0 + 'price' => isset($price) && intval($price) > 0 && Client::getClientConnected() ? ECommerceCommon::priceWithDiscount($price, $discount) . "€" : 0 ]; $productsMessage[] = 'Référence : ' . (empty($cartByID[0]['ref']) ? $cartByID[0]['reference'] : $cartByID[0]['ref']) . "\n"; - $productsMessage[$indexMessage] .= url("/{$products[$id]['slug']}")."\n"; + $productsMessage[$indexMessage] .= url("/{$products[$id]['slug']}") . "\n"; - if(Client::getClientConnected()) { + if (Client::getClientConnected()) { $labelPrice = 'Prix unitaire HT : '; $labelPriceDiscount = 'Prix unitaire HT (avec remise) : '; - if($optionsPrices) { + if ($optionsPrices) { $productsMessage[$indexMessage] .= 'Prix de base : ' . ECommerceCommon::formatPrice($cartByID[0]['basic_selling_price']) . "€ HT\n"; foreach ($optionsPrices[1] as $key => $v) { - $productsMessage[$indexMessage] .= $v . " (+".array_values($optionsPrices[0])[0][$key]."€ HT)\n"; + $productsMessage[$indexMessage] .= $v . " (+" . array_values($optionsPrices[0])[0][$key] . "€ HT)\n"; } $labelPrice = 'Prix unitaire HT (avec options) : '; $labelPriceDiscount = 'Prix unitaire HT (avec options et remise) : '; @@ -362,28 +368,30 @@ class AjaxController extends CubistFrontController $index++; } - if($action === "order") { - $totalHT = array_reduce($prices, function($carry, $item) { return $carry + $item; }); + if ($action === "order") { + $totalHT = array_reduce($prices, function ($carry, $item) { + return $carry + $item; + }); $totalHT += ($totalHT < 1000) ? 20 : 0; $tva = ECommerceCommon::tva($totalHT); $totalTTC = ECommerceCommon::totalTTC($totalHT); - $productsMessage[$indexMessage] .= "Frais de ports : ".($totalHT < 1000 ? '20,00' : 0)."€\n"; - $productsMessage[$indexMessage] .= "Total HT : ". ECommerceCommon::formatPrice($totalHT) ."€\n"; - $productsMessage[$indexMessage] .= "Montant TVA : ". ECommerceCommon::formatPrice($tva) ."€\n"; - $productsMessage[$indexMessage] .= "Total TTC : ". ECommerceCommon::formatPrice($totalTTC) ."€\n"; + $productsMessage[$indexMessage] .= "Frais de ports : " . ($totalHT < 1000 ? '20,00' : 0) . "€\n"; + $productsMessage[$indexMessage] .= "Total HT : " . ECommerceCommon::formatPrice($totalHT) . "€\n"; + $productsMessage[$indexMessage] .= "Montant TVA : " . ECommerceCommon::formatPrice($tva) . "€\n"; + $productsMessage[$indexMessage] .= "Total TTC : " . ECommerceCommon::formatPrice($totalTTC) . "€\n"; $productsMessage[$indexMessage] .= "\n----\n\n"; $productsMessage[$indexMessage] .= "Adresse de facturation : \n"; foreach (Client::getAddressByType("billing_address")[0] as $key => $info) { $productsMessage[$indexMessage] .= $info; - $productsMessage[$indexMessage] .= !in_array($key, ["firstname","zipcode"]) ? "\n" : " "; + $productsMessage[$indexMessage] .= !in_array($key, ["firstname", "zipcode"]) ? "\n" : " "; } $productsMessage[$indexMessage] .= "\n----\n\n"; $productsMessage[$indexMessage] .= "Adresse de livraison : \n"; foreach (Client::getAddressByType("delivery_address")[0] as $key => $info) { $productsMessage[$indexMessage] .= $info; - $productsMessage[$indexMessage] .= !in_array($key, ["firstname","zipcode"]) ? "\n" : " "; + $productsMessage[$indexMessage] .= !in_array($key, ["firstname", "zipcode"]) ? "\n" : " "; } $productsMessage[$indexMessage] .= "\n----\n"; } @@ -394,13 +402,13 @@ class AjaxController extends CubistFrontController $validatedData['subject'] = $data['company']; - if($action === "quote") { + if ($action === "quote") { $quote = new QuoteRequest($data); $quote->save(); $linkTo = 'Voir la demande en ligne : ' . url('/admin/quotes/' . $quote->id . '/edit'); $subj = null; - }else { + } else { $linkTo = 'Voir la commande en ligne : ' . url('/admin/order/' . $save->id . "/edit \n"); $subj = "Nouvelle commande"; } @@ -423,7 +431,8 @@ class AjaxController extends CubistFrontController return Product::getFilteredProducts($product_type, $filter_values); } - public function news(Request $request) { + public function news(Request $request) + { // The current page number is passed in the HTTP request // and detected automatically by Laravel's paginate() function // Ref: https://laravel.com/docs/5.8/pagination#paginating-query-builder-results @@ -455,7 +464,8 @@ class AjaxController extends CubistFrontController * */ - public function validation_form(Request $request, $validation, $multiArray = false){ + public function validation_form(Request $request, $validation, $multiArray = false) + { $messages = [ '*.required' => __('Veuillez remplir les champs obligatoires'), 'email.email' => __('Veuillez indiquer une adresse email valide'), @@ -481,7 +491,8 @@ class AjaxController extends CubistFrontController } - public function check_email_exist(Request $request) { + public function check_email_exist(Request $request) + { $validation = [ 'email' => 'required|email' ]; @@ -489,7 +500,8 @@ class AjaxController extends CubistFrontController return Client::where('email', $request->email)->get(); } - public function signin(Request $request) { + public function signin(Request $request) + { $validation = [ 'email' => 'required|email', 'password' => 'required' @@ -512,7 +524,8 @@ class AjaxController extends CubistFrontController } } - public function signup(Request $request) { + public function signup(Request $request) + { $validation = [ 'email' => 'required|email|unique:clients', 'password' => 'required|confirmed|min:8', @@ -548,7 +561,7 @@ class AjaxController extends CubistFrontController foreach ($data['address'] as $key => $value) { $counter++; $address .= json_encode($data['address'][$key]); - if($counter !== sizeof($data['address'])){ + if ($counter !== sizeof($data['address'])) { $address .= ','; } } @@ -566,24 +579,25 @@ class AjaxController extends CubistFrontController $data['subject'] = "Cubedesigners"; - $linkTo = "\n".'Valider l\'inscription en ligne : ' . url('/admin/client/' . $client->id . '/edit'); + $linkTo = "\n" . 'Valider l\'inscription en ligne : ' . url('/admin/client/' . $client->id . '/edit'); $this->_sendMail($data, $page, [$linkTo], "Nouvelle inscription"); return $data; } - public function update(Request $request) { + public function update(Request $request) + { $validation = []; - foreach ($request->all() as $key => $field){ - if($key === "email"){ + foreach ($request->all() as $key => $field) { + if ($key === "email") { $validation[$key] = 'required|email'; - }elseif(in_array($key, ['firstname','lastname','name','company','address','city'])){ + } elseif (in_array($key, ['firstname', 'lastname', 'name', 'company', 'address', 'city'])) { $validation[$key] = 'required|string|max:255'; - }elseif(in_array($key,['phone'])){ + } elseif (in_array($key, ['phone'])) { $validation[$key] = 'required|numeric'; - }elseif ($key === "actually_password"){ + } elseif ($key === "actually_password") { $validation[$key] = 'required'; - }elseif ($key === "password"){ + } elseif ($key === "password") { $validation[$key] = 'required|confirmed|min:8'; } } @@ -591,7 +605,7 @@ class AjaxController extends CubistFrontController $data = $this->validation_form($request, $validation); $email = Client::getClientConnected()->email; - if($request->password) { + if ($request->password) { $data['password'] = Hash::make($data['password']); $password = $data['actually_password']; $actuallyPassword = Auth::guard('web-clients')->user()->password; @@ -602,20 +616,21 @@ class AjaxController extends CubistFrontController unset($data['actually_password']); } - $client = Client::where('email',$email)->update($data); + $client = Client::where('email', $email)->update($data); } - public function updateAddress(Request $request){ + public function updateAddress(Request $request) + { $validation = []; $index = $request->index; - foreach ($request->all() as $field){ + foreach ($request->all() as $field) { if (is_array($field)) { foreach ($field as $keySubfield => $subfield) { if (in_array($keySubfield, ['firstname', 'lastname', 'name', 'company', 'address', 'city'])) { - $validation['*'.'.'.$keySubfield] = 'required|string|max:255'; + $validation['*' . '.' . $keySubfield] = 'required|string|max:255'; } elseif (in_array($keySubfield, ['zipcode'])) { - $validation['*'.'.'.$keySubfield] = 'required|numeric'; + $validation['*' . '.' . $keySubfield] = 'required|numeric'; } } } @@ -625,7 +640,7 @@ class AjaxController extends CubistFrontController $email = Client::getClientConnected()->email; - $addressToArray = array_map(function($n) { + $addressToArray = array_map(function ($n) { $n['billing_address'] = strval(intval((bool)$n['billing_address'])); $n['delivery_address'] = strval(intval((bool)$n['delivery_address'])); return $n; @@ -636,11 +651,12 @@ class AjaxController extends CubistFrontController $client = Client::where('email', $email)->update(['address' => $addressToString]); } - public function deleteaddress(Request $request) { + public function deleteaddress(Request $request) + { $index = $request->index; $address = Client::getClientConnected()->address; - $addressToArray = json_decode($address,true); + $addressToArray = json_decode($address, true); $addressToArray[0]['delivery_address'] = intval($addressToArray[$index]['delivery_address']) ? "1" : strval(intval($addressToArray[0]['delivery_address'])); $addressToArray[0]['billing_address'] = intval($addressToArray[$index]['billing_address']) ? "1" : strval(intval($addressToArray[0]['billing_address'])); @@ -655,9 +671,10 @@ class AjaxController extends CubistFrontController return $addressToString; } - public function getuser() { + public function getuser() + { $user = Client::getClientConnected(); - if($user) { + if ($user) { $addressToArray = json_decode($user->address, true); $checkBillingAddress = array_filter($addressToArray, function ($n) { return $n['billing_address']; @@ -671,13 +688,14 @@ class AjaxController extends CubistFrontController 'address_billing' => key($checkBillingAddress) ?? "0", 'address_delivery' => key($checkDeliveryAddress) ?? "0" ]; - }else{ + } else { abort(401, 'Unauthorized'); } return false; } - public function storecart(Request $request) { + public function storecart(Request $request) + { $validation = [ 'addresses' => 'required', 'products' => 'required', @@ -690,21 +708,21 @@ class AjaxController extends CubistFrontController // $lastCartRefs = $lastCartId ? Cart::find($lastCartId)->getReferences() : []; $currentCartRef = Cart::getRefs($data['products']); - $intersect = $lastCartRefs ? array_intersect($currentCartRef,$lastCartRefs) : []; + $intersect = $lastCartRefs ? array_intersect($currentCartRef, $lastCartRefs) : []; $data['products'] = json_encode($data['products']); $ids = Product::getProductIds($data); $productsInfosBase = Product::getProductsByIds($ids); - $currentCartRef = Cart::getRefs(json_decode($data['products'],true)); + $currentCartRef = Cart::getRefs(json_decode($data['products'], true)); $data['products'] = json_decode($data['products'], true); /** * */ - $data = Cart::fillData($currentCartRef, $data, $productsInfosBase,false); + $data = Cart::fillData($currentCartRef, $data, $productsInfosBase, false); - if(sizeof($lastCartRefs) !== sizeof($intersect) || - (sizeof($lastCartRefs) === sizeof($intersect) && sizeof($currentCartRef) != sizeof($lastCartRefs)) ) { + if (sizeof($lastCartRefs) !== sizeof($intersect) || + (sizeof($lastCartRefs) === sizeof($intersect) && sizeof($currentCartRef) != sizeof($lastCartRefs))) { $data["name"] = __("Panier du :date", ["date" => Carbon::now('Europe/Paris')->isoFormat("DD/MM/Y")]); $panier = Cart::firstOrCreate($data); $panier->save(); @@ -718,7 +736,8 @@ class AjaxController extends CubistFrontController return __('Le panier a été enregistré avec succès !'); } - public function deleteSavedcart(Request $request) { + public function deleteSavedcart(Request $request) + { $request->validate([ 'id' => 'required|numeric', ]); @@ -729,7 +748,8 @@ class AjaxController extends CubistFrontController $cart->delete(); } - public function updateNameSavedcart(Request $request) { + public function updateNameSavedcart(Request $request) + { $request->validate([ 'id' => 'required|numeric', 'text' => 'required|max:255' @@ -742,7 +762,8 @@ class AjaxController extends CubistFrontController $cart->save(); } - public function savedCartToCurrent(Request $request) { + public function savedCartToCurrent(Request $request) + { $request->validate([ 'id' => 'required|numeric' ]); @@ -757,9 +778,9 @@ class AjaxController extends CubistFrontController $clientId = Client::getClientConnected()->id; $currentCartRef = Cart::getRefs($cart['products']); - $data = Cart::updateCartData($currentCartRef,$cart,$productsInfosBase); + $data = Cart::updateCartData($currentCartRef, $cart, $productsInfosBase); - if($clientIdInRequest === $clientId) { + if ($clientIdInRequest === $clientId) { $cartData = $data['products']; // Clear cart session @@ -774,7 +795,8 @@ class AjaxController extends CubistFrontController return false; } - public function order(Request $request) { + public function order(Request $request) + { $validation = [ 'addresses' => 'required', 'products' => 'required', @@ -788,44 +810,45 @@ class AjaxController extends CubistFrontController $productsInfosBase = Product::getProductsByIds($ids); $currentCartRef = Cart::getRefs($data['products']); - $data = Order::fillData($currentCartRef,$data,$productsInfosBase); - $company = array_values(array_filter(json_decode($data['addresses'], true), function($n) { + $data = Order::fillData($currentCartRef, $data, $productsInfosBase); + $company = array_values(array_filter(json_decode($data['addresses'], true), function ($n) { return intval($n['delivery_address']); }))[0]['company']; $data['company'] = $company; $data['request_date'] = Carbon::now('Europe/Paris'); - $data['products'] = json_encode(array_map(function($n){ - $exp = explode('|',$n['ref']); + $data['products'] = json_encode(array_map(function ($n) { + $exp = explode('|', $n['ref']); array_shift($exp); $n['ref'] = sizeof($exp) > 1 ? implode('|', $exp) : $exp; return $n; - }, json_decode($data['products'],true))); + }, json_decode($data['products'], true))); - if($data) { + if ($data) { $order = Order::create($data); $order->save(); $this->request_quote($request, $order, "order"); - }else{ + } else { abort('422', 'Datas are empty'); } // Clear cart session $request->session()->forget('cart_items'); - return __('Votre commande a bien été transmise à nos équipes.')."\n".__('Nous vous recontacterons dans les 48 heures par email ou par téléphone pour la valider.'); + return __('Votre commande a bien été transmise à nos équipes.') . "\n" . __('Nous vous recontacterons dans les 48 heures par email ou par téléphone pour la valider.'); } - public function updateCart($request) { + public function updateCart($request) + { $cart = Product::getCartData(); $data['products'] = json_encode($cart); $ids = Product::getProductIds($data); $productsInfosBase = Product::getProductsByIds($ids); - $currentCartRef = Cart::getRefs(json_decode($data['products'],true)); + $currentCartRef = Cart::getRefs(json_decode($data['products'], true)); $data['products'] = json_decode($data['products'], true); - $data = Cart::fillData($currentCartRef, $data, $productsInfosBase,false); - $update = json_decode($data['products'],true); + $data = Cart::fillData($currentCartRef, $data, $productsInfosBase, false); + $update = json_decode($data['products'], true); $request->session()->forget('cart_items'); $request->session()->put('cart_items', $update);