From 1264e3cbd6192b2e25b5f56f7f0b3684a42425a4 Mon Sep 17 00:00:00 2001 From: Diatrex Date: Mon, 4 Jan 2021 13:55:28 +0300 Subject: [PATCH] #3045 product options error --- .../advs-module/src/Adv/AdvObserver.php | 7 +++++ .../Adv/Command/DeleteOptionConfiguration.php | 19 ++++++++++++++ .../Admin/OptionConfigurationController.php | 26 +++++++++---------- ...OptionConfigurationRepositoryInterface.php | 6 +++++ .../OptionConfigurationRepository.php | 20 ++++++++++++++ 5 files changed, 64 insertions(+), 14 deletions(-) create mode 100644 addons/default/visiosoft/advs-module/src/Adv/Command/DeleteOptionConfiguration.php diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvObserver.php b/addons/default/visiosoft/advs-module/src/Adv/AdvObserver.php index 982e22883..b16e6d295 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvObserver.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvObserver.php @@ -1,8 +1,15 @@ dispatch(new DeleteOptionConfiguration($entry)); + parent::deleting($entry); + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Command/DeleteOptionConfiguration.php b/addons/default/visiosoft/advs-module/src/Adv/Command/DeleteOptionConfiguration.php new file mode 100644 index 000000000..3f8e0c3ad --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Adv/Command/DeleteOptionConfiguration.php @@ -0,0 +1,19 @@ +ad = $ad; + } + + public function handle(OptionConfigurationRepositoryInterface $optionConfigurationRepository) + { + $optionConfigurationRepository->deleteAdsConfigs($this->ad->id); + } +} diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/OptionConfigurationController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/OptionConfigurationController.php index 2115f408f..49ff56a1b 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/OptionConfigurationController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/OptionConfigurationController.php @@ -1,29 +1,27 @@ getUnusedConfigs(); + + if (count($unusedConfigs)) { + $optionConfigurationRepository->deleteUnusedConfigs(); + } + return $table->render(); } - /** - * Create a new entry. - * - * @param OptionConfigurationFormBuilder $form - * @return \Symfony\Component\HttpFoundation\Response - */ public function create(OptionConfigurationFormBuilder $form) { $form->setOption('redirect', route('visiosoft.module.advs::configrations.index')); diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php index d483bd89c..400efc70f 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php @@ -7,4 +7,10 @@ interface OptionConfigurationRepositoryInterface extends EntryRepositoryInterfac public function createConfigration($ad_id,$price,$currency,$stock,$option_json); public function getConf($ad_id); + + public function getUnusedConfigs(); + + public function deleteUnusedConfigs($adsIDs); + + public function deleteAdsConfigs($adID); } diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php index a471830d6..8a315f90e 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php @@ -70,4 +70,24 @@ class OptionConfigurationRepository extends EntryRepository implements OptionCon return $configurations; } + + public function getUnusedConfigs() + { + return $this->newQuery() + ->leftJoin('advs_advs as ads', 'advs_option_configuration.parent_adv_id', 'ads.id') + ->whereNull('ads.id') + ->orWhereNotNull('deleted_at') + ->pluck('parent_adv_id') + ->all(); + } + + public function deleteUnusedConfigs($adsIDs) + { + return $this->newQuery()->whereIn('parent_adv_id', $adsIDs)->delete(); + } + + public function deleteAdsConfigs($adID) + { + return $this->newQuery()->where('parent_adv_id', $adID)->delete(); + } }