From 84641868e98786264f517865d48619ac4bc1ef7a Mon Sep 17 00:00:00 2001 From: Nikita Kiselev Date: Mon, 5 Jan 2026 01:14:53 +0300 Subject: [PATCH] feat: add store_id conditions (#43) --- ..._add_store_id_to_telecart_customers_table.php | 16 ++++++++++++++++ .../src/Handlers/CategoriesHandler.php | 9 +++++++++ .../src/Handlers/ProductsHandler.php | 3 ++- .../src/Services/ProductsService.php | 9 ++++++++- .../src/Services/TelecartCustomerService.php | 6 +++++- 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260105000000_add_store_id_to_telecart_customers_table.php diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260105000000_add_store_id_to_telecart_customers_table.php b/module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260105000000_add_store_id_to_telecart_customers_table.php new file mode 100755 index 0000000..a846316 --- /dev/null +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260105000000_add_store_id_to_telecart_customers_table.php @@ -0,0 +1,16 @@ +database->statement($sql); + } +}; + diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/CategoriesHandler.php b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/CategoriesHandler.php index 6ffade3..81f7f4d 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/CategoriesHandler.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/CategoriesHandler.php @@ -10,6 +10,7 @@ use Openguru\OpenCartFramework\Http\Request; use Openguru\OpenCartFramework\ImageTool\ImageFactory; use Openguru\OpenCartFramework\QueryBuilder\Builder; use Openguru\OpenCartFramework\QueryBuilder\JoinClause; +use Openguru\OpenCartFramework\QueryBuilder\Table; use Openguru\OpenCartFramework\Support\Str; use Symfony\Component\HttpFoundation\JsonResponse; @@ -31,6 +32,7 @@ class CategoriesHandler public function index(Request $request): JsonResponse { $languageId = $this->settings->config()->getApp()->getLanguageId(); + $storeId = $this->settings->get('store.oc_store_id', 0); $perPage = $request->get('perPage', 100); @@ -50,6 +52,13 @@ class CategoriesHandler ->where('descriptions.language_id', '=', $languageId); } ) + ->join( + new Table(db_table('category_to_store'), 'category_to_store'), + function (JoinClause $join) use ($storeId) { + $join->on('category_to_store.category_id', '=', 'categories.category_id') + ->where('category_to_store.store_id', '=', $storeId); + } + ) ->where('categories.status', '=', 1) ->orderBy('parent_id') ->orderBy('sort_order') diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/ProductsHandler.php b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/ProductsHandler.php index 9711f7e..814ad8b 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/ProductsHandler.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/ProductsHandler.php @@ -34,12 +34,13 @@ class ProductsHandler $maxPages = (int) $request->json('maxPages', 10); $search = trim($request->json('search', '')); $filters = $request->json('filters'); - + $storeId = $this->settings->get('store.oc_store_id', 0); $languageId = $this->settings->config()->getApp()->getLanguageId(); $response = $this->productsService->getProductsResponse( compact('page', 'perPage', 'search', 'filters', 'maxPages'), $languageId, + $storeId, ); return new JsonResponse($response); diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/ProductsService.php b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/ProductsService.php index 7748f01..a4ac0f0 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/ProductsService.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/ProductsService.php @@ -58,7 +58,7 @@ class ProductsService /** * @throws ImageNotFoundException */ - public function getProductsResponse(array $params, int $languageId): array + public function getProductsResponse(array $params, int $languageId, int $storeId): array { $page = $params['page']; $perPage = $params['perPage']; @@ -104,6 +104,13 @@ class ProductsService ->where('product_description.language_id', '=', $languageId); } ) + ->join( + new Table(db_table('product_to_store'), 'product_to_store'), + function (JoinClause $join) use ($storeId) { + $join->on('product_to_store.product_id', '=', 'products.product_id') + ->where('product_to_store.store_id', '=', $storeId); + } + ) ->leftJoin(new Table(db_table('manufacturer'), 'manufacturer'), function (JoinClause $join) { $join->on('products.manufacturer_id', '=', 'manufacturer.manufacturer_id'); }) diff --git a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/TelecartCustomerService.php b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/TelecartCustomerService.php index 4802068..7208d78 100755 --- a/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/TelecartCustomerService.php +++ b/module/oc_telegram_shop/upload/oc_telegram_shop/src/Services/TelecartCustomerService.php @@ -6,6 +6,7 @@ namespace App\Services; use App\Models\TelegramCustomer; use Carbon\Carbon; +use Openguru\OpenCartFramework\Config\Settings; use Openguru\OpenCartFramework\Support\Arr; use Openguru\OpenCartFramework\Support\Utils; use RuntimeException; @@ -13,10 +14,12 @@ use RuntimeException; class TelecartCustomerService { private TelegramCustomer $telegramCustomer; + private Settings $settings; - public function __construct(TelegramCustomer $telegramCustomer) + public function __construct(TelegramCustomer $telegramCustomer, Settings $settings) { $this->telegramCustomer = $telegramCustomer; + $this->settings = $settings; } /** @@ -79,6 +82,7 @@ class TelecartCustomerService 'allows_write_to_pm' => Utils::boolToInt(Arr::get($telegramUserData, 'allows_write_to_pm', false)), 'photo_url' => Arr::get($telegramUserData, 'photo_url'), 'last_seen_at' => date('Y-m-d H:i:s'), + 'store_id' => $this->settings->get('store.oc_store_id', 0), ]; }