From de321d9b5af8b16c0f626d4b4fdf8af5d4220a49 Mon Sep 17 00:00:00 2001 From: merdan Date: Sun, 25 Sep 2022 20:56:43 +0500 Subject: [PATCH] admin menu filter and seller --- .../Sarga/API/Http/Controllers/Vendors.php | 5 +++ .../Sarga/API/Http/Resources/Catalog/Menu.php | 27 ++++++++++++ ...09_25_130148_create_seller_menus_table.php | 41 +++++++++++++++++++ .../Sarga/Admin/src/Resources/lang/en/app.php | 1 + .../views/catalog/menus/create.blade.php | 32 ++++++++++++++- .../views/catalog/menus/edit.blade.php | 30 +++++++++++++- packages/Sarga/Shop/src/Models/Menu.php | 8 +++- packages/Sarga/Shop/src/Models/Vendor.php | 10 ++++- .../Sarga/Shop/src/Models/VendorProxy.php | 8 ++++ .../src/Providers/ModuleServiceProvider.php | 1 + .../Shop/src/Repositories/MenuRepository.php | 10 ++++- 11 files changed, 164 insertions(+), 9 deletions(-) create mode 100644 packages/Sarga/API/Http/Resources/Catalog/Menu.php create mode 100644 packages/Sarga/Admin/src/Database/Migrations/2022_09_25_130148_create_seller_menus_table.php create mode 100644 packages/Sarga/Shop/src/Models/VendorProxy.php diff --git a/packages/Sarga/API/Http/Controllers/Vendors.php b/packages/Sarga/API/Http/Controllers/Vendors.php index f5428355f..949359ae8 100644 --- a/packages/Sarga/API/Http/Controllers/Vendors.php +++ b/packages/Sarga/API/Http/Controllers/Vendors.php @@ -55,6 +55,11 @@ class Vendors extends V1Controller return Source::collection($categorizedVendors); } + public function menus(MenuRepository $repository){ + $menus = $repository->where('status',1)->with(['categories','brands'])->orderBy('position','asc')->get(); + return Menu::collection($menus); + } + public function index() { $vendors = $this->vendorRepository->select('marketplace_sellers.id','url','logo','banner','shop_title','brand_attribute_id') diff --git a/packages/Sarga/API/Http/Resources/Catalog/Menu.php b/packages/Sarga/API/Http/Resources/Catalog/Menu.php new file mode 100644 index 000000000..6fc930f9e --- /dev/null +++ b/packages/Sarga/API/Http/Resources/Catalog/Menu.php @@ -0,0 +1,27 @@ + $this->id, + 'name' => $this->name, + 'description' => $this->description, + 'categories' => Category::collection($this->categories), + 'brands' => Brands::collection($this->brands) + + ]; + } + +} \ No newline at end of file diff --git a/packages/Sarga/Admin/src/Database/Migrations/2022_09_25_130148_create_seller_menus_table.php b/packages/Sarga/Admin/src/Database/Migrations/2022_09_25_130148_create_seller_menus_table.php new file mode 100644 index 000000000..97c5b8d65 --- /dev/null +++ b/packages/Sarga/Admin/src/Database/Migrations/2022_09_25_130148_create_seller_menus_table.php @@ -0,0 +1,41 @@ +string('filter')->nullable(); + + }); + Schema::create('seller_menus',function (Blueprint $table) { + $table->integer('menu_id')->unsigned(); + $table->integer('seller_id')->unsigned(); + $table->foreign('menu_id')->references('id')->on('menus'); + $table->foreign('seller_id')->references('id')->on('brands'); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('seller_menus'); + Schema::table('menus', function (Blueprint $table) { + $table->dropColumn('filter'); + }); + } +} diff --git a/packages/Sarga/Admin/src/Resources/lang/en/app.php b/packages/Sarga/Admin/src/Resources/lang/en/app.php index 8fb681e58..4ce190de7 100644 --- a/packages/Sarga/Admin/src/Resources/lang/en/app.php +++ b/packages/Sarga/Admin/src/Resources/lang/en/app.php @@ -200,6 +200,7 @@ return [ 'brand-search-hint' => 'Brand search hint', 'no-result-found' => 'No result found', 'searching' => 'Searching', + 'sources' => 'Sources (Vendors)' ], ] ]; diff --git a/packages/Sarga/Admin/src/Resources/views/catalog/menus/create.blade.php b/packages/Sarga/Admin/src/Resources/views/catalog/menus/create.blade.php index 20df6149d..fde5a0983 100644 --- a/packages/Sarga/Admin/src/Resources/views/catalog/menus/create.blade.php +++ b/packages/Sarga/Admin/src/Resources/views/catalog/menus/create.blade.php @@ -34,10 +34,16 @@
- + @{{ errors.first('name') }}
- +
+ + + @{{ errors.first('filter') }} +
+ + @foreach ($sellers as $seller) + + @endforeach + + + + @{{ errors.first('sellers[]') }} + +
+ + @if ($categories->count()) @@ -79,6 +106,7 @@ @endif + diff --git a/packages/Sarga/Admin/src/Resources/views/catalog/menus/edit.blade.php b/packages/Sarga/Admin/src/Resources/views/catalog/menus/edit.blade.php index 7a5864849..3f665fe65 100644 --- a/packages/Sarga/Admin/src/Resources/views/catalog/menus/edit.blade.php +++ b/packages/Sarga/Admin/src/Resources/views/catalog/menus/edit.blade.php @@ -62,11 +62,16 @@ - @{{ errors.first('{!!$locale!!}[name]') }} - +
+ + + @{{ errors.first('filter') }} +
+ + @foreach ($sellers as $seller) + + @endforeach + + + + @{{ errors.first('sellers[]') }} + +
+ + @if ($categories->count()) diff --git a/packages/Sarga/Shop/src/Models/Menu.php b/packages/Sarga/Shop/src/Models/Menu.php index e8d7559dc..307a06cee 100644 --- a/packages/Sarga/Shop/src/Models/Menu.php +++ b/packages/Sarga/Shop/src/Models/Menu.php @@ -33,7 +33,8 @@ class Menu extends TranslatableModel implements MenuContract */ protected $with = ['translations']; - public function brands() :BelongsToMany{ + public function brands() :BelongsToMany + { return $this->belongsToMany(BrandProxy::modelClass(),'menu_brands'); } @@ -41,4 +42,9 @@ class Menu extends TranslatableModel implements MenuContract { return $this->belongsToMany(CategoryProxy::modelClass(), 'menu_categories'); } + + public function sellers():BelongsToMany + { + return $this->belongsToMany(VendorProxy::modelClass(),'seller_menus') + } } \ No newline at end of file diff --git a/packages/Sarga/Shop/src/Models/Vendor.php b/packages/Sarga/Shop/src/Models/Vendor.php index 27a7b92ea..a633f431b 100644 --- a/packages/Sarga/Shop/src/Models/Vendor.php +++ b/packages/Sarga/Shop/src/Models/Vendor.php @@ -10,12 +10,18 @@ use Webkul\Marketplace\Models\SellerCategoryProxy; class Vendor extends Seller { - public function categories() + public function categories() : HasOne { return $this->hasOne(SellerCategoryProxy::modelClass(),'seller_id',); } - public function brands(){ + public function brands() : BelongsToMany + { return $this->belongsToMany(BrandProxy::modelClass(),'seller_brands','seller_id'); } + + public function menus() : BelongsToMany + { + return $this->belongsToMany(MenuProxy::modelClass(),'seller_menus','seller_id') + } } \ No newline at end of file diff --git a/packages/Sarga/Shop/src/Models/VendorProxy.php b/packages/Sarga/Shop/src/Models/VendorProxy.php new file mode 100644 index 000000000..4feb7b2e4 --- /dev/null +++ b/packages/Sarga/Shop/src/Models/VendorProxy.php @@ -0,0 +1,8 @@ +model->create($data); -// $this->uploadImages($data, $menu); -// $product->categories()->sync($data['categories']); if (isset($data['categories'])) { $menu->categories()->sync($data['categories']); } + if(isset($data['sellers'])){ + $menu->sellers()->sync($data['sellers']); + } + return $menu; } @@ -58,6 +60,10 @@ class MenuRepository extends Repository if (isset($data['brands'])) { $menu->brands()->sync($data['brands']); } + + if(isset($data['sellers'])){ + $menu->sellers()->sync($data['sellers']); + } }