From 68f7baedf2e2a050db259fe7551267366bd4e2d0 Mon Sep 17 00:00:00 2001 From: soufiane Date: Sat, 8 Jul 2023 00:47:53 +0200 Subject: [PATCH] wip #6106 @9:00 --- app/Events/OrderSaved.php | 26 +++++++ app/Http/Controllers/AjaxController.php | 3 - app/Models/Client.php | 4 +- app/Models/Order.php | 73 +++++++++++-------- app/Models/Product.php | 5 -- .../components/item-cart-order.blade.php | 4 + resources/views/pages/my_order.blade.php | 4 + 7 files changed, 79 insertions(+), 40 deletions(-) create mode 100644 app/Events/OrderSaved.php diff --git a/app/Events/OrderSaved.php b/app/Events/OrderSaved.php new file mode 100644 index 0000000..a377159 --- /dev/null +++ b/app/Events/OrderSaved.php @@ -0,0 +1,26 @@ +user_id); + $company = $clientById->company; + $addresses = $clientById->address; + + $newUserId = $order->getAttribute('user_id'); + $originalUserID = $order->getOriginal('user_id'); + + if($newUserId != $originalUserID) + $order->addresses = $addresses; + + $order->company = $company; + } +} diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index b1bddb9..c483585 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -683,9 +683,7 @@ class AjaxController extends CubistFrontController $company = array_values(array_filter(json_decode($data['addresses'], true), function($n) { return intval($n['delivery_address']); }))[0]['company']; - $data['company'] = $company; - $data['email'] = Client::getClientConnected()->email; $data['request_date'] = Carbon::now('Europe/Paris'); $data['products'] = json_encode(array_map(function($n){ $exp = explode('|',$n['ref']); @@ -693,7 +691,6 @@ class AjaxController extends CubistFrontController $n['ref'] = sizeof($exp) > 1 ? implode('|', $exp) : $exp; return $n; }, json_decode($data['products'],true))); - $data['user'] = Client::getClientConnected()->email; if($data) { $order = Order::create($data); diff --git a/app/Models/Client.php b/app/Models/Client.php index b1b7e4b..d693c92 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -105,8 +105,8 @@ class Client extends CubistMagicAbstractModel return Auth::guard('web-clients')->user(); } - public static function getEmailsClientsApproved() { - return self::all()->where('status',1)->pluck('email'); + public static function getClientsApproved() { + return self::select('*')->where('status',1)->get()->toArray(); } public static function getCategory() { diff --git a/app/Models/Order.php b/app/Models/Order.php index 7be9d27..dfd156d 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -1,6 +1,9 @@ 'Clôturée', ]; + protected $fillable = ['company']; + + protected $_optionsForUserInfo = []; + + protected $dispatchesEvents = [ + 'saving' => OrderSaved::class + ]; + public function setFields() { - parent::setFields(); $tabOrder = 'Commande'; - $this->addField(['name' => 'user', - 'label' => 'Utilisateur', - 'type' => 'SelectFromArray', - 'options' => Client::getEmailsClientsApproved(), - 'tab' => 'Informations' - ]); - $this->addField(['name' => 'company', 'label' => 'Société', - 'type' => 'Text', + 'type' => 'Hidden', 'column' => true, - 'tab' => 'Informations' ]); - $this->addField(['name' => 'email', - 'label' => 'Email', - 'type' => 'Text', - 'column' => true, - 'tab' => 'Informations' - ]); + foreach ($this->fields as $fields) { + if ($fields['name'] === 'products') { + $fields = ['name' => 'products', + 'label' => 'Produits', + 'type' => 'Table', + 'columns' => ['id' => '#', 'ref' => 'Référence options', 'reference' => 'Référence produit', 'name' => 'Nom de produit', 'quantity' => 'Quantité'], + 'tab' => $tabOrder]; + } + if ($fields['name'] === 'total') { + $fields['tab'] = $tabOrder; + } + + if ($fields['name'] === 'user_id') { + $fields['label'] = 'Utilisateur'; + $fields['tab'] = 'Informations'; + $fields['type'] = 'SelectFromArray'; + $fields['options'] = $this->userOptions(); + } + + $this->addField($fields); + } $this->addField(['name' => 'status', 'label' => 'Status', 'type' => 'SelectFromArray', 'column' => true, 'options' => self::$_optionsForSelect, - 'default' => 'new', + 'default' => 'new', 'tab' => $tabOrder ]); @@ -64,19 +81,7 @@ class Order extends ECommerceCommon 'column' => true, 'tab' => $tabOrder]); - foreach ($this->fields as $fields) { - if ($fields['name'] === 'products') { - $fields = ['name' => 'products', - 'label' => 'Produits', - 'type' => 'Table', - 'columns' => ['id' => '#', 'ref' => 'Référence options', 'reference' => 'Référence produit', 'name' => 'Nom de produit', 'quantity' => 'Quantité'], - 'tab' => $tabOrder]; - } - if ($fields['name'] === 'total') { - $fields['tab'] = $tabOrder; - } - $this->addField($fields); - } + parent::setFields(); } public static function getOptionValue($key) { @@ -85,4 +90,12 @@ class Order extends ECommerceCommon return false; } + public function userOptions() { + $infos = Client::getClientsApproved(); + foreach ($infos as $info) { + $this->_optionsForUserInfo[$info['id']][] = $info['firstname'].' '.$info['lastname'].' ('.$info['company'].')'; + } + + return array_map(function($n) { return $n[0]; }, $this->_optionsForUserInfo); + } } diff --git a/app/Models/Product.php b/app/Models/Product.php index 09041f3..48875f4 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -502,11 +502,6 @@ class Product extends CubistMagicPageModel return self::$_cart_data; } - public function isJson($string) { - json_decode($string); - return json_last_error() === JSON_ERROR_NONE; - } - public static function getProductsByIds($ids) { return self::whereIn('id', $ids) diff --git a/resources/views/components/item-cart-order.blade.php b/resources/views/components/item-cart-order.blade.php index 47cd452..5a63cf0 100644 --- a/resources/views/components/item-cart-order.blade.php +++ b/resources/views/components/item-cart-order.blade.php @@ -1,3 +1,4 @@ +@isset($items) @foreach($items as $item)
@@ -13,6 +14,7 @@
+ @if($item['products']) @foreach(json_decode($item['products'], true) as $key => $product)
@endforeach + @endif
@endforeach +@endisset diff --git a/resources/views/pages/my_order.blade.php b/resources/views/pages/my_order.blade.php index b44dc47..91b46f3 100644 --- a/resources/views/pages/my_order.blade.php +++ b/resources/views/pages/my_order.blade.php @@ -1,5 +1,9 @@ @extends('layouts/app') +@php + //dump(\App\Models\Client::find(10)->getDatas()); +@endphp + @section('content') -- 2.39.5