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 %}
+
+
+ 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 @@
-