]> _ Git - pmi.git/commitdiff
wait #6123 @1:30
authorsoufiane <soufiane@cubedesigners.com>
Mon, 17 Jul 2023 15:22:57 +0000 (17:22 +0200)
committersoufiane <soufiane@cubedesigners.com>
Mon, 17 Jul 2023 15:22:57 +0000 (17:22 +0200)
app/Http/Controllers/AjaxController.php
app/Models/Product.php
resources/js/app.js
resources/styles/common/global.styl
resources/views/pages/cart.blade.php
resources/views/partials/form.blade.php

index 9ea0088e0ef6df36d79d11ba6d13d0285a8d7bf6..4873c2945b4ae81fbed2ecfde15d67ad2b1b13cb 100644 (file)
@@ -98,7 +98,7 @@ class AjaxController extends CubistFrontController
      * @param PageData $page
      * @param array $appendContents
      */
-    protected function _sendMail($validatedData, $page, $appendContents = [])
+    protected function _sendMail($validatedData, $page, $appendContents = [], $action = "quote")
     {
         $contents = [];
         foreach (self::$_labels as $key => $label) {
@@ -108,7 +108,7 @@ class AjaxController extends CubistFrontController
         }
         $contents = array_merge($contents, $appendContents);
 
-        Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData, $page) {
+        Mail::raw(implode("\r\n", $contents), function ($message) use ($validatedData, $page, $action) {
             $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');
@@ -124,7 +124,9 @@ class AjaxController extends CubistFrontController
             }*/
             $subject = '';
             if ($page->form_prefix) {
-                $subject = '[' . $page->form_prefix . '] ';
+                $subject = '[';
+                $subject .= $action === "quote" ? $page->form_prefix : 'Nouvelle commande';
+                $subject .= '] ';
             }
 
             if (isset($validatedData['subject'])) {
@@ -245,7 +247,7 @@ class AjaxController extends CubistFrontController
         return ['needs_update' => $needs_update, 'cart_data' => Product::getCartData(), 'ga' => $ga];
     }
 
-    public function request_quote(Request $request)
+    public function request_quote(Request $request, $save = null, $action = "quote")
     {
         $page = Page::find($request['page'])->getPageData();
         // Array of product IDs => quantity
@@ -264,7 +266,6 @@ class AjaxController extends CubistFrontController
         $data['products'] = [];
         $productsMessage = ["Produits : \n----"];
 
-
         $index = 0;
         $indexMessage = 0;
         foreach ($cartData as $id => $_data) {
@@ -296,7 +297,6 @@ class AjaxController extends CubistFrontController
             }
 
             $productsMessage[$indexMessage] .= $labelPrice.$data['products'][$index]['price'] . "€ \n";
-
             $productsMessage[$indexMessage] .= url("/{$products[$id]['slug']}")."\n";
             $productsMessage[$indexMessage] .= "----";
 
@@ -309,10 +309,16 @@ class AjaxController extends CubistFrontController
 
         $validatedData['subject'] = $data['company'];
 
-        $quote = new QuoteRequest($data);
-        $quote->save();
+        if($action === "quote") {
+            $quote = new QuoteRequest($data);
+            $quote->save();
 
-        $this->_sendMail($validatedData, $page, [implode("\r\n", $productsMessage), '', 'Voir la demande en ligne : ' . url('/admin/quotes/' . $quote->id . '/edit')]);
+            $linkTo = 'Voir la demande en ligne : ' . url('/admin/quotes/' . $quote->id . '/edit');
+        }else {
+            $linkTo = 'Voir la commande en ligne : ' . url('/admin/order/' . $save->id . '/edit');
+        }
+
+        $this->_sendMail($validatedData, $page, [implode("\r\n", $productsMessage), '', $linkTo],$action);
     }
 
     public function search(Request $request)
@@ -740,6 +746,8 @@ class AjaxController extends CubistFrontController
         if($data) {
             $order = Order::create($data);
             $order->save();
+
+            $this->request_quote($request, $order, "order");
         }else{
             abort('422', 'Datas are empty');
         }
index 11433e47007aaf9b6be66fa4a30c732e4317560a..6f10b228c9eef00a844e3b3c3ffea2146034c4b7 100644 (file)
@@ -537,9 +537,7 @@ class Product extends CubistMagicPageModel
                 $key -= 1;
                 if ($key > -1) {
                     $options_ = $options[$key]['options'];
-                    dump($options_);
                     foreach ($options_ as $opt_) {
-                        dump($opt_);
                         if ($opt_["ref"] === $ref) {
                             $opt[$refs][] = $opt_["sale_price"] ?? 0;
                             $optDetails[] = ucfirst($options[$key]['name_fr']) . ' : ' . $ref;
index c7db50eee0aadf78d366fec8eb2b96aaabd1c5f7..fa15b4ff92357a16c5d0b8172793d60d39375296 100644 (file)
@@ -565,12 +565,19 @@ const app = new Vue({
                 .catch(function (error) {
                 })
         },
-        order() {
+        order(pageID) {
             let root = this,
                 data = {
                     user_id: this.user.id,
                     addresses: this.addresses,
-                    products: this.items
+                    products: this.items,
+                    page: pageID,
+                    cart_data: this.cartData,
+                    firstname: this.user.firstname,
+                    name: this.user.lastname,
+                    company: this.user.company,
+                    phone: this.user.phone,
+                    email: this.user.email,
                 }
 
             axios.post('/ajax/order', data)
@@ -594,9 +601,6 @@ const app = new Vue({
                 .catch(function (error) {
                     }
                 )
-        },
-        requestQuote() {
-
         }
     },
     /**
index 0745b9979881f9013185928f602bbb62b4447c1a..e6975fc379441fb0cfd9922e8a307ccf6d3d89e8 100644 (file)
@@ -66,6 +66,8 @@ $overlap-amount = 10vw
     top: 0
     background: radial-gradient(circle at 85% 30%, rgba(255,255,255,0.9) 0%, rgba(0,0,0,0) 60%)
 
+.disabled
+  pointer-events: none
 
 // VueJS styling to hide elements until they're ready
 [v-cloak]
index 48276833fdbf95b1bb5e705d787c583d0af0c117..3293823ac00f9c67f5759368531751ea13334a1d 100644 (file)
@@ -1,7 +1,8 @@
 @extends('layouts/app')
 
-@section('content')
+@php($pageId = $page->id)
 
+@section('content')
     <content class="pb-3v cart-page">
         <text-block :title="__('Mon panier')" title-tag="h1" />
 
@@ -24,7 +25,7 @@
                             <p class="text-2xl text-navy">{{ __('Total TTC') }} : <span v-cloak>@{{ totalTTC }}</span></p>
                         </div>
                     </div>
-                    <button class="cart-valid-command btn btn-custom xs:w-full" data-id="" v-cloak v-if="cartItemCount === cartItemHasPriceCount" @click="order">
+                    <button class="cart-valid-command btn btn-custom xs:w-full" data-id="" v-cloak v-if="cartItemCount === cartItemHasPriceCount" @click="order({{$pageId}})">
                         {{ __('Valider la commande') }}
                     </button>
 
index adc9f89b81157a6cf193a5cd941ba831ca2ed7fd..b1c586e1b6abd9f0d0afbfe7249160852d2b3449 100644 (file)
@@ -18,6 +18,7 @@
             @endif
             <form {!! $gaattrs !!}
                   class="text-navy mailform"
+                  id="mailform"
                   action="{{ $action ?? '/ajax/mailform' }}"
                   method="post"
                   data-confirmation="{{ $page->get('form_confirmation') ?? __('Votre message a bien été envoyé') }}"