From 6981ac09f0e455e320ade6d239cfe6d2d34f8918 Mon Sep 17 00:00:00 2001 From: Muammer Top Date: Fri, 23 Oct 2020 12:05:55 +0300 Subject: [PATCH] product options add cart --- .../factories/OptionConfigurationFactory.php | 10 -- .../factories/OptionsConfigurationFactory.php | 10 -- .../factories/ProductoptionFactory.php | 10 -- .../factories/ProductoptionsValueFactory.php | 10 -- ...ule.advs__create_productoptions_stream.php | 7 +- ...vs__create_option_configuration_stream.php | 1 + .../views/ad-detail/partials/detail.twig | 39 +++++- .../views/new-ad/preview/preview.twig | 8 ++ .../advs-module/src/Adv/AdvRepository.php | 4 + .../Adv/Contract/AdvRepositoryInterface.php | 2 + .../src/AdvsModuleServiceProvider.php | 14 +- .../OptionConfigurationController.php | 59 +++++++++ .../src/Http/Controller/advsController.php | 24 +++- ...OptionConfigurationRepositoryInterface.php | 2 + .../OptionConfigurationModel.php | 8 +- .../OptionConfigurationRepository.php | 122 ++++++++++++++---- .../Table/OptionConfigurationTableColumns.php | 6 +- .../src/OptionHandler/CategoriesOptions.php | 21 +++ .../Contract/ProductoptionsValueInterface.php | 2 +- .../ProductoptionsValueModel.php | 5 +- .../OptionConfigurationFormBuilderTest.php | 8 -- .../OptionConfigurationCollectionTest.php | 8 -- .../OptionConfigurationCriteriaTest.php | 8 -- .../OptionConfigurationModelTest.php | 8 -- .../OptionConfigurationObserverTest.php | 8 -- .../OptionConfigurationPresenterTest.php | 8 -- .../OptionConfigurationRepositoryTest.php | 8 -- .../OptionConfigurationRouterTest.php | 8 -- .../OptionConfigurationSeederTest.php | 8 -- .../OptionConfigurationTableBuilderTest.php | 8 -- .../OptionsConfigurationFormBuilderTest.php | 8 -- .../OptionsConfigurationCollectionTest.php | 8 -- .../OptionsConfigurationCriteriaTest.php | 8 -- .../OptionsConfigurationModelTest.php | 8 -- .../OptionsConfigurationObserverTest.php | 8 -- .../OptionsConfigurationPresenterTest.php | 8 -- .../OptionsConfigurationRepositoryTest.php | 8 -- .../OptionsConfigurationRouterTest.php | 8 -- .../OptionsConfigurationSeederTest.php | 8 -- .../OptionsConfigurationTableBuilderTest.php | 8 -- .../Form/ProductoptionFormBuilderTest.php | 8 -- .../ProductoptionCollectionTest.php | 8 -- .../ProductoptionCriteriaTest.php | 8 -- .../Productoption/ProductoptionModelTest.php | 8 -- .../ProductoptionObserverTest.php | 8 -- .../ProductoptionPresenterTest.php | 8 -- .../ProductoptionRepositoryTest.php | 8 -- .../Productoption/ProductoptionRouterTest.php | 8 -- .../Productoption/ProductoptionSeederTest.php | 8 -- .../Table/ProductoptionTableBuilderTest.php | 8 -- .../ProductoptionsValueFormBuilderTest.php | 8 -- .../ProductoptionsValueCollectionTest.php | 8 -- .../ProductoptionsValueCriteriaTest.php | 8 -- .../ProductoptionsValueModelTest.php | 8 -- .../ProductoptionsValueObserverTest.php | 8 -- .../ProductoptionsValuePresenterTest.php | 8 -- .../ProductoptionsValueRepositoryTest.php | 8 -- .../ProductoptionsValueRouterTest.php | 8 -- .../ProductoptionsValueSeederTest.php | 8 -- .../ProductoptionsValueTableBuilderTest.php | 8 -- 60 files changed, 284 insertions(+), 400 deletions(-) delete mode 100644 addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php delete mode 100644 addons/default/visiosoft/advs-module/factories/OptionsConfigurationFactory.php delete mode 100644 addons/default/visiosoft/advs-module/factories/ProductoptionFactory.php delete mode 100644 addons/default/visiosoft/advs-module/factories/ProductoptionsValueFactory.php create mode 100644 addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php create mode 100644 addons/default/visiosoft/advs-module/src/OptionHandler/CategoriesOptions.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Form/OptionConfigurationFormBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationCollectionTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationCriteriaTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationModelTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationObserverTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationPresenterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationRepositoryTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationRouterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/OptionConfigurationSeederTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Table/OptionConfigurationTableBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/Form/OptionsConfigurationFormBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationCollectionTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationCriteriaTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationModelTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationObserverTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationPresenterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationRepositoryTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationRouterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/OptionsConfigurationSeederTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/OptionsConfiguration/Table/OptionsConfigurationTableBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/Form/ProductoptionFormBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionCollectionTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionCriteriaTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionModelTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionObserverTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionPresenterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionRepositoryTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionRouterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/ProductoptionSeederTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/Productoption/Table/ProductoptionTableBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/Form/ProductoptionsValueFormBuilderTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueCollectionTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueCriteriaTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueModelTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueObserverTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValuePresenterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueRepositoryTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueRouterTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/ProductoptionsValueSeederTest.php delete mode 100644 addons/default/visiosoft/advs-module/tests/Unit/ProductoptionsValue/Table/ProductoptionsValueTableBuilderTest.php diff --git a/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php b/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php deleted file mode 100644 index 86a320aa0..000000000 --- a/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php +++ /dev/null @@ -1,10 +0,0 @@ -define( - Visiosoft\AdvsModule\OptionConfiguration\OptionConfigurationModel::class, - function (Faker\Generator $faker) { - return [ - //'title' => $faker->words(2), - ]; - } -); diff --git a/addons/default/visiosoft/advs-module/factories/OptionsConfigurationFactory.php b/addons/default/visiosoft/advs-module/factories/OptionsConfigurationFactory.php deleted file mode 100644 index b6bbb136f..000000000 --- a/addons/default/visiosoft/advs-module/factories/OptionsConfigurationFactory.php +++ /dev/null @@ -1,10 +0,0 @@ -define( - Visiosoft\AdvsModule\OptionsConfiguration\OptionsConfigurationModel::class, - function (Faker\Generator $faker) { - return [ - //'title' => $faker->words(2), - ]; - } -); diff --git a/addons/default/visiosoft/advs-module/factories/ProductoptionFactory.php b/addons/default/visiosoft/advs-module/factories/ProductoptionFactory.php deleted file mode 100644 index 7a1bc3379..000000000 --- a/addons/default/visiosoft/advs-module/factories/ProductoptionFactory.php +++ /dev/null @@ -1,10 +0,0 @@ -define( - Visiosoft\AdvsModule\Productoption\ProductoptionModel::class, - function (Faker\Generator $faker) { - return [ - //'title' => $faker->words(2), - ]; - } -); diff --git a/addons/default/visiosoft/advs-module/factories/ProductoptionsValueFactory.php b/addons/default/visiosoft/advs-module/factories/ProductoptionsValueFactory.php deleted file mode 100644 index bdfb8e393..000000000 --- a/addons/default/visiosoft/advs-module/factories/ProductoptionsValueFactory.php +++ /dev/null @@ -1,10 +0,0 @@ -define( - Visiosoft\AdvsModule\ProductoptionsValue\ProductoptionsValueModel::class, - function (Faker\Generator $faker) { - return [ - //'title' => $faker->words(2), - ]; - } -); diff --git a/addons/default/visiosoft/advs-module/migrations/2020_10_15_130044_visiosoft.module.advs__create_productoptions_stream.php b/addons/default/visiosoft/advs-module/migrations/2020_10_15_130044_visiosoft.module.advs__create_productoptions_stream.php index a8bdf8a7f..0f1e87a29 100644 --- a/addons/default/visiosoft/advs-module/migrations/2020_10_15_130044_visiosoft.module.advs__create_productoptions_stream.php +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_15_130044_visiosoft.module.advs__create_productoptions_stream.php @@ -15,7 +15,12 @@ class VisiosoftModuleAdvsCreateProductoptionsStream extends Migration protected $delete = true; protected $fields = [ - 'categories' => 'anomaly.field_type.select', + 'categories' => [ + 'type' => 'anomaly.field_type.select', + 'config' => [ + 'handler' => 'Visiosoft\AdvsModule\OptionHandler\CategoriesOptions@handle' + ] + ], ]; /** * The stream definition. diff --git a/addons/default/visiosoft/advs-module/migrations/2020_10_16_124151_visiosoft.module.advs__create_option_configuration_stream.php b/addons/default/visiosoft/advs-module/migrations/2020_10_16_124151_visiosoft.module.advs__create_option_configuration_stream.php index b42c31acf..456ec6a8c 100644 --- a/addons/default/visiosoft/advs-module/migrations/2020_10_16_124151_visiosoft.module.advs__create_option_configuration_stream.php +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_16_124151_visiosoft.module.advs__create_option_configuration_stream.php @@ -52,6 +52,7 @@ class VisiosoftModuleAdvsCreateOptionConfigurationStream extends Migration ], 'option_json' => [ 'required' => true, + 'unique' => true, ], ]; diff --git a/addons/default/visiosoft/advs-module/resources/views/ad-detail/partials/detail.twig b/addons/default/visiosoft/advs-module/resources/views/ad-detail/partials/detail.twig index efd963ad9..6d48e678c 100644 --- a/addons/default/visiosoft/advs-module/resources/views/ad-detail/partials/detail.twig +++ b/addons/default/visiosoft/advs-module/resources/views/ad-detail/partials/detail.twig @@ -44,10 +44,41 @@ {{ adv.created_at|date('d/m/Y') }} - - {{ addBlock('ad-detail/details',{'adv':adv, 'options':options})|raw }} - {{ addBlock('ad-detail/widget-details',{'adv':adv})|raw }} - + +{# {{ dd(configurations) }}#} + {% if configurations != null %} +
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ {% else %} + + {{ addBlock('ad-detail/details',{'adv':adv, 'options':options})|raw }} + {{ addBlock('ad-detail/widget-details',{'adv':adv})|raw }} + + {% endif %} {% if adv.isCorporate == 2 %}
diff --git a/addons/default/visiosoft/advs-module/resources/views/new-ad/preview/preview.twig b/addons/default/visiosoft/advs-module/resources/views/new-ad/preview/preview.twig index 1c52f2e32..243164093 100644 --- a/addons/default/visiosoft/advs-module/resources/views/new-ad/preview/preview.twig +++ b/addons/default/visiosoft/advs-module/resources/views/new-ad/preview/preview.twig @@ -14,6 +14,10 @@ {% else %} {% set continueLink = url_route('adv_detail_seo', [adv.slug, adv.id]) %} {% endif %} + + Konfigürasyon Oluştur + {{ trans('visiosoft.module.advs::field.edit') }} @@ -27,6 +31,10 @@
+ + Konfigürasyon Oluştur + {{ trans('visiosoft.module.advs::field.edit') }} diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php index e39e5580a..226494a47 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php @@ -447,4 +447,8 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface ->orderBy('count_show_ad', 'desc') ->paginate(setting_value('visiosoft.module.advs::popular_ads_limit', setting_value('streams::per_page'))); } + + public function getName($id){ + return $this->find($id)->name; + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php index 4118d90a4..bb2504338 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php @@ -44,4 +44,6 @@ interface AdvRepositoryInterface extends EntryRepositoryInterface public function getByUsersIDs($usersIDs); public function getPopular(); + + public function getName($id); } diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php index e6a622850..1070f7bb7 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php @@ -221,7 +221,7 @@ class AdvsModuleServiceProvider extends AddonServiceProvider // Others 'advs/ttr/{id}' => 'Visiosoft\PackagesModule\Http\Controller\packageFEController@advsStatusbyUser', - //Configrations Admin Controller + //Configurations Admin Controller 'admin/advs/option_configuration/create' => [ 'as' => 'visiosoft.module.advs::configrations.create', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@create', @@ -230,6 +230,18 @@ class AdvsModuleServiceProvider extends AddonServiceProvider 'as' => 'visiosoft.module.advs::configrations.index', 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@index', ], + + //Configuration Controller + 'advs/option_configuration/create' => [ + 'as' => 'visiosoft.module.advs::user.configrations.create', + 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@create', + ], + 'conf/addCart' => [ + 'as' => 'configuration::add_cart', + 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@confAddCart', + ], + + ]; /** diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php new file mode 100644 index 000000000..5c63a842c --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php @@ -0,0 +1,59 @@ +advRepository = $advRepository; + $this->adv_model = $advModel; + $this->optionConfigurationModel = $optionConfigurationModel; + $this->optionConfigurationRepository = $optionConfigurationRepository; + parent::__construct(); + } + + public function create(OptionConfigurationFormBuilder $form) + { + $form->setOption('redirect', route('advs_preview', [request('ad')])); + return $form->render(); + } + + public function confAddCart() + { + $conf = $this->optionConfigurationRepository->find($this->request->configuration); + + $conf->name = $this->optionConfigurationRepository->getName($this->request->configuration); + + $this->adv_model->authControl(); + + if ($conf->stock < $this->request->quantity){ + return redirect()->back()->with('warning', [trans('visiosoft.module.carts::message.error1in2')]); + }else{ + $cart = $this->dispatch(new GetCart()); + $cart->add($conf, $this->request->quantity); + return $this->redirect->to(route('visiosoft.module.carts::cart')); + } + } +} diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php index bea56a763..43cc8df16 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -19,6 +19,10 @@ use Visiosoft\AdvsModule\Adv\Event\showAdPhone; use Visiosoft\AdvsModule\Adv\Event\viewAd; use Visiosoft\AdvsModule\Adv\Form\AdvFormBuilder; use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface; +use Visiosoft\AdvsModule\OptionConfiguration\Contract\OptionConfigurationRepositoryInterface; +use Visiosoft\AdvsModule\OptionConfiguration\OptionConfigurationModel; +use Visiosoft\AdvsModule\Productoption\Contract\ProductoptionRepositoryInterface; +use Visiosoft\AdvsModule\ProductoptionsValue\Contract\ProductoptionsValueRepositoryInterface; use Visiosoft\AlgoliaModule\Search\SearchModel; use Visiosoft\CatsModule\Category\CategoryModel; use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface; @@ -40,6 +44,10 @@ class AdvsController extends PublicController private $adv_model; private $adv_repository; + private $optionConfigurationRepository; + private $productOptionRepository; + private $productOptionsValueRepository; + private $country_repository; private $city_model; @@ -66,6 +74,10 @@ class AdvsController extends PublicController AdvModel $advModel, AdvRepositoryInterface $advRepository, + OptionConfigurationRepositoryInterface $optionConfigurationRepository, + ProductoptionRepositoryInterface $productOptionRepository, + ProductoptionsValueRepositoryInterface $productOptionsValueRepository, + CountryRepositoryInterface $country_repository, CityModel $city_model, @@ -94,6 +106,10 @@ class AdvsController extends PublicController $this->adv_model = $advModel; $this->adv_repository = $advRepository; + $this->optionConfigurationRepository = $optionConfigurationRepository; + $this->productOptionRepository = $productOptionRepository; + $this->productOptionsValueRepository = $productOptionsValueRepository; + $this->country_repository = $country_repository; $this->city_model = $city_model; @@ -502,9 +518,11 @@ class AdvsController extends PublicController } $this->template->set('meta_image', $coverPhoto); - if ($adv->created_by_id == isset(auth()->user()->id) or $adv->status == "approved") { + $configurations = $this->optionConfigurationRepository->getConf($adv->id); + + if ($adv->created_by_id == isset(auth()->user()->id) or $adv->status == "approved") { return $this->view->make('visiosoft.module.advs::ad-detail/detail', compact('adv', 'complaints', - 'recommended_advs', 'categories', 'features', 'comments', 'qrSRC', 'options')); + 'recommended_advs', 'categories', 'features', 'comments', 'qrSRC', 'options', 'configurations')); } else { return back(); } @@ -545,7 +563,7 @@ class AdvsController extends PublicController $isActiveDopings = $this->adv_model->is_enabled('dopings'); return $this->view->make('visiosoft.module.advs::new-ad/preview/preview', - compact('adv', 'categories', 'features', 'isActiveDopings', 'options')); + compact('adv', 'categories', 'features', 'isActiveDopings', 'configurations')); } public function getLocations() 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 9d4654747..d483bd89c 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationRepositoryInterface.php @@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface; interface OptionConfigurationRepositoryInterface extends EntryRepositoryInterface { public function createConfigration($ad_id,$price,$currency,$stock,$option_json); + + public function getConf($ad_id); } diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php index 3550a3bf9..c81b0405e 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationModel.php @@ -1,9 +1,15 @@ find($id); + $adv = $this->adv_model->find($configuration->parent_adv_id); + dd($adv); + } } diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php index 48a4863fc..ca2ba2820 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRepository.php @@ -1,36 +1,108 @@ model = $model; - } + /** + * Create a new OptionConfigurationRepository instance. + * + * @param OptionConfigurationModel $model + */ + public function __construct( + OptionConfigurationModel $model, + AdvRepositoryInterface $advRepository, + ProductoptionsValueRepositoryInterface $productoptionsValueRepository + ) + { + $this->model = $model; + $this->advRepository = $advRepository; + $this->productOptionsValueRepository = $productoptionsValueRepository; + } - public function createConfigration($ad_id,$price,$currency,$stock,$option_json) - { - return $this->create([ - 'parent_adv_id' => $ad_id, - 'price' => $price, - 'currency' => $currency, - 'stock' => $stock, - 'option_json' => $option_json, - ]); - } + public function createConfigration($ad_id, $price, $currency, $stock, $option_json) + { + return $this->create([ + 'parent_adv_id' => $ad_id, + 'price' => $price, + 'currency' => $currency, + 'stock' => $stock, + 'option_json' => $option_json, + ]); + } + + public function getConf($ad_id, $conf_id = null) + { + $adv = $this->advRepository->find($ad_id); + $configurations = array(); + + if ($conf_id == null) { + $product_configurations = $this->model->where('stock', '>', '0')->where('parent_adv_id', $ad_id)->get(); + + foreach ($product_configurations as $product_configuration) { + $configurations_item = json_decode($product_configuration->option_json, true); + $option_group_value = ""; + foreach ($configurations_item as $option_id => $value) { + $value_entry = $this->productOptionsValueRepository->find($value); + $option_group_value .= " " . $value_entry->getName(); + } + $configurations[$product_configuration->getId()] = [ + 'name' => $option_group_value, + 'price' => $product_configuration->price, + 'currency' => $product_configuration->currency, + 'stock' => $product_configuration->stock, + 'adv' => $adv->name . ' (' . trim($option_group_value, ' ') . ')', + ]; + } + } else { + $product_configuration = $this->model->find($conf_id); + $configurations_item = json_decode($product_configuration->option_json, true); + $option_group_value = ""; + + foreach ($configurations_item as $option_id => $value) { + $value_entry = $this->productOptionsValueRepository->find($value); + $option_group_value .= " " . $value_entry->getName(); + } + + $configurations = [ + 'name' => trim($option_group_value), + 'price' => $product_configuration->price, + 'currency' => $product_configuration->currency, + 'stock' => $product_configuration->stock, + 'adv' => $adv->name . ' (' . trim($option_group_value, ' ') . ')', + ]; + + } + + return $configurations; + } + + public function getName($id){ + $configuration = $this->find($id); + $adv = $this->advRepository->getName($configuration->parent_adv_id); + + $configurations_item = json_decode($configuration->option_json, true); + $option_group_value = ""; + + foreach ($configurations_item as $option_id => $value) { + $value_entry = $this->productOptionsValueRepository->find($value); + $option_group_value .= " " . $value_entry->getName(); + } + + return $adv . ' | ' . trim($option_group_value, ' '); + } } diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php index 0690ea2a4..1b8f11618 100644 --- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php @@ -19,7 +19,7 @@ class OptionConfigurationTableColumns AdvRepositoryInterface $advRepository) { $adv = $advRepository->findById($entry->parent_adv_id); - return "parent_adv_id]) ."'>$adv->name"; + return "parent_adv_id]) . "'>$adv->name"; } ], 'option_json' => [ @@ -35,8 +35,8 @@ class OptionConfigurationTableColumns $productOptionsValue = $productOptionsValueRepository->findBy('entry_id', $value); $text .= - ''. - $productOption->name . ': ' . $productOptionsValue->name. + '' . + $productOption->name . ': ' . $productOptionsValue->name . ''; } diff --git a/addons/default/visiosoft/advs-module/src/OptionHandler/CategoriesOptions.php b/addons/default/visiosoft/advs-module/src/OptionHandler/CategoriesOptions.php new file mode 100644 index 000000000..4083e31f0 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/OptionHandler/CategoriesOptions.php @@ -0,0 +1,21 @@ +categoryRepository = $categoryRepository; + } + + public function handle(SelectFieldType $fieldType) + { + $categories = $this->categoryRepository->mainCats(); + $options[] = $categories->pluck('name', 'id'); + $fieldType->setOptions($options); + } +} \ No newline at end of file diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueInterface.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueInterface.php index 3d64e4091..82fbb4f25 100644 --- a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueInterface.php +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueInterface.php @@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryInterface; interface ProductoptionsValueInterface extends EntryInterface { - + public function getName(); } diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueModel.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueModel.php index 7358887d0..184b0c482 100644 --- a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueModel.php +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueModel.php @@ -5,5 +5,8 @@ use Anomaly\Streams\Platform\Model\Advs\AdvsProductoptionsValueEntryModel; class ProductoptionsValueModel extends AdvsProductoptionsValueEntryModel implements ProductoptionsValueInterface { - + public function getName() + { + return $this->name; + } } diff --git a/addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Form/OptionConfigurationFormBuilderTest.php b/addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Form/OptionConfigurationFormBuilderTest.php deleted file mode 100644 index ae86aaf37..000000000 --- a/addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Form/OptionConfigurationFormBuilderTest.php +++ /dev/null @@ -1,8 +0,0 @@ -