fix some bugs from zarin 3
This commit is contained in:
@@ -142,9 +142,16 @@ class ZarinController extends Controller
|
|||||||
return $nameG !== '' ? $nameG : 'مشتری نقدی (خریدار)';
|
return $nameG !== '' ? $nameG : 'مشتری نقدی (خریدار)';
|
||||||
}
|
}
|
||||||
|
|
||||||
/** آیا درخواست لیست زرین را خواسته؟ (query/body؛ مقاوم به boolean عجیب) */
|
/** آیا درخواست لیست زرین را خواسته؟ (query/body/header؛ مقاوم به QUERY_STRING خالی) */
|
||||||
private function requestWantsZarinList(Request $request): bool
|
private function requestWantsZarinList(Request $request): bool
|
||||||
{
|
{
|
||||||
|
$header = $request->header('X-Include-Zarin', $request->header('Include-Zarin'));
|
||||||
|
if ($header !== null && $header !== '') {
|
||||||
|
if (filter_var($header, FILTER_VALIDATE_BOOLEAN) || in_array($header, [1, '1', 'yes', 'on'], true)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (['include_zarin', 'include_tahesab'] as $key) {
|
foreach (['include_zarin', 'include_tahesab'] as $key) {
|
||||||
$raw = $request->query($key, $request->input($key, null));
|
$raw = $request->query($key, $request->input($key, null));
|
||||||
if ($raw === null && !$request->query->has($key) && !$request->exists($key)) {
|
if ($raw === null && !$request->query->has($key) && !$request->exists($key)) {
|
||||||
@@ -695,6 +702,17 @@ class ZarinController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function customerSyncStatus(Request $request): \Illuminate\Http\JsonResponse
|
public function customerSyncStatus(Request $request): \Illuminate\Http\JsonResponse
|
||||||
|
{
|
||||||
|
return $this->buildCustomerSyncStatus($request, $this->requestWantsZarinList($request));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** مسیر بدون query — وقتی nginx QUERY_STRING را نمیفرستد */
|
||||||
|
public function customerSyncStatusWithZarin(Request $request): \Illuminate\Http\JsonResponse
|
||||||
|
{
|
||||||
|
return $this->buildCustomerSyncStatus($request, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildCustomerSyncStatus(Request $request, bool $include): \Illuminate\Http\JsonResponse
|
||||||
{
|
{
|
||||||
$panelTotal = Customer::whereNull('deleted_at')->count();
|
$panelTotal = Customer::whereNull('deleted_at')->count();
|
||||||
$panelRegistered = Customer::whereNull('deleted_at')->whereNotNull('moshtari_code')->count();
|
$panelRegistered = Customer::whereNull('deleted_at')->whereNotNull('moshtari_code')->count();
|
||||||
@@ -719,8 +737,6 @@ class ZarinController extends Controller
|
|||||||
$zarinOnlyResult = ['data' => [], 'total' => 0, 'current_page' => 1, 'last_page' => 1];
|
$zarinOnlyResult = ['data' => [], 'total' => 0, 'current_page' => 1, 'last_page' => 1];
|
||||||
$debugSample = [];
|
$debugSample = [];
|
||||||
|
|
||||||
$include = $this->requestWantsZarinList($request);
|
|
||||||
|
|
||||||
if ($include) {
|
if ($include) {
|
||||||
$fetched = $this->fetchAllZarinCustomers();
|
$fetched = $this->fetchAllZarinCustomers();
|
||||||
$zarinCustomers = $fetched['rows'];
|
$zarinCustomers = $fetched['rows'];
|
||||||
@@ -802,7 +818,7 @@ class ZarinController extends Controller
|
|||||||
'zarin_only_list' => $zarinOnlyResult,
|
'zarin_only_list' => $zarinOnlyResult,
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($include && $request->boolean('raw')) {
|
if ($include && ($request->boolean('raw') || $request->input('raw'))) {
|
||||||
$payload['zarin_debug_sample'] = $debugSample;
|
$payload['zarin_debug_sample'] = $debugSample;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -205,7 +205,9 @@ Route::middleware('auth:user')->group(function (){
|
|||||||
Route::get('zarin/health', [ZarinController::class, 'healthCheck']);
|
Route::get('zarin/health', [ZarinController::class, 'healthCheck']);
|
||||||
Route::post('wallet/zarin', [ZarinController::class, 'wallet']);
|
Route::post('wallet/zarin', [ZarinController::class, 'wallet']);
|
||||||
Route::post('zarin/table', [ZarinController::class, 'table']);
|
Route::post('zarin/table', [ZarinController::class, 'table']);
|
||||||
Route::get('zarin/customer-sync/status', [ZarinController::class, 'customerSyncStatus']);
|
// status با query روی بعضی سرورها QUERY_STRING خالی است — مسیر جدا برای لیست زرین
|
||||||
|
Route::get('zarin/customer-sync/status-with-zarin', [ZarinController::class, 'customerSyncStatusWithZarin']);
|
||||||
|
Route::match(['get', 'post'], 'zarin/customer-sync/status', [ZarinController::class, 'customerSyncStatus']);
|
||||||
Route::post('zarin/customer-sync/panel-to-zarin', [ZarinController::class, 'syncPanelToZarin']);
|
Route::post('zarin/customer-sync/panel-to-zarin', [ZarinController::class, 'syncPanelToZarin']);
|
||||||
Route::post('zarin/customer-sync/import-from-zarin', [ZarinController::class, 'importFromZarin']);
|
Route::post('zarin/customer-sync/import-from-zarin', [ZarinController::class, 'importFromZarin']);
|
||||||
Route::post('zarin/customer-sync/rollback-import', [ZarinController::class, 'rollbackImport']);
|
Route::post('zarin/customer-sync/rollback-import', [ZarinController::class, 'rollbackImport']);
|
||||||
|
|||||||
Reference in New Issue
Block a user