diff --git a/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php b/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php new file mode 100644 index 000000000..86a320aa0 --- /dev/null +++ b/addons/default/visiosoft/advs-module/factories/OptionConfigurationFactory.php @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..b6bbb136f --- /dev/null +++ b/addons/default/visiosoft/advs-module/factories/OptionsConfigurationFactory.php @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..7a1bc3379 --- /dev/null +++ b/addons/default/visiosoft/advs-module/factories/ProductoptionFactory.php @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..bdfb8e393 --- /dev/null +++ b/addons/default/visiosoft/advs-module/factories/ProductoptionsValueFactory.php @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..a8bdf8a7f --- /dev/null +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_15_130044_visiosoft.module.advs__create_productoptions_stream.php @@ -0,0 +1,47 @@ + 'anomaly.field_type.select', + ]; + /** + * The stream definition. + * + * @var array + */ + protected $stream = [ + 'slug' => 'productoptions', + 'title_column' => 'name', + 'translatable' => true, + 'versionable' => false, + 'trashable' => true, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'categories', + 'name' => [ + 'translatable' => true, + 'required' => true, + ], + ]; +} diff --git a/addons/default/visiosoft/advs-module/migrations/2020_10_15_131614_visiosoft.module.advs__create_productoptions_value_stream.php b/addons/default/visiosoft/advs-module/migrations/2020_10_15_131614_visiosoft.module.advs__create_productoptions_value_stream.php new file mode 100644 index 000000000..47fff9601 --- /dev/null +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_15_131614_visiosoft.module.advs__create_productoptions_value_stream.php @@ -0,0 +1,56 @@ + [ + 'type' => 'anomaly.field_type.relationship', + 'config' => [ + 'related' => ProductoptionModel::class, + ], + ] + ]; + + /** + * The stream definition. + * + * @var array + */ + protected $stream = [ + 'slug' => 'productoptions_value', + 'title_column' => 'name', + 'translatable' => true, + 'versionable' => false, + 'trashable' => true, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'name' => [ + 'translatable' => true, + 'required' => true, + ], + 'product_option' => [ + 'required' => true, + ], + ]; +} diff --git a/addons/default/visiosoft/advs-module/migrations/2020_10_16_082339_visiosoft.module.advs__added_options_field.php b/addons/default/visiosoft/advs-module/migrations/2020_10_16_082339_visiosoft.module.advs__added_options_field.php new file mode 100644 index 000000000..d00e201c7 --- /dev/null +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_16_082339_visiosoft.module.advs__added_options_field.php @@ -0,0 +1,48 @@ + 'advs', + ]; + + /** + * The addon fields. + * + * @var array + */ + protected $fields = [ + 'product_options_value' => [ + 'type' => 'anomaly.field_type.multiple', + 'config' => [ + 'mode' => 'lookup', + 'related' => \Visiosoft\AdvsModule\ProductoptionsValue\ProductoptionsValueModel::class, + ], + ] + ]; + + /** + * The field's assignment. + * + * @var array + */ + protected $assignments = [ + 'product_options_value', + ]; +} 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 new file mode 100644 index 000000000..b42c31acf --- /dev/null +++ b/addons/default/visiosoft/advs-module/migrations/2020_10_16_124151_visiosoft.module.advs__create_option_configuration_stream.php @@ -0,0 +1,58 @@ + 'visiosoft.field_type.json', + ]; + + /** + * The stream definition. + * + * @var array + */ + protected $stream = [ + 'slug' => 'option_configuration', + 'title_column' => 'option_json', + 'translatable' => false, + 'versionable' => false, + 'trashable' => false, + 'searchable' => false, + 'sortable' => false, + ]; + + /** + * The stream assignments. + * + * @var array + */ + protected $assignments = [ + 'parent_adv' => [ + 'required' => true, + ], + 'price' => [ + 'required' => true, + ], + 'currency' => [ + 'required' => true, + ], + 'stock' => [ + 'required' => true, + ], + 'option_json' => [ + 'required' => true, + ], + ]; + +} diff --git a/addons/default/visiosoft/advs-module/resources/config/permissions.php b/addons/default/visiosoft/advs-module/resources/config/permissions.php index eae0b67cd..cead467e5 100644 --- a/addons/default/visiosoft/advs-module/resources/config/permissions.php +++ b/addons/default/visiosoft/advs-module/resources/config/permissions.php @@ -21,4 +21,29 @@ return [ 'write', 'delete', ], + 'productoptions' => [ + 'read', + 'write', + 'delete', + ], + 'productoptions_value' => [ + 'read', + 'write', + 'delete', + ], + 'options_configuration' => [ + 'read', + 'write', + 'delete', + ], + 'option_configuration' => [ + 'read', + 'write', + 'delete', + ], + 'option_configuration' => [ + 'read', + 'write', + 'delete', + ], ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/button.php b/addons/default/visiosoft/advs-module/resources/lang/en/button.php index ab988e7b0..c3ff863ad 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/button.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/button.php @@ -32,5 +32,10 @@ return [ 'name' => 'Update Category' ], 'new_option' => 'New Option', - 'export' => 'Export' + 'export' => 'Export', + 'new_productoption' => 'New Productoption', + 'new_productoptions_value' => 'New Productoptions value', + 'new_options_configuration' => 'New Options configuration', + 'new_option_configuration' => 'New Option configuration', + 'new_option_configuration' => 'New Option configuration', ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/field.php b/addons/default/visiosoft/advs-module/resources/lang/en/field.php index 7ebc16101..493583f1f 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/field.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/field.php @@ -313,4 +313,10 @@ return [ 'site' => 'Site', 'subscription' => 'Subscription', 'created' => 'Created', + 'product_option' => [ + 'name' => 'Product Option' + ], + 'option_json' => [ + 'name' => 'Option' + ] ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/permission.php b/addons/default/visiosoft/advs-module/resources/lang/en/permission.php index a75575d96..0a094c9f1 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/permission.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/permission.php @@ -57,4 +57,44 @@ return [ 'delete' => 'Can delete options?', ], ], + 'productoptions' => [ + 'name' => 'Productoptions', + 'option' => [ + 'read' => 'Can read productoptions?', + 'write' => 'Can create/edit productoptions?', + 'delete' => 'Can delete productoptions?', + ], + ], + 'productoptions_value' => [ + 'name' => 'Productoptions value', + 'option' => [ + 'read' => 'Can read productoptions value?', + 'write' => 'Can create/edit productoptions value?', + 'delete' => 'Can delete productoptions value?', + ], + ], + 'options_configuration' => [ + 'name' => 'Options configuration', + 'option' => [ + 'read' => 'Can read options configuration?', + 'write' => 'Can create/edit options configuration?', + 'delete' => 'Can delete options configuration?', + ], + ], + 'option_configuration' => [ + 'name' => 'Option configuration', + 'option' => [ + 'read' => 'Can read option configuration?', + 'write' => 'Can create/edit option configuration?', + 'delete' => 'Can delete option configuration?', + ], + ], + 'option_configuration' => [ + 'name' => 'Option configuration', + 'option' => [ + 'read' => 'Can read option configuration?', + 'write' => 'Can create/edit option configuration?', + 'delete' => 'Can delete option configuration?', + ], + ], ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/section.php b/addons/default/visiosoft/advs-module/resources/lang/en/section.php index b3ebe1995..fa686c524 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/section.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/section.php @@ -45,4 +45,19 @@ return [ 'title' => 'Options', ], 'ads_image' => 'Ads Image', + 'product_options' => [ + 'title' => 'Product Options', + ], + 'productoptions_value' => [ + 'title' => 'Productoptions value', + ], + 'options_configuration' => [ + 'title' => 'Options configuration', + ], + 'option_configuration' => [ + 'title' => 'Option configuration', + ], + 'option_configuration' => [ + 'title' => 'Option configuration', + ], ]; diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/stream.php b/addons/default/visiosoft/advs-module/resources/lang/en/stream.php index 29e720836..bd46a1466 100644 --- a/addons/default/visiosoft/advs-module/resources/lang/en/stream.php +++ b/addons/default/visiosoft/advs-module/resources/lang/en/stream.php @@ -22,4 +22,19 @@ return [ 'options' => [ 'name' => 'Options', ], + 'product_options' => [ + 'name' => 'Produc Options', + ], + 'productoptions_value' => [ + 'name' => 'Productoptions value', + ], + 'options_configuration' => [ + 'name' => 'Options configuration', + ], + 'option_configuration' => [ + 'name' => 'Option configuration', + ], + 'option_configuration' => [ + 'name' => 'Option configuration', + ], ]; diff --git a/addons/default/visiosoft/advs-module/resources/views/new-ad/new-create.twig b/addons/default/visiosoft/advs-module/resources/views/new-ad/new-create.twig index 4ccfbcfda..94d172535 100644 --- a/addons/default/visiosoft/advs-module/resources/views/new-ad/new-create.twig +++ b/addons/default/visiosoft/advs-module/resources/views/new-ad/new-create.twig @@ -138,6 +138,15 @@ +
+ +
+ {{ form.fields.product_options_value.input|raw }} +
+
+
diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php index bf879d2ad..4438cff88 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvModel.php @@ -377,4 +377,9 @@ class AdvModel extends AdvsAdvsEntryModel implements AdvInterface { return $this->finish_at ? $this->finish_at < Carbon::now() : true; } + + public function getProductOptionsValues() + { + return $this->product_options_value; + } } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php index a9cb314fd..ba2de06d3 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvInterface.php @@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryInterface; interface AdvInterface extends EntryInterface { public function expired(); + + public function getProductOptionsValues(); } diff --git a/addons/default/visiosoft/advs-module/src/Adv/Form/AdvFormBuilder.php b/addons/default/visiosoft/advs-module/src/Adv/Form/AdvFormBuilder.php index 0623c5ca6..8f58892f5 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/Form/AdvFormBuilder.php +++ b/addons/default/visiosoft/advs-module/src/Adv/Form/AdvFormBuilder.php @@ -60,7 +60,8 @@ class AdvFormBuilder extends FormBuilder ], 'files', 'popular_adv', - 'adv_day' + 'adv_day', + 'product_options_value' ]; protected $category = null; diff --git a/addons/default/visiosoft/advs-module/src/AdvsModule.php b/addons/default/visiosoft/advs-module/src/AdvsModule.php index 0eda5defc..e7835c641 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModule.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModule.php @@ -37,9 +37,22 @@ class AdvsModule extends Module ], ], ], + 'product_options' => [ + 'title' => 'visiosoft.module.advs::section.product_options.title', + 'buttons' => [ + 'new_productoption', + ], + ], + 'productoptions_value' => [ + 'title' => 'visiosoft.module.advs::section.productoptions_value.title', + 'buttons' => [ + 'new_productoptions_value', + ], + ], + 'option_configuration', 'assets_clear' => [ - 'title' => 'visiosoft.module.advs::section.assets_clear.name', - 'href' => '/admin/assets/clear', + 'title' => 'visiosoft.module.advs::section.assets_clear.name', + 'href' => '/admin/assets/clear', ] // 'custom_fields' => [ // 'buttons' => [ diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php index ec32d05a9..e6a622850 100644 --- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php +++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php @@ -15,6 +15,12 @@ use Visiosoft\AdvsModule\Http\Middleware\SetLang; use Visiosoft\AdvsModule\Listener\AddAdvsSettingsScript; use Visiosoft\AdvsModule\Option\Contract\OptionRepositoryInterface; use Visiosoft\AdvsModule\Option\OptionRepository; +use Visiosoft\AdvsModule\OptionConfiguration\Contract\OptionConfigurationRepositoryInterface; +use Visiosoft\AdvsModule\OptionConfiguration\OptionConfigurationRepository; +use Visiosoft\AdvsModule\Productoption\Contract\ProductoptionRepositoryInterface; +use Visiosoft\AdvsModule\Productoption\ProductoptionRepository; +use Visiosoft\AdvsModule\ProductoptionsValue\Contract\ProductoptionsValueRepositoryInterface; +use Visiosoft\AdvsModule\ProductoptionsValue\ProductoptionsValueRepository; use Visiosoft\LocationModule\Village\Contract\VillageRepositoryInterface; use Visiosoft\LocationModule\Village\VillageRepository; use Visiosoft\LocationModule\Village\VillageModel; @@ -214,6 +220,16 @@ class AdvsModuleServiceProvider extends AddonServiceProvider // Others 'advs/ttr/{id}' => 'Visiosoft\PackagesModule\Http\Controller\packageFEController@advsStatusbyUser', + + //Configrations Admin Controller + 'admin/advs/option_configuration/create' => [ + 'as' => 'visiosoft.module.advs::configrations.create', + 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@create', + ], + 'admin/advs/option_configuration' => [ + 'as' => 'visiosoft.module.advs::configrations.index', + 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@index', + ], ]; /** @@ -294,6 +310,9 @@ class AdvsModuleServiceProvider extends AddonServiceProvider CategoryRepositoryInterface::class => CategoryRepository::class, CountryRepositoryInterface::class => CountryRepository::class, OptionRepositoryInterface::class => OptionRepository::class, + ProductoptionRepositoryInterface::class => ProductoptionRepository::class, + OptionConfigurationRepositoryInterface::class => OptionConfigurationRepository::class, + ProductoptionsValueRepositoryInterface::class => ProductoptionsValueRepository::class, ]; /** diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php index 47032280d..44f95278e 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/AdvsController.php @@ -108,6 +108,10 @@ class AdvsController extends AdminController 'replicate' => [ 'text' => 'Replicate', ], + 'create_configration' => [ + 'text' => 'Create Configrations', + 'href' => route('visiosoft.module.advs::configrations.create')."?ad={entry.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 new file mode 100644 index 000000000..2115f408f --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/OptionConfigurationController.php @@ -0,0 +1,32 @@ +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')); + return $form->render(); + } +} diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsController.php new file mode 100644 index 000000000..c4e57e82d --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsController.php @@ -0,0 +1,43 @@ +render(); + } + + /** + * Create a new entry. + * + * @param ProductoptionFormBuilder $form + * @return \Symfony\Component\HttpFoundation\Response + */ + public function create(ProductoptionFormBuilder $form) + { + return $form->render(); + } + + /** + * Edit an existing entry. + * + * @param ProductoptionFormBuilder $form + * @param $id + * @return \Symfony\Component\HttpFoundation\Response + */ + public function edit(ProductoptionFormBuilder $form, $id) + { + return $form->render($id); + } +} diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsValueController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsValueController.php new file mode 100644 index 000000000..2a5acfb58 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ProductoptionsValueController.php @@ -0,0 +1,43 @@ +render(); + } + + /** + * Create a new entry. + * + * @param ProductoptionsValueFormBuilder $form + * @return \Symfony\Component\HttpFoundation\Response + */ + public function create(ProductoptionsValueFormBuilder $form) + { + return $form->render(); + } + + /** + * Edit an existing entry. + * + * @param ProductoptionsValueFormBuilder $form + * @param $id + * @return \Symfony\Component\HttpFoundation\Response + */ + public function edit(ProductoptionsValueFormBuilder $form, $id) + { + return $form->render($id); + } +} diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationInterface.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationInterface.php new file mode 100644 index 000000000..4d26c2bf8 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Contract/OptionConfigurationInterface.php @@ -0,0 +1,8 @@ +has('ad')) + { + $ad = $advRepository->find(request('ad')); + + $options = $ad->getProductOptionsValues()->groupBy('product_option_id'); + + $options_fields = array(); + + foreach ($options as $option_id => $option_values) + { + if($option = $productOptionRepository->find($option_id)) + { + $options_fields['option-'.$option->getId()] = [ + 'type' => 'anomaly.field_type.select', + 'label' => $option->getName(), + 'required' => true, + 'config' => [ + 'options' => $option_values->pluck('name','id')->all(), + ] + ]; + } + } + $fields = array_merge($options_fields, ['price', 'currency', 'stock']); + + $builder->setFields($fields); + } + } +} diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormHandler.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormHandler.php new file mode 100644 index 000000000..da93db1c2 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormHandler.php @@ -0,0 +1,35 @@ +canSave()) { + return; + } + + $parameters = $builder->getPostData(); + $parameters['parent_adv_id'] = request()->get('ad'); + + $option_json = array(); + + foreach ($parameters as $key => $parameter_value) { + if (substr($key, 0, 7) === "option-") { + $option_id = substr($key, 7); + $option_json[$option_id] = $parameter_value; + unset($parameters[$key]); + } + } + $option_json = ['option_json' => json_encode($option_json)]; + $configration = array_merge($parameters, $option_json); + + + $entry = $repository->create($configration); + $builder->setFormEntry($entry); + } +} diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationCollection.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationCollection.php new file mode 100644 index 000000000..64c3e2d1d --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationCollection.php @@ -0,0 +1,8 @@ +model = $model; + } + + 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, + ]); + } +} diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRouter.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRouter.php new file mode 100644 index 000000000..87fe2c59c --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/OptionConfigurationRouter.php @@ -0,0 +1,8 @@ +setColumns([ + 'name' => [ + 'value' => function (EntryModel $entry, + AdvRepositoryInterface $advRepository) { + + $adv = $advRepository->findById($entry->parent_adv_id); + return "parent_adv_id]) ."'>$adv->name"; + } + ], + 'option_json' => [ + 'value' => function (EntryModel $entry, + ProductoptionRepositoryInterface $productOptionRepository, + ProductoptionsValueRepositoryInterface $productOptionsValueRepository) { + + $values = json_decode($entry->option_json); + $text = ""; + + foreach ($values as $key => $value) { + $productOption = $productOptionRepository->findBy('entry_id', $key); + $productOptionsValue = $productOptionsValueRepository->findBy('entry_id', $value); + + $text .= + ''. + $productOption->name . ': ' . $productOptionsValue->name. + ''; + + } + + return $text; + } + ], + ]); + } +} diff --git a/addons/default/visiosoft/advs-module/src/Productoption/Contract/ProductoptionInterface.php b/addons/default/visiosoft/advs-module/src/Productoption/Contract/ProductoptionInterface.php new file mode 100644 index 000000000..66e68c2dc --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Productoption/Contract/ProductoptionInterface.php @@ -0,0 +1,8 @@ +name; + } +} diff --git a/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionObserver.php b/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionObserver.php new file mode 100644 index 000000000..e1a582328 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionObserver.php @@ -0,0 +1,8 @@ +model = $model; + } +} diff --git a/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionRouter.php b/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionRouter.php new file mode 100644 index 000000000..8067574e6 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/Productoption/ProductoptionRouter.php @@ -0,0 +1,8 @@ +model = $model; + } +} diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRouter.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRouter.php new file mode 100644 index 000000000..e912ae9bf --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRouter.php @@ -0,0 +1,8 @@ + + * @author Ryan Thompson + */ +class LookupTableBuilder extends \Anomaly\MultipleFieldType\Table\LookupTableBuilder +{ + + protected $filters = [ + 'product_option' + ]; + + /** + * The table columns. + * + * @var array + */ + protected $columns = [ + 'name', 'product_option' + ]; +} diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/SelectedTableBuilder.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/SelectedTableBuilder.php new file mode 100644 index 000000000..dccc81c96 --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/SelectedTableBuilder.php @@ -0,0 +1,21 @@ + + * @author Ryan Thompson + */ +class SelectedTableBuilder extends \Anomaly\MultipleFieldType\Table\SelectedTableBuilder +{ + + /** + * The table columns. + * + * @var array + */ + protected $columns = [ + 'name', 'product_option' + ]; +} diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/ValueTableBuilder.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/ValueTableBuilder.php new file mode 100644 index 000000000..b9a42c19b --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Support/MultipleFieldType/ValueTableBuilder.php @@ -0,0 +1,21 @@ + + * @author Ryan Thompson + */ +class ValueTableBuilder extends \Anomaly\MultipleFieldType\Table\ValueTableBuilder +{ + + /** + * The table columns. + * + * @var array + */ + protected $columns = [ + 'name', 'product_option' + ]; +} diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Table/ProductoptionsValueTableBuilder.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Table/ProductoptionsValueTableBuilder.php new file mode 100644 index 000000000..8c331821d --- /dev/null +++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Table/ProductoptionsValueTableBuilder.php @@ -0,0 +1,68 @@ + [ + 'value' => 'entry.name' + ], + 'product_option', + ]; + + /** + * The table buttons. + * + * @var array|string + */ + protected $buttons = [ + 'edit' + ]; + + /** + * The table actions. + * + * @var array|string + */ + protected $actions = [ + 'delete' + ]; + + /** + * The table options. + * + * @var array + */ + protected $options = []; + + /** + * The table assets. + * + * @var array + */ + protected $assets = []; + +} 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 new file mode 100644 index 000000000..ae86aaf37 --- /dev/null +++ b/addons/default/visiosoft/advs-module/tests/Unit/OptionConfiguration/Form/OptionConfigurationFormBuilderTest.php @@ -0,0 +1,8 @@ +