]> _ Git - pmi.git/commitdiff
wip store panier
authorsoufiane <soufiane@cubedesigners.com>
Thu, 13 Apr 2023 08:51:13 +0000 (10:51 +0200)
committersoufiane <soufiane@cubedesigners.com>
Thu, 13 Apr 2023 08:51:13 +0000 (10:51 +0200)
13 files changed:
app/Http/Controllers/Admin/ProductBaseController.php
app/Http/Controllers/AjaxController.php
app/Models/Client.php
package.json
resources/js/app.js
resources/js/components/Panier.vue [new file with mode: 0644]
resources/styles/components/signin.styl
resources/views/components/cart-add.blade.php
resources/views/layouts/app.blade.php
resources/views/pages/cart.blade.php
resources/views/pages/product-detail.blade.php
resources/views/pages/sign_in.blade.php
routes/backpack/import.php [deleted file]

index c557d65b2f472b42aa78ff4258802aafa675dc29..60ce35e784f80f9e9e819fa9037bca1dd4b6c9a2 100644 (file)
@@ -155,11 +155,14 @@ class ProductBaseController extends CubistMagicController {
             $contentMail["details"] = "Fichier incorrect";
         }
 
-        $successMessage = "$sizeFiles fichier(s) chargé(s)</br>";
-        $successMessage .= "$sizeSheets produit(s) chargé(s)</br>";
+        $successMessage = "$sizeFiles fichier(s) chargé(s)";
+        $successMessage .= "\n";
+        $successMessage .= "$sizeSheets produit(s) chargé(s)";
+        $successMessage .= "\n";
 
         if($changes) {
-            $successMessage .= "$sizeChanges produit(s) modifié(s)</br>";
+            $successMessage .= "$sizeChanges produit(s) modifié(s)";
+            $successMessage .= "\n";
         }
 
         $contentMail["resume"] = $successMessage;
@@ -172,7 +175,7 @@ class ProductBaseController extends CubistMagicController {
             foreach ($errorsMessage as $message) {
                 $messages .= "<p>$message</p>";
             }
-            $messages .= "</br>";
+            $messages .= "\n";
         }
 
         $messages .= $successMessage;
index 8a70f6d6e2835a8711a942f96967dcab128e64ec..4ae3f739036ace50fab2c0415b01ac34af52513a 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Models\Panier;
 use Cubist\Backpack\Facades\App;
 use App\Models\Page;
 use App\Models\Product;
@@ -310,7 +311,7 @@ class AjaxController extends CubistFrontController
     /*
      *
      *
-     * CONNEXION, REGISTER, MY ACCOUNT
+     * CONNEXION, REGISTER, MY ACCOUNT, SELECTION, COMMAND
      *
      *
      */
@@ -339,6 +340,7 @@ class AjaxController extends CubistFrontController
         $validator->validate();
         return $validator->validated();
     }
+
     public function check_email_exist(Request $request) {
         $validation = [
             'email' => 'required|email'
@@ -443,7 +445,7 @@ class AjaxController extends CubistFrontController
         }
 
         $data = $this->validation_form($request, $validation);
-        $email = Auth::guard('web-clients')->user()->email;
+        $email = Client::getClientConnected()->email;
 
         if($request->password) {
             $data['password'] = Hash::make($data['password']);
@@ -477,8 +479,8 @@ class AjaxController extends CubistFrontController
 
         $data = $this->validation_form($request, $validation);
 
-        $email = Auth::guard('web-clients')->user()->email;
-        $address = Auth::guard('web-clients')->user()->address;
+        $email = Client::getClientConnected()->email;
+        $address = Client::getClientConnected()->address;
 
         $addressToArray = json_decode($address);
 
@@ -525,28 +527,23 @@ class AjaxController extends CubistFrontController
         $client = Client::where('email', $email)->update(['address' => $addressToString]);
     }
 
-    public function getaddress() {
-        $clientAddress = Auth::guard('web-clients')->user()->address;
-        return $clientAddress;
-    }
-
     public function deleteaddress(Request $request) {
         $index = $request->index;
 
-        $address = Auth::guard('web-clients')->user()->address;
+        $address = Client::getClientConnected()->address;
         $addressToArray = json_decode($address);
 
         unset($addressToArray[$index]);
         $addressToString = json_encode($addressToArray);
 
-        $email = Auth::guard('web-clients')->user()->email;
+        $email = Client::getClientConnected()->email;
         $client = Client::where('email', $email)->update(['address' => $addressToString]);
 
         return $addressToString;
     }
 
     public function getuser() {
-        $user = Auth::guard('web-clients')->user();
+        $user = Client::getClientConnected();
         if($user) {
             $addressToArray = json_decode($user->address, true);
             $checkBillingAddress = array_filter($addressToArray, function ($n) {
@@ -568,4 +565,18 @@ class AjaxController extends CubistFrontController
         }
         return false;
     }
+
+    public function storepanier(Request $request) {
+        $validation = [
+            'name' => 'required|string|max:255',
+            'addresses' => 'required',
+            'products' => 'required',
+            'userId' => 'required|numeric'
+        ];
+        $data = $this->validation_form($request, $validation);
+        $panier = new Panier($data);
+        $panier->save();
+
+        return 'ok';
+    }
 }
index d22cb1d2c54273b739e31dbbd6de46f0b5b462e4..cb9a2f4c078b0635fdce8bf73d0a067a88337576 100644 (file)
@@ -2,6 +2,7 @@
 namespace App\Models;
 
 use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel;
+use Illuminate\Support\Facades\Auth;
 
 class Client extends CubistMagicAbstractModel
 {
@@ -89,4 +90,8 @@ class Client extends CubistMagicAbstractModel
             'tab' => 'Informations client'
         ]);
     }
+
+    public static function getClientConnected() {
+        return Auth::guard('web-clients')->user();
+    }
 }
index 033d57fdb22b547cb836c4fa1749b57b19b06474..edbcfb3d59de32f298d9e886b16571fc63e0e672 100644 (file)
@@ -48,5 +48,5 @@
         "vue-slider-component": "^3.0.40",
         "vue-template-compiler": "^2.6.10"
     },
-    "dependencies": {},
+    "dependencies": {}
 }
index 5480aaafe7c82da6490d385a83d6dc72f71d9760..7ab386178ed77e957cdf7370647ff1f677ec40db 100644 (file)
@@ -31,10 +31,9 @@ window.Vue = require('vue');
 window.eventBus = new Vue();
 
 import PortalVue from 'portal-vue';
-import Ar from "../../public/vendor/adminlte/bower_components/moment/src/locale/ar";
 import VueTheMask from 'vue-the-mask'
 
-Vue.use(VueTheMask)
+Vue.use(VueTheMask);
 Vue.use(PortalVue);
 
 /**
@@ -73,8 +72,8 @@ const app = new Vue({
         validateForm: false,
         tab: 'infos',
         addresses: [{}],
-        errorsForm: {},
         user: '',
+        errorsForm: {},
         default_billing_address: null,
         default_delivery_address: null,
         //
@@ -153,7 +152,7 @@ const app = new Vue({
         totalTTC() {
             let total = this.total ? parseFloat(this.total) + parseFloat(this.tva) : 0
             return total.toFixed(2)
-        }
+        },
     },
 
     methods: {
@@ -339,8 +338,8 @@ const app = new Vue({
 
                     // Assign default values to each address, if the field is empty
                     // It useful during the first connexion to his account
-                    for(let i = 0; i < root.addresses.length; i++) {
-                        root.addresses[i]['name'] = root.addresses[i]['name'] ?? 'Adresse '+root.addresses[i]['city']
+                    for (let i = 0; i < root.addresses.length; i++) {
+                        root.addresses[i]['name'] = root.addresses[i]['name'] ?? 'Adresse ' + root.addresses[i]['city']
                         root.addresses[i]['company'] = root.addresses[i]['company'] ?? root.user['company']
                         root.addresses[i]['firstname'] = root.addresses[i]['firstname'] ?? root.user['firstname']
                         root.addresses[i]['lastname'] = root.addresses[i]['lastname'] ?? root.user['lastname']
@@ -350,8 +349,8 @@ const app = new Vue({
                     root.default_delivery_address = 'delivery' + response.data['address_delivery']
                 })
                 .catch(function (error) {
-                }
-            )
+                    }
+                )
         },
         addAddressToForm(event) {
             let newAddress = {
@@ -469,6 +468,26 @@ const app = new Vue({
             this.ref = this.$refs.refProduct.dataset.ref+'/'+placeholder
             this.price = total + parseFloat(this.$refs.optprice.dataset.default)
             this.price = parseFloat(this.price).toFixed(2)
+        },
+        /**
+         *
+         */
+        storePanier() {
+            let root = this,
+                data = {
+                    name: "Panier du "+document.querySelector('[name="now"]').dataset.content,
+                    userId: this.user.id,
+                    addresses: this.addresses,
+                    products: this.items
+                }
+
+            axios.post('/ajax/storepanier', data)
+                .then(function (response) {
+                    console.log(response)
+                })
+                .catch(function (error) {
+                    console.log(error)
+                })
         }
     },
     /**
diff --git a/resources/js/components/Panier.vue b/resources/js/components/Panier.vue
new file mode 100644 (file)
index 0000000..4dbc425
--- /dev/null
@@ -0,0 +1,23 @@
+<template>
+
+</template>
+
+<script>
+export default {
+    name: "Panier",
+
+    mounted() {
+      console.log('ok')
+    },
+
+    methods: {
+        store() {
+
+        }
+    }
+}
+</script>
+
+<style scoped>
+
+</style>
index 65dc0336f3ed690a89000ae305cad4aba027535f..f0102a9c682656f52301a5dc0e14c0254aab5c2c 100644 (file)
@@ -53,7 +53,7 @@
 
 .signin,
 .account
-  .btn:not(#checkemail)
+  .btn:not(.checkemail)
     max-width: 258px
     width: 100%
     padding-left: 28px
index 386441d88af93a65188d565dcee8eff6b2b2e540..ec5c83e10f4cf68bb85d4fbf456423dba8a63d46 100644 (file)
@@ -1,4 +1,4 @@
-<button data-product-id="{{ $id }}" class="btn cart-add" :class="{ 'pointer-events-none bg-grey-disabled' : !isNaN(price) && !statusConfig }">
+<button data-product-id="{{ $id }}" class="btn cart-add" :class="{ 'pointer-events-none bg-grey-disabled' : (!isNaN(price) && !statusConfig) || (price && !user) }">
         <span class="btn-text relative">
             <span class="add">
                 @if(isset($price))
index 9e0fef5282fcb1e03b4239c8222994d891a0b31e..da989a7d886677e76ed6c7dbe7083ff604b765aa 100644 (file)
@@ -1,3 +1,6 @@
+@php
+    $now = \Carbon\Carbon::now('Europe/Paris')->isoFormat('D/MM/Y');
+@endphp
 @prepend('stylesheets')
 
     @if ($variant === 'MICHSCI')
@@ -56,9 +59,9 @@
         </script>
     @endisset
 @endprepend
-
 @include('cubist::head.htmldeclaration')
 @include('cubist::head.head')
+<meta name="now" data-content="{{ $now }}">
 <body class="template-{{ $view_name }} {{ $body_class ?? '' }} font-body text-grey-dark">
 @include('cubist::body.begin')
 
index 7c7712d911b47e219b5e1464fb54f3af5dbc943f..9a716d323a438847d2d4b13e19f686703165a745 100644 (file)
@@ -28,8 +28,8 @@
                     </button>
 
                     <div class="cart-links">
-                        <a href="">{{ __('Obtenir un devis officiel') }}</a><br>
-                        <a href="">{{ __('Enregistrer ce panier') }}</a>
+                        <a href="#">{{ __('Obtenir un devis officiel') }}</a><br>
+                        <a href="#" @click.prevent="storePanier()">{{ __('Enregistrer ce panier') }}</a>
                     </div>
 
                     <div class="text-sm">
index 68e53fb0f5aceae50e0da7321260028a29b43fdb..6a6e203a432c5a4d5eb2f8425b442a9854326f2b 100644 (file)
                                             <select class="opt-select" v-on:change="changePrice">
                                                 <option selected disabled value="">Sélectionner</option>
                                                 @foreach($spec['options'] as $option)
-                                                    <option data-price="{{ $option['sale_price'] }}" data-ref="{{ $option['ref'] }}">
-                                                        {{ $option['name_fr'] }}
-                                                    </option>
+                                                    @if($option['name_fr'] != "")
+                                                        <option data-price="{{ $option['sale_price'] }}" data-ref="{{ $option['ref'] }}">
+                                                            {{ $option['name_fr'] }}
+                                                            {{ floatval($option['sale_price']) > 0 ? '(+'.$option['sale_price'].' € HT)' : '' }}
+                                                        </option>
+                                                    @endif
                                                 @endforeach
                                             </select>
                                         </div>
index 4fcc151c3367ea7c0e29f888ae8cad00edc3b7fd..f7195a2ba916209d8f24af3e593f5c98b9ee6d6f 100644 (file)
@@ -23,7 +23,7 @@
                         </label>
                     </div>
                     <div class="form-footer flex flex-wrap-reverse justify-between items-center">
-                        <button id="checkemail" class="form-submit-button btn btn-custom w-full" @click.prevent="checkEmailExist">
+                        <button class="checkemail form-submit-button btn btn-custom w-full" @click.prevent="checkEmailExist">
                             {{ __('Connexion') }}
                         </button>
                     </div>
@@ -82,7 +82,7 @@
                             <span class="form-required-legend inline-block my-4 mr-3 text-grey-dark xs:self-start xs:mt-5">
                                 *{{ __('Champs obligatoires')}}
                             </span>
-                        <button id="checkemail" class="form-submit-button btn btn-custom xs:w-full">
+                        <button class="checkemail form-submit-button btn btn-custom xs:w-full">
                             {{ __('Connexion') }}
                         </button>
                     </div>
                         <span class="form-required-legend inline-block my-4 mr-3 text-grey-dark xs:self-start xs:mt-5">
                             *{{ __('Champs obligatoires')}}
                         </span>
-                        <button id="checkemail" class="form-submit-button btn btn-custom xs:w-full">
+                        <button class="form-submit-button btn btn-custom xs:w-full">
                             {{ __('Créer mon compte') }}
                         </button>
                     </div>
diff --git a/routes/backpack/import.php b/routes/backpack/import.php
deleted file mode 100644 (file)
index 5b454cd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<?php
-Route::post('product/import', 'ProductBaseController@storeOptions');