From 1a3069085bfddbd07518f49cbe76aba72141511f Mon Sep 17 00:00:00 2001 From: vedatakd Date: Wed, 30 Jun 2021 18:26:24 +0300 Subject: [PATCH] add configuration detail --- .../advs-module/src/Adv/AdvModel.php | 18 ++++++ .../OptionConfigurationModel.php | 59 +++++++++++-------- 2 files changed, 52 insertions(+), 25 deletions(-) diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php index a13e2f44f..8acd42a55 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php @@ -8,6 +8,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Visiosoft\AdvsModule\Adv\Contract\AdvInterface; use Anomaly\Streams\Platform\Model\Advs\AdvsAdvsEntryModel; +use Visiosoft\AdvsModule\OptionConfiguration\OptionConfigurationModel; use Visiosoft\AdvsModule\Support\Command\Currency; use Visiosoft\LocationModule\City\CityModel; use Visiosoft\LocationModule\Country\CountryModel; @@ -27,6 +28,10 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface 'thumbnail', ]; + protected $cascades = [ + 'configurations', + ]; + public function getDetailUrlAttribute() { // Checking for slug @@ -36,6 +41,19 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface } } + public function configurations() + { + return $this->hasMany( + OptionConfigurationModel::class, + 'parent_adv_id' + ); + } + + public function getConfigurations() + { + return $this->getAttribute('configurations'); + } + public function getCurrencyPriceAttribute() { return app(Currency::class)->format($this->price, $this->currency); diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php index 9e54d6752..e787ac6e9 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php @@ -7,35 +7,44 @@ use Visiosoft\AdvsModule\ProductoptionsValue\Contract\ProductoptionsValueReposit class OptionConfigurationModel extends AdvsOptionConfigurationEntryModel implements OptionConfigurationInterface { - public function getName() - { - if($adv = app(AdvRepositoryInterface::class)->find($this->parent_adv_id)) - { - $configurations_item = json_decode($this->option_json, true); - $option_group_value = ""; + protected $appends = [ + 'option_name' + ]; - foreach ($configurations_item as $option_id => $value) { - $value_entry = app(ProductoptionsValueRepositoryInterface::class)->find($value); - $option_group_value .= " " . $value_entry->getName(); - } + public function getOptionNameAttribute() + { + return $this->getName(); + } - return $adv->name . ' | ' . trim($option_group_value, ' '); - } - } + public function getName() + { + if ($adv = app(AdvRepositoryInterface::class)->find($this->parent_adv_id)) { + $configurations_item = json_decode($this->option_json, true); + $option_group_value = ""; - public function stockControl($id, $quantity) - { - $conf = $this->newQuery()->find($id); - $stock = $conf->stock; + foreach ($configurations_item as $option_id => $value) { + $value_entry = app(ProductoptionsValueRepositoryInterface::class)->find($value); + $option_group_value .= " " . $value_entry->getName(); + } - if ($stock === NULL || $stock === 0) { - return 0; - } + return $adv->name . ' | ' . trim($option_group_value, ' '); + } + return null; + } - if ($stock < $quantity) { - return 0; - } + public function stockControl($id, $quantity) + { + $conf = $this->newQuery()->find($id); + $stock = $conf->stock; - return 1; - } + if ($stock === NULL || $stock === 0) { + return 0; + } + + if ($stock < $quantity) { + return 0; + } + + return 1; + } }