diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index c63cc13..4dccf57 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -83,8 +83,8 @@ if (! function_exists('sendSMS')) { return true; }) ->post('http://216.250.14.144:3000/api/data', [ - 'phone' => '+993'.$phone, - 'code' => $message, + 'phone' => '+993'.$phone, + 'code' => $message, ]); return $response->body(); @@ -396,7 +396,7 @@ function createHalkbankOrder($price = 123): array return [ 'status' => 'failed', 'url' => '', - 'orderId' => '' + 'orderId' => '', ]; } @@ -407,7 +407,6 @@ function createHalkbankOrder($price = 123): array ]; } - /** * Original quality :D */ diff --git a/app/Http/Controllers/Api/V1/Category/CategoryController.php b/app/Http/Controllers/Api/V1/Category/CategoryController.php index 71b767a..f13eb87 100644 --- a/app/Http/Controllers/Api/V1/Category/CategoryController.php +++ b/app/Http/Controllers/Api/V1/Category/CategoryController.php @@ -62,7 +62,8 @@ class CategoryController extends Controller return response()->rest_paginate( ProductResource::collection( ProductRepository::make($request) - ->queryAsFromResource($category) + // ->queryAsFromResource($category) + ->applyMultiLevelFilter($category) ->applyBasicQueries() ->applyFilters() ->applySorting() diff --git a/app/Listeners/Ecommerce/Order/SendOrderCreatedNotification.php b/app/Listeners/Ecommerce/Order/SendOrderCreatedNotification.php index a9f7d48..92c11e2 100644 --- a/app/Listeners/Ecommerce/Order/SendOrderCreatedNotification.php +++ b/app/Listeners/Ecommerce/Order/SendOrderCreatedNotification.php @@ -99,13 +99,13 @@ class SendOrderCreatedNotification implements ShouldQueue Log::channel('order_sms_notification_sent_activity') ->info(sprintf('SMS_SENT_FOR_ORDER[id, phone]: %s, %s', $order->id, orderAdminNumber())); - User::where('phone_number', orderAdminNumber())->first()->notify( - NovaNotification::make() - ->message('Täze sargyt.') - ->action('Gör', sprintf('/turkmenpostadmin/resources/orders/%s', $order->id)) - ->icon('download') - ->type('info') - ); + User::where('phone_number', orderAdminNumber())->first()->notify( + NovaNotification::make() + ->message('Täze sargyt.') + ->action('Gör', sprintf('/turkmenpostadmin/resources/orders/%s', $order->id)) + ->icon('download') + ->type('info') + ); } } diff --git a/app/Repositories/Ecommerce/Product/ProductRepository.php b/app/Repositories/Ecommerce/Product/ProductRepository.php index 84f5293..1eae886 100644 --- a/app/Repositories/Ecommerce/Product/ProductRepository.php +++ b/app/Repositories/Ecommerce/Product/ProductRepository.php @@ -4,10 +4,12 @@ namespace App\Repositories\Ecommerce\Product; use App\Helpers\Ecommerce\Product\Filter\ProductFilterer; use App\Helpers\Ecommerce\Product\Sort\ProductSorter; +use App\Models\Ecommerce\Product\Category\Category; use App\Models\Ecommerce\Product\Product\Product; use Illuminate\Contracts\Pagination\Paginator; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class ProductRepository { @@ -134,6 +136,35 @@ class ProductRepository return $this; } + public function applyMultiLevelFilter(Category $category): self + { + $categoryId = $category->id; + + $categoryIds = collect(DB::select(' + WITH RECURSIVE category_tree AS ( + SELECT id FROM categories WHERE id = ? + UNION + SELECT c.id + FROM categories c + JOIN category_tree ct ON c.parent_id = ct.id + ) + SELECT id FROM category_tree + ', [$categoryId]))->pluck('id'); + + $products = DB::table('products') + ->join('product_has_relations', 'products.id', '=', 'product_has_relations.product_id') + ->whereIn('product_has_relations.productable_id', $categoryIds) + ->where('product_has_relations.productable_type', '=', 'category') + ->select('products.id') + ->distinct() + ->pluck('id') + ->toArray(); + + $this->queryBuilder->whereIntegerInRaw('products.id', $products); + + return $this; + } + /** * Apply sorting */ diff --git a/database/seeders/ChannelTableSeeder.php b/database/seeders/ChannelTableSeeder.php index e90f2d5..5375212 100644 --- a/database/seeders/ChannelTableSeeder.php +++ b/database/seeders/ChannelTableSeeder.php @@ -14,7 +14,8 @@ class ChannelTableSeeder extends Seeder */ public function run(): void { - $this->seedOldData(); + // $this->seedOldData(); + $this->seedStarterKit(); } /** diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 1659479..156c513 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -17,27 +17,27 @@ class DatabaseSeeder extends Seeder $this->call([ SettingsSeeder::class, RolesTableSeeder::class, - BannerTableSeeder::class, - CarouselTableSeeder::class, + // BannerTableSeeder::class, + // CarouselTableSeeder::class, UserTableSeeder::class, ChannelTableSeeder::class, PaymentTypeTableSeeder::class, ProvinceTableSeeder::class, BrandTableSeeder::class, - ProductTableSeeder::class, + // ProductTableSeeder::class, PostBranchTableSeeder::class, - InventoriesTableSeeder::class, + // InventoriesTableSeeder::class, CategoryTableSeeder::class, CollectionTableSeeder::class, - AttributeTableSeeder::class, - ContactUsTableSeeder::class, + // AttributeTableSeeder::class, + // ContactUsTableSeeder::class, LegalPageTableSeeder::class, - ReviewTableSeeder::class, - NewsletterTableSeeder::class, - CartItemTableSeeder::class, - FavouriteTableSeeder::class, - MediaTableSeeder::class, - ProductHasRelationsTable::class, + // ReviewTableSeeder::class, + // NewsletterTableSeeder::class, + // CartItemTableSeeder::class, + // FavouriteTableSeeder::class, + // MediaTableSeeder::class, + // ProductHasRelationsTable::class, ]); } } diff --git a/database/seeders/UserTableSeeder.php b/database/seeders/UserTableSeeder.php index 6d3279d..a8c5a20 100644 --- a/database/seeders/UserTableSeeder.php +++ b/database/seeders/UserTableSeeder.php @@ -15,7 +15,8 @@ class UserTableSeeder extends Seeder */ public function run(): void { - $this->seedOldData(); + // $this->seedOldData(); + $this->seedStarterKit(); } /**