feat: add store_id conditions (#43)

This commit is contained in:
2026-01-05 01:14:53 +03:00
committed by GitHub
parent 0312b882e1
commit 84641868e9
5 changed files with 40 additions and 3 deletions

View File

@@ -0,0 +1,16 @@
<?php
use Openguru\OpenCartFramework\Migrations\Migration;
return new class extends Migration {
public function up(): void
{
$sql = <<<SQL
ALTER TABLE `telecart_customers`
ADD COLUMN `store_id` INT NOT NULL DEFAULT 0 AFTER `oc_customer_id`
SQL;
$this->database->statement($sql);
}
};

View File

@@ -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')

View File

@@ -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);

View File

@@ -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');
})

View File

@@ -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),
];
}