]> _ Git - pmi.git/commitdiff
wip #5858 @3:00
authorsoufiane <soufiane@cubedesigners.com>
Thu, 20 Apr 2023 10:37:07 +0000 (12:37 +0200)
committersoufiane <soufiane@cubedesigners.com>
Thu, 20 Apr 2023 10:37:07 +0000 (12:37 +0200)
12 files changed:
app/Http/Controllers/AjaxController.php
app/Models/CommandPanierSchema.php
app/Models/Panier.php
app/Providers/AppServiceProvider.php
app/Templates/MyOrder.php [new file with mode: 0644]
app/Templates/PaniersEnregistres.php
resources/js/app.js
resources/views/components/item-cart.blade.php [new file with mode: 0644]
resources/views/pages/cart.blade.php
resources/views/pages/my_order.blade.php [new file with mode: 0644]
resources/views/pages/paniers_enregistres.blade.php
resources/views/partials/nav-account.blade.php

index 5f264f5da97716139e3de049ba8efb50f1d32229..a66268f169bf6ab8eafbedd0ebea57f9780dc8a3 100644 (file)
@@ -312,7 +312,7 @@ class AjaxController extends CubistFrontController
     /*
      *
      *
-     * CONNEXION, REGISTER, MY ACCOUNT, SELECTION, COMMAND
+     * CONNEXION, REGISTER, MY ACCOUNT, SELECTION, ORDER
      *
      *
      */
@@ -696,4 +696,10 @@ class AjaxController extends CubistFrontController
         }
         return false;
     }
+
+    public function order(Request $request) {
+        $request->validate([
+            'id' => 'required|numeric'
+        ]);
+    }
 }
index de235d60e50a0c79c4263bdb2502bd3cca60accb..fd11cb3aa5d7287893c2f1d22cabce84af9562d5 100644 (file)
@@ -30,4 +30,9 @@ class CommandPanierSchema extends CubistMagicAbstractModel
             'type' => 'Text'
         ]
     ];
+
+    protected function getAllByUserId() {
+        $userID = Client::getClientConnected()->id;
+        return self::all()->where('user_id', $userID)->toArray();
+    }
 }
index 76658ba8ec8582e9c9906ac7c8ea0207fa893574..b701bb79de38f304d0a953c73fbb8128b3df4ed9 100644 (file)
@@ -41,8 +41,4 @@ class Panier extends CommandPanierSchema
 
         return $refs;
     }
-
-    public static function getAllCart() {
-        return Panier::all()->toArray();
-    }
 }
index be654ed08d1217ca0bf43a6182104fdacee5b5b5..114551df77aa16687f9e92e2581d23c8ed7c7d2b 100644 (file)
@@ -60,6 +60,7 @@ class AppServiceProvider extends ServiceProvider
             BladeX::component('components.address-form'); // <address-form> ... </address-form>
             BladeX::component('components.modal-confirm'); // <modal-confirm> ... </modal-confirm>
             BladeX::component('components.btn-delete'); // <btn-delete> ... </btn-delete>
+            BladeX::component('components.item-cart'); // <item-cart> ... </item-cart>
         } catch (\Exception $e) {
 
         }
diff --git a/app/Templates/MyOrder.php b/app/Templates/MyOrder.php
new file mode 100644 (file)
index 0000000..c045c96
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+
+namespace App\Templates;
+
+use App\Models\Command;
+use App\Models\Panier;
+use Cubist\Backpack\app\Magic\Menu\PageItem;
+
+class MyOrder extends Base
+{
+    public function getName()
+    {
+        return 'Mes commandes';
+    }
+
+    public function setData(&$data)
+    {
+        $data["items"] = Command::getAllByUserId();
+    }
+
+    public function init()
+    {
+        parent::init();
+    }
+}
index 1f21efba2361c7cd522ff23583c88dc39760eea5..2687c084a3e7fcfc3528929a85b95f2d47470960 100644 (file)
@@ -4,6 +4,8 @@
 namespace App\Templates;
 
 
+use App\Models\Panier;
+
 class PaniersEnregistres extends Base
 {
     public function getName()
@@ -11,6 +13,11 @@ class PaniersEnregistres extends Base
         return 'Paniers enregistrés';
     }
 
+    public function setData(&$data)
+    {
+        $data["items"] = Panier::getAllByUserId();
+    }
+
     public function init()
     {
         parent::init();
index 2dd6c855377be71758ee51a6a45b85da4cc3a658..d18faf3df3844a751a5df942962236dbe03aae49 100644 (file)
@@ -542,6 +542,18 @@ const app = new Vue({
                 })
                 .catch(function (error) {
                 })
+        },
+        order(event) {
+            const   root = this,
+                    id = event.target.dataset.id
+
+            axios.post('/ajax/order', {id: id})
+                .then(function (response) {
+                    root.validateAction = true
+                    root.confirmMessageCart = response.data;
+                })
+                .catch(function (error) {
+                })
         }
     },
     /**
diff --git a/resources/views/components/item-cart.blade.php b/resources/views/components/item-cart.blade.php
new file mode 100644 (file)
index 0000000..54e7cab
--- /dev/null
@@ -0,0 +1,94 @@
+@foreach($items as $item)
+    <div id="cart-saved-{{ $item['id'] }}" class="cartsave bg-grey-200 pr-2v pl-2v">
+        <div class="cartsave-name">
+            @if($page === "savedcart")
+                <div>
+                    <input id="cart-name-{{ $item['id'] }}" class="readonly" value="{{ $item['name'] }}" readonly />
+                </div>
+                <a href="#" data-input="{{ $item['id'] }}" class="inline-block animated-underline" data-defaulttext="{{ __('Editer le nom du panier') }}" data-edittext="{{ __('Sauvegarder le nom du panier') }}" @click.prevent.self="toggleName">
+                    {{ __('Editer le nom du panier') }}
+                </a>
+            @else
+                <div class="flex justify-between">
+                    <div>
+                        <p class="no-m">{{ __('Date de commande') }}</p>
+                        <p class="no-m text-navy">{{ \Carbon\Carbon::parse($item['created_at'])->isoFormat("D/MM/Y") }}</p>
+                    </div>
+                    <div>
+                        <p class="no-m">{{ __('Numéro de commande') }}</p>
+                        <p class="no-m text-navy">{{ $item['id'] }}</p>
+                    </div>
+                </div>
+            @endif
+        </div>
+        <div class="cartsave-products">
+            @foreach(json_decode($item['products'], true) as $key => $product)
+                <grid gap="md" class="sm:grid-cols-1 cartsave-grid">
+                    <div class="product-thumbnail bg-center bg-contain bg-no-repeat" style='background-image : url("{{ $product['image'] }}")'>
+                    </div>
+                    <div class="product-infos flex justify-between items-center">
+                        <div>
+                            <p class="no-m">{{ $product['ref'] }}</p>
+                            <p class="no-m text-navy">{{ $product['name'] }}</p>
+                            @isset($product['basic_selling_price'])
+                                @if(floatval($product['basic_selling_price']))
+                                    <p class="no-m">{{ __('Prix unitaire') }} <span class="text-navy">{{
+                                                        $product['basic_selling_price'] }} € HT</span>
+                                    </p>
+                                @endif
+                            @endisset
+                            <p class="no-m">{{ __('Quantité') }} : <span class="text-navy">{{$product['quantity']}}</span></p>
+                        </div>
+                        <div class="product-price">
+                            @if(floatval($product['price']))
+                                <p class="no-m">{{ $product['price'] * $product['quantity'] }}€ HT</p>
+                            @else
+                                <p class="text-navy">
+                                    N/A
+                                    <span
+                                        data-tooltip="{{__('Prix sur devis.')}}"
+                                        class="font-display text-lg inline-block align-middle rounded-full border-grey-dark border-2 h-8 w-8 text-center ml-3">?</span>
+                                </p>
+                            @endif
+                        </div>
+                    </div>
+                </grid>
+            @endforeach
+        </div>
+        <div class="cartsave-footer <?php echo $item['total'] ? 'pt-6' : 'pt-12' ?>">
+            <div class=<?php echo $page !== "order" ?: "flex justify-between" ?>>
+                @if($page === "order")
+                    <div>
+                        <p class="no-m">{{ __('Statut') }}</p>
+                        <p class="no-m text-navy">{{ $item['status'] }}</p>
+                    </div>
+                @endif
+                @if($item['total'])
+                    <div class="text-right pb-6">
+                        <p class="no-m">{{ __('Montant Total') }}</p>
+                        <p class="no-m">{{ $item['total'] }}€ HT</p>
+                    </div>
+                @endif
+            </div>
+            <div class="flex justify-between items-center">
+                @if($page === "savedcart")
+                    <button class="flex items-center" data-id="{{ $item['id'] }}" @click.stop="removeSavedCart">
+                        @svg('icon-trash')
+                        <span class="ml-3">{{ __('Supprimer ce panier') }}</span>
+                    </button>
+
+                    <div class="flex items-center">
+                        <a href="#" data-id="{{ $item['id'] }}" class="animated-underline mr-10 xs:mr-0" @click.self.prevent="savedCartToCurrent">
+                            {{ __('Modifier ce panier') }}
+                        </a>
+                        @isset($item['total'])
+                            <a href="" class="btn">{{ __('Passer commande') }}</a>
+                        @else
+                            <a href="" class="btn">{{ __('Demander un devis') }}</a>
+                        @endisset
+                    </div>
+                @endif
+            </div>
+        </div>
+    </div>
+@endforeach
index 8f58537e1b34cfccc0c02311551e77818a682766..80603fde6d21e2e463a5c47e26697228ffcbc7c5 100644 (file)
                             <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" v-cloak v-if="cartItemCount === cartItemHasPriceCount">
+                    <button class="cart-valid-command btn btn-custom xs:w-full" data-id="" v-cloak v-if="cartItemCount === cartItemHasPriceCount" @click="order">
                         {{ __('Valider la commande') }}
                     </button>
 
                     <div class="cart-links">
                         <a href="#" v-cloak v-if="cartItemCount === cartItemHasPriceCount">{{ __('Obtenir un devis officiel') }}</a><br>
-                        <a href="#" @click.prevent="storeCart()">{{ __('Enregistrer ce panier') }}</a>
+                        <a href="#" @click.prevent="storeCart">{{ __('Enregistrer ce panier') }}</a>
                     </div>
 
                     <div class="text-sm" v-cloak v-if="cartItemCount === cartItemHasPriceCount">
diff --git a/resources/views/pages/my_order.blade.php b/resources/views/pages/my_order.blade.php
new file mode 100644 (file)
index 0000000..22192ce
--- /dev/null
@@ -0,0 +1,10 @@
+@extends('layouts/app')
+
+@section('content')
+    <full-width padding="pb-3v">
+        <content>
+            <text-block :title="$page->title" title-tag="h1" />
+            <item-cart :items="$items" page="order"></item-cart>
+        </content>
+    </full-width>
+@endsection
index 597af0e612c7dfe5ceb18a82be6525105d1a5d1d..c511e6fc88e7aa3c75e125d7cd716e302dfd83d9 100644 (file)
@@ -4,78 +4,7 @@
     <full-width padding="pb-3v">
         <content>
             <text-block :title="$page->title" title-tag="h1" />
-
-            @foreach(\App\Models\Panier::getAllCart() as $cart)
-                <div id="cart-saved-{{ $cart['id'] }}" class="cartsave bg-grey-200 pr-2v pl-2v">
-                    <div class="cartsave-name">
-                        <div>
-                            <input id="cart-name-{{ $cart['id'] }}" class="readonly" value="{{ $cart['name'] }}" readonly />
-                        </div>
-                        <a href="#" data-input="{{ $cart['id'] }}" class="inline-block animated-underline" data-defaulttext="{{ __('Editer le nom du panier') }}" data-edittext="{{ __('Sauvegarder le nom du panier') }}" @click.prevent.self="toggleName">
-                            {{ __('Editer le nom du panier') }}
-                        </a>
-                    </div>
-                    <div class="cartsave-products">
-                        @foreach(json_decode($cart['products'], true) as $key => $product)
-                            <grid gap="md" class="sm:grid-cols-1 cartsave-grid">
-                                <div class="product-thumbnail bg-center bg-contain bg-no-repeat" style='background-image : url("{{ $product['image'] }}")'>
-                                </div>
-                                <div class="product-infos flex justify-between items-center">
-                                    <div>
-                                        <p class="no-m">{{ $product['ref'] }}</p>
-                                        <p class="no-m text-navy">{{ $product['name'] }}</p>
-                                        @isset($product['basic_selling_price'])
-                                            @if(floatval($product['basic_selling_price']))
-                                                <p class="no-m">{{ __('Prix unitaire') }} <span class="text-navy">{{
-                                                    $product['basic_selling_price'] }} € HT</span>
-                                                </p>
-                                            @endif
-                                        @endisset
-                                        <p class="no-m">{{ __('Quantité') }} : <span class="text-navy">{{$product['quantity']}}</span></p>
-                                    </div>
-                                    <div class="product-price">
-                                        @if(floatval($product['price']))
-                                            <p class="no-m">{{ $product['price'] }}€ HT</p>
-                                        @else
-                                            <p class="text-navy">
-                                                N/A
-                                                <span
-                                                    data-tooltip="{{__('Prix sur devis.')}}"
-                                                    class="font-display text-lg inline-block align-middle rounded-full border-grey-dark border-2 h-8 w-8 text-center ml-3">?</span>
-                                            </p>
-                                        @endif
-                                    </div>
-                                </div>
-                            </grid>
-                        @endforeach
-                    </div>
-                    <div class="cartsave-footer <?php echo $cart['total'] ? 'pt-6' : 'pt-12' ?>">
-                        @isset($cart['total'])
-                            <div class="text-right pb-6">
-                                <p class="no-m">{{ __('Montant Total') }}</p>
-                                <p class="no-m">{{ $cart['total'] }}€ HT</p>
-                            </div>
-                        @endisset
-                        <div class="flex justify-between items-center">
-                            <button class="flex items-center" data-id="{{ $cart['id'] }}" @click.stop="removeSavedCart">
-                                @svg('icon-trash')
-                                <span class="ml-3">{{ __('Supprimer ce panier') }}</span>
-                            </button>
-
-                            <div class="flex items-center">
-                                <a href="#" data-id="{{ $cart['id'] }}" class="animated-underline mr-10 xs:mr-0" @click.self.prevent="savedCartToCurrent">
-                                    {{ __('Modifier ce panier') }}
-                                </a>
-                                @isset($cart['total'])
-                                    <a href="" class="btn">{{ __('Passer commande') }}</a>
-                                @else
-                                    <a href="" class="btn">{{ __('Demander un devis') }}</a>
-                                @endisset
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            @endforeach
+            <item-cart :items="$items" page="savedcart"></item-cart>
         </content>
     </full-width>
 @endsection
index 265ae9d752dc354de7a4c183e84a7ff584318d34..b86c14d84b379feba2ec5c3b0d9bf9bc38aab930 100644 (file)
@@ -13,7 +13,7 @@
             </ul>-->
         </li>
         <li class="{{ Request::is('mes-commandes') ? "active" : '' }}">
-            <a href="">
+            <a href="/mes-commandes">
                 <span>{{ __('Mes commandes') }}</span>
             </a>
         </li>