feat: add store_id conditions (#43)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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');
|
||||
})
|
||||
|
||||
@@ -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),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user