diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php index fe4a0e91b..c869411b4 100644 --- a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -27,7 +27,5 @@ class EventServiceProvider extends ServiceProvider Event::listen('catalog.product.create.after', 'Webkul\Admin\Listeners\Product@afterProductCreated'); Event::listen('catalog.product.update.after', 'Webkul\Admin\Listeners\Product@afterProductUpdate'); - - Event::listen('catalog.product.delete.after', 'Webkul\Admin\Listeners\Product@afterProductDelete'); } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 75b87a4d7..5ae31f64f 100644 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -467,6 +467,7 @@ return [ 'default-locale' => 'Default Locale', 'currencies' => 'Currencies', 'base-currency' => 'Base Currency', + 'root-category' => 'Root Category', 'inventory_sources' => 'Inventory Sources', 'design' => 'Design', 'theme' => 'Theme', diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php index ebf463abb..3a7f58e4a 100644 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/create.blade.php @@ -56,6 +56,18 @@ @{{ errors.first('inventory_sources[]') }} +
+ + + @{{ errors.first('root_category_id') }} +
+
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php index 0802b67a9..2e6127045 100644 --- a/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/channels/edit.blade.php @@ -59,6 +59,19 @@ @{{ errors.first('inventory_sources[]') }}
+
+ + root_category_id ?> + + @{{ errors.first('root_category_id') }} +
+
diff --git a/packages/Webkul/Category/src/Repositories/CategoryRepository.php b/packages/Webkul/Category/src/Repositories/CategoryRepository.php index 11d87b039..b9eb2ed16 100644 --- a/packages/Webkul/Category/src/Repositories/CategoryRepository.php +++ b/packages/Webkul/Category/src/Repositories/CategoryRepository.php @@ -80,6 +80,17 @@ class CategoryRepository extends Repository : Category::orderBy('position', 'ASC')->get()->toTree(); } + + /** + * Get root categories + * + * @return mixed + */ + public function getRootCategories() + { + return Category::withDepth()->having('depth', '=', 0)->get(); + } + /** * get visible category tree * diff --git a/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_table.php b/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_table.php new file mode 100644 index 000000000..ae32456d3 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2018_12_31_161114_alter_channels_table.php @@ -0,0 +1,31 @@ +integer('root_category_id')->nullable()->unsigned(); + $table->foreign('root_category_id')->references('id')->on('categories')->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/packages/Webkul/Core/src/Http/Controllers/ChannelController.php b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php index 7d4e62999..61efdb773 100644 --- a/packages/Webkul/Core/src/Http/Controllers/ChannelController.php +++ b/packages/Webkul/Core/src/Http/Controllers/ChannelController.php @@ -77,6 +77,7 @@ class ChannelController extends Controller 'default_locale_id' => 'required', 'currencies' => 'required|array|min:1', 'base_currency_id' => 'required', + 'root_category_id' => 'required', 'logo.*' => 'mimes:jpeg,jpg,bmp,png', 'favicon.*' => 'mimes:jpeg,jpg,bmp,png' ]); @@ -122,6 +123,7 @@ class ChannelController extends Controller 'default_locale_id' => 'required', 'currencies' => 'required|array|min:1', 'base_currency_id' => 'required', + 'root_category_id' => 'required', 'logo.*' => 'mimes:jpeg,jpg,bmp,png', 'favicon.*' => 'mimes:jpeg,jpg,bmp,png' ]); diff --git a/packages/Webkul/Core/src/Models/Channel.php b/packages/Webkul/Core/src/Models/Channel.php index 2290967c6..39de83d72 100644 --- a/packages/Webkul/Core/src/Models/Channel.php +++ b/packages/Webkul/Core/src/Models/Channel.php @@ -6,11 +6,12 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Storage; use Webkul\Core\Models\Locale; use Webkul\Core\Models\Currency; +use Webkul\Category\Models\Category; use Webkul\Inventory\Models\InventorySource; class Channel extends Model { - protected $fillable = ['code', 'name', 'description', 'theme', 'home_page_content', 'footer_content', 'hostname', 'default_locale_id', 'base_currency_id']; + protected $fillable = ['code', 'name', 'description', 'theme', 'home_page_content', 'footer_content', 'hostname', 'default_locale_id', 'base_currency_id', 'root_category_id']; /** * Get the channel locales. @@ -55,6 +56,14 @@ class Channel extends Model return $this->belongsTo(Currency::class); } + /** + * Get the base currency + */ + public function root_category() + { + return $this->belongsTo(Category::class, 'root_category_id'); + } + /** * Get logo image url. */ diff --git a/packages/Webkul/Shop/src/Http/ViewComposers/CategoryComposer.php b/packages/Webkul/Shop/src/Http/ViewComposers/CategoryComposer.php index 5276a4e4a..aea86852d 100644 --- a/packages/Webkul/Shop/src/Http/ViewComposers/CategoryComposer.php +++ b/packages/Webkul/Shop/src/Http/ViewComposers/CategoryComposer.php @@ -44,7 +44,7 @@ class CategoryComposer { $categories = []; - foreach ($this->category->getVisibleCategoryTree() as $category) { + foreach ($this->category->getVisibleCategoryTree(core()->getCurrentChannel()->root_category_id) as $category) { if($category->slug) array_push($categories, $category); }