diff --git a/addons/default/visiosoft/advs-module/resources/css/new-create-new.scss b/addons/default/visiosoft/advs-module/resources/css/new-create-new.scss
index 139cbef8c..1878da2d1 100644
--- a/addons/default/visiosoft/advs-module/resources/css/new-create-new.scss
+++ b/addons/default/visiosoft/advs-module/resources/css/new-create-new.scss
@@ -263,6 +263,15 @@ label {
}
}
+.swal2-title {
+ max-width: 100% !important;
+}
+
+#configurationModal .form-group {
+ flex: 1 1 auto!important;
+ margin: 0 1rem 1rem 1rem;
+}
+
.btn-configuration {
background-color: #6E5DDB;
padding: 1rem 2rem;
diff --git a/addons/default/visiosoft/advs-module/resources/js/new-create.js b/addons/default/visiosoft/advs-module/resources/js/new-create.js
index a58aa2a96..06d817e58 100644
--- a/addons/default/visiosoft/advs-module/resources/js/new-create.js
+++ b/addons/default/visiosoft/advs-module/resources/js/new-create.js
@@ -181,6 +181,33 @@ $(document).ready(function () {
});
});
+let option_id = 0;
+let option_value = '';
+function createOptionValue() {
+ Swal.fire({
+ title: save_the_option,
+ text: option_value,
+ showCancelButton: true,
+ confirmButtonText: new_button,
+ }).then(result => {
+ if (result.isConfirmed) {
+ crudAjax({
+ option: option_id,
+ name: option_value
+ }, '/api/classified/configuration/createOptions', 'POST', function (callback) {
+ Swal.fire({
+ icon: 'success',
+ title: option_saved,
+ text: callback.name,
+ showConfirmButton: false,
+ timer: 1500
+ })
+ })
+ }
+ });
+}
+
+
$(document).ready(function () {
$(".priceField, .standard-price-field").inputmask('currency', {
rightAlign: true,
@@ -231,6 +258,36 @@ $(document).ready(function () {
tokenSeparators: [',']
});
+ $('.product-options-fields').select2({
+ width: '100%',
+ dropdownAutoWidth : true,
+ allowClear: false,
+ ajax: {
+ url: "/api/classified/configuration/getOptions",
+ data: function (params) {
+ option_value = params.term;
+ return {
+ q: params.term,
+ option: option_id,
+ };
+ },
+ processResults: function (data) {
+ return {
+ results: $.map(data, (item) => {
+ return {id: item.id, text: item.name}
+ })
+ }
+ }
+ },
+ language: {
+ noResults: function () {
+ return $(``);
+ }
+ }
+ }).on('select2:open', function (e) {
+ option_id = $(e.target).data('id');
+ });
+
let deletedOptions = [];
$('#selectOptions').on('select2:unselect', function (e) {
if (e.params.data.element.id) {
@@ -266,7 +323,7 @@ $(document).ready(function () {
$('#configurationForm').submit(function (e) {
e.preventDefault();
- crudAjax($(this).serialize(), '/advs/configuration/ajax/create', 'POST', function (callback) {
+ crudAjax($(this).serialize(), '/classified/configuration/ajax/create', 'POST', function (callback) {
$('.configuration-table').append(`
| ${callback.option_name} |
${callback.stock} |
@@ -288,7 +345,7 @@ $(document).ready(function () {
$(document).on('click', '.remove-conf', function () {
const id = $(this).data('id');
- crudAjax({id: id}, '/advs/configuration/ajax/delete', 'POST', function (callback) {
+ crudAjax({id: id}, '/classified/configuration/ajax/delete', 'POST', function (callback) {
$('#configuration-' + id).remove();
})
});
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 d3c185309..328f6e14f 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/button.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/button.php
@@ -35,7 +35,7 @@ return [
],
'new_option' => 'New Option',
'export' => 'Export',
- 'new_productoption' => 'New Productoption',
+ 'new_productoption' => 'New Product Option',
'new_productoptions_value' => 'New Product option value',
'new_options_configuration' => 'New Option configuration',
'new_option_configuration' => 'New Option configuration',
diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/message.php b/addons/default/visiosoft/advs-module/resources/lang/en/message.php
index 6fbadb7b5..b373acc95 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/message.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/message.php
@@ -34,4 +34,6 @@ return [
'disabled_detailed_options_for_admin_role' => "Detailed product options are disabled.",
'permission_error' => 'You do not have permission for this action',
'currency_converter_not_available' => 'The currency converter is not available.',
+ 'option_saved' => 'Option Saved',
+ 'do_you_want_to_save_the_option' => 'Do you want to save the option?',
];
diff --git a/addons/default/visiosoft/advs-module/resources/views/new-ad/partials/configuration-modal.twig b/addons/default/visiosoft/advs-module/resources/views/new-ad/partials/configuration-modal.twig
index cb00dff04..683123791 100644
--- a/addons/default/visiosoft/advs-module/resources/views/new-ad/partials/configuration-modal.twig
+++ b/addons/default/visiosoft/advs-module/resources/views/new-ad/partials/configuration-modal.twig
@@ -50,3 +50,9 @@
+
+
diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
index c9dbd74b7..6ecd98bc6 100644
--- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
+++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
@@ -224,15 +224,22 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@create',
],
- 'advs/configuration/ajax/create' => [
+ 'classified/configuration/ajax/create' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@ajaxCreate'
],
- 'advs/configuration/ajax/delete' => [
+ 'classified/configuration/ajax/delete' => [
'middleware' => 'auth',
'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@ajaxDelete'
],
+ 'api/classified/configuration/getOptions' => [
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@ajaxGetOptions',
+ ],
+ 'api/classified/configuration/createOptions' => [
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@ajaxCreateOptions',
+ ],
+
'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
index 86491f7d7..87fb1c605 100644
--- a/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php
+++ b/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php
@@ -4,6 +4,8 @@ use Anomaly\Streams\Platform\Http\Controller\PublicController;
use Visiosoft\AdvsModule\Adv\AdvModel;
use Visiosoft\AdvsModule\OptionConfiguration\Contract\OptionConfigurationRepositoryInterface;
use Visiosoft\AdvsModule\OptionConfiguration\Form\OptionConfigurationFormBuilder;
+use Visiosoft\AdvsModule\Productoption\Contract\ProductoptionRepositoryInterface;
+use Visiosoft\AdvsModule\ProductoptionsValue\Contract\ProductoptionsValueRepositoryInterface;
use Visiosoft\AdvsModule\Support\Command\Currency;
use Visiosoft\CartsModule\Cart\CartRepository;
use Visiosoft\CartsModule\Cart\Command\GetCart;
@@ -13,16 +15,22 @@ class OptionConfigurationController extends PublicController
private $adv_model;
private $optionConfigurationRepository;
private $cartRepository;
+ private $productoptionRepository;
+ private $productoptionsValueRepository;
public function __construct(
AdvModel $advModel,
OptionConfigurationRepositoryInterface $optionConfigurationRepository,
- CartRepository $cartRepository
+ CartRepository $cartRepository,
+ ProductoptionRepositoryInterface $productoptionRepository,
+ ProductoptionsValueRepositoryInterface $productoptionsValueRepository
)
{
$this->adv_model = $advModel;
$this->optionConfigurationRepository = $optionConfigurationRepository;
$this->cartRepository = $cartRepository;
+ $this->productoptionRepository = $productoptionRepository;
+ $this->productoptionsValueRepository = $productoptionsValueRepository;
parent::__construct();
}
@@ -75,6 +83,21 @@ class OptionConfigurationController extends PublicController
}
}
+ public function ajaxGetOptions() {
+ $option = $this->productoptionRepository->find($this->request->option);
+ return $this->productoptionsValueRepository->searchByOption($option->id, $this->request->q);
+ }
+
+ public function ajaxCreateOptions()
+ {
+ $option = $this->productoptionRepository->find($this->request->option);
+
+ return $this->productoptionsValueRepository->create([
+ 'product_option' => $option,
+ 'name' => $this->request->name
+ ]);
+ }
+
public function ajaxConfAddCart()
{
if ($conf = $this->optionConfigurationRepository->find($this->request->configuration ?? $this->request->data['conf'])) {
diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormFields.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormFields.php
index 12ae5f5bd..ec06b2ee6 100644
--- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormFields.php
+++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Form/OptionConfigurationFormFields.php
@@ -29,8 +29,12 @@ class OptionConfigurationFormFields
{
$options_fields['option-'.$option->getId()] = [
'type' => 'anomaly.field_type.select',
+ 'class' => 'form-control product-options-fields',
'label' => $option->getName(),
'required' => true,
+ 'attributes' => [
+ 'data-id' => $option->getId(),
+ ],
'config' => [
'options' => $optionValue->pluck('title','id')->all(),
]
diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueRepositoryInterface.php
index 8ad968cc2..ed74ff6d2 100644
--- a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueRepositoryInterface.php
+++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/Contract/ProductoptionsValueRepositoryInterface.php
@@ -5,4 +5,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface ProductoptionsValueRepositoryInterface extends EntryRepositoryInterface
{
public function getWithOptionsId(array $ids);
+ public function searchByOption($option, $value);
}
diff --git a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRepository.php b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRepository.php
index 0f68a0aec..900b886db 100644
--- a/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRepository.php
+++ b/addons/default/visiosoft/advs-module/src/ProductoptionsValue/ProductoptionsValueRepository.php
@@ -23,8 +23,15 @@ class ProductoptionsValueRepository extends EntryRepository implements Productop
$this->model = $model;
}
- public function getWithOptionsId(array $ids)
- {
- return $this->newQuery()->whereIn('product_option_id', $ids)->get();
- }
+ public function getWithOptionsId(array $ids)
+ {
+ return $this->newQuery()->whereIn('product_option_id', $ids)->get();
+ }
+
+ public function searchByOption($option, $value)
+ {
+ return $this->newQuery()->where('product_option_id', $option)
+ ->where('name', 'like', '%' . $value . '%')
+ ->get();
+ }
}