Files
boursecu_server/routes/pargar.php
T
2026-06-11 22:08:47 +03:30

344 lines
13 KiB
PHP

<?php
use App\Http\Controllers\Admin\FinDocController as AdminFinController;
use App\Http\Controllers\Admin\FinDocTallaController;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\OrderController as AdminOrderController;
//-----------------------------------------------------------------------------
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use App\Models\Webhook;
use App\Models\Customer;
use App\Models\Order ;
use App\Models\Pargar ;
use App\Models\PargarDoc ;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Telegram\Bot\Api;
use Morilog\Jalali\Jalalian;
use Rooyesh\Wallet\interfaces\TransactionInterface;
use Rooyesh\Wallet\interfaces\WalletInterface;
function finalizeProcessing() {
Pargar::latest('id')->take(100)->get()->each(function ($item) {
if (is_string($item->finance_data)) {
$decoded = json_decode($item->finance_data, true);
if (json_last_error() === JSON_ERROR_NONE) {
$item->finance_data = $decoded; // Laravel will re-encode correctly
$item->save();
}
}
});
$pars = Pargar::latest('id')->take(100)
->select(['id','finance_data','m'])
->get();
// foreach ($pars as $par) {
// if (!empty($par->finance_data['Customers'])) {
// $par->m = 'CUSTOMER';
// $par->save();
// $cu = Customer::where("pargar_id", $par->finance_data['Customers'][0]['AccountId'])->first();
// if (!($cu)) {
// $cu = new Customer();
// $cu->agent_id = 3137;
// $cu->type = 2;
// }
// $cu->pargar_id = $par->finance_data['Customers'][0]['AccountId'];
// $cu->tahesab_id = $par->finance_data['Customers'][0]['AccountId'];
// $cu->lname = $par->finance_data['Customers'][0]['FullName'];
// $cu->name = $par->finance_data['Customers'][0]['FullName'];
// $cu->mobile = $par->finance_data['Customers'][0]['CellPhone'];
// $cu->save();
// }
// if (!empty($par->finance_data['accountName']) && !empty($par->finance_data['accountId']) && !empty($par->finance_data['transactions'])) {
// $par->m = 'trans';
// $par->save();
// $cu = Customer::where("pargar_id", $par->finance_data['accountId'])->first();
// if (!($cu)) {
// $cu = new Customer();
// $cu->agent_id = 3137;
// $cu->type = 2;
// }
// $accountId = $par->finance_data['accountId'];
// foreach ($par->finance_data['transactions'] as $transaction) {
// $docId = $transaction['docId'];
// // Check if docId already exists
// if (PargarDoc::where('docId', $docId)->exists()) {
// continue; // Skip duplicates
// }
//
// // Save new transaction
// PargarDoc::create([
// 'docId' => $docId,
// 'date' => $transaction['date'],
// 'docType' => $transaction['docType'],
// 'desc' => $transaction['desc'],
// 'goldState' => $transaction['goldState'],
// 'rialState' => $transaction['rialState'],
// 'bedGold' => $transaction['bedGold'],
// 'besGold' => $transaction['besGold'],
// 'bedRial' => $transaction['bedRial'],
// 'besRial' => $transaction['besRial'],
// 'remainGold' => $transaction['remainGold'],
// 'remainRial' => $transaction['remainRial'],
// 'accountId' => $accountId,
// ]);
// }
// $cu->name = $par->finance_data['accountName'];
// $cu->fname = $par->finance_data['accountName'];
//
// $cu->finance_data = ($par->finance_data['transactions']);;
// $cu->mobile = $par->finance_data['accountId'];
// $cu->pargar_id = $par->finance_data['accountId'];
// $cu->tahesab_id = $par->finance_data['accountId'];
// $cu->save();
// }
// if (!empty($par->finance_data['GoldInv']) && !empty($par->finance_data['RialInv'])) {
// $par->m = 'MANDEH';
// $par->save();
// $cu = Customer::where("pargar_id", $par->finance_data['AccountId'])->first();
// if (!($cu)) {
// $par->m = 'MANDEHnoC';
// $par->save();
// continue;
//// $cu = new Customer();
// }
// $cu->pargar_id = $par->finance_data['AccountId'];
// $cu->tahesab_id = $par->finance_data['AccountId'];
// $cu->gold_balance = $par->finance_data['GoldInv'];
// $cu->rial_balance = $par->finance_data['RialInv'];
// $cu->save();
// }
// }
}
Route::post('/login', function (Request $request) {
/*
* accounting@09131523432.com
hJNFTV
*/
if ($request->password !== 'mont' && $request->password !== 'Abc123' ) {
return response()->json([
'success' => false,
'data' => [],
'message' => 'Invalid credentials!'
]);
}
finalizeProcessing();
return response()->json([
'success' => true,
'data' => ['token' => base64_encode(Str::random(40))],
'data' => ['token' => 'wQ12e245d5%rdpb78oBh31Aos*bIdQemiUeeq9e9G!oey23SMXp40Ew2fodjx9J5buKNW0M4@nYMr1PR6d0KtuqhLQlx*K$'],
'message' => 'You are logged in successfully.'
]);
});
Route::post('/customers', function (Request $request) {
$data = $request->all();
if (!empty($data['Customers'])) {
$cu = Customer::where("finance_code", $data['Customers'][0]['AccountId'])->first();
$message ="با موفقیت ویرایش شد.";
if (!($cu)) {
$cu = new Customer();
$cu->finance_code = 3137;
$cu->referral_to_id = 'ghatre';
$message ="با موفقیت ایجاد شد.";
}
do {
$referral = substr(str_shuffle('0123456789abcdefghijklmnopqrstuvwxyz'), 0, 4);
} while (Customer::where('referral_id', $referral)->exists());
$data['referral_id'] = $referral;
do {
$vcn = $this->Config('default_vc_number') . rand(10, 99) . '-' . rand(1000, 9999) . '-' . rand(1000, 9999);
} while (Customer::where('virtual_card_number', $vcn)->exists());
$data['virtual_card_number'] = $vcn;
$cu->lname = $data['Customers'][0]['FullName'];
$cu->name = $data['Customers'][0]['FullName'];
$cu->mobile = $data['Customers'][0]['CellPhone'];
$cu->save();
}
return response()->json([
'state' => 'true',
'msg' =>$cu->finance_code.":" . $cu->name.$message,
'result' => 'OK'
]);
});
Route::get('/GetCustomers', function (Request $request) {
$customers = Customer::/*where('finance_is_saved', 0)->*/whereNull('finance_code')
->limit(100)
->get(['id', 'fname as name', 'lname as family', 'mobile']);
return response()->json([
'state' => 'true',
'data' => $customers,
'msg' =>'1',
'result' => 'OK'
]);
});
Route::post('/CustomerConfirm', function (Request $request) {
$customers = $request->input('customers', []);
foreach ($customers as $customer) {
$customerRecord = Customer::find($customer['customer_id']);
if ($customerRecord) {
$customerRecord->finance_code = (int)($customer['accounting_id'] ?? 0);
$customerRecord->save();
}
}
return response()->json([
'state' => 'true',
'data' => $customers,
'msg' =>'1',
'result' => 'OK'
]);
});
Route::post('/orders', function (Request $request) {
$OrderIds = $request->input('OrderIds', []);
try {
foreach ($OrderIds as $orderId) {
Order::where('id', $orderId)->update(['finance_code' => $orderId]);
}
}catch (\Exception $e){
return $e->getMessage();
}
return response()->json([
'state' => true,
'msg' => 'ذخیره شد',
'result' => 'OK',
'duplicated' => [],
'documents' => []
]);
});
Route::get( '/orders', function (Request $request) {
$data = $request->all();
$orders = Order::where('sts', 2)->whereNull('finance_code')->limit(100)->get();
$orders_new = $orders->map(function ($order) {
$customer = Customer::find((int)($order->customer_id ?? 0));
return [
'OrderId' => (string)$order->id,
'OrderType' => $order->direction == 1 ? 0 : 1,
'PriceType' => 1,
'CustomerAccountId' => $customer->finance_code ?? 4,
'ItemId' => 11,
'itemName' => 'ابشده',
'OrderDate' => $order->orders
? Jalalian::fromCarbon($order->orders)->format('Y/m/d-H:i:s')
: Jalalian::fromCarbon($order->created_at)->format('Y/m/d-H:i:s'),
'Fee' => $order->price ?? 0,
'Count' => 0,
'Weight' => $order->amount ?? 0,
'Price' => $order->total_price,
'Carat' => 750,
'Description' => $order->description ?? '',
];
});
return response()->json([
'state' => 'true',
'msg' => '',
'data' => ($orders_new),
'result' => 'OK',
'duplicated' => [],
'documents' => []
]);
});
Route::post('/pdf', function (Request $request) {
$data = $request->all();
$head = $request->headers->all();
$Pargar = new Pargar();
$Pargar->ip = $request->ip(); // Gets the client IP address
$Pargar->m = 'pdf'; // Gets the client IP address
$Pargar->finance_data = json_encode($data); // Storing request data as JSON
$Pargar->finance_head = json_encode($head); // Storing headers as JSON
$Pargar->save(); // Don't forget to save the model
Log::info('📋 هدرهای پیدی اف :', $request->headers->all());
// 📦 لاگ بدنه‌ی درخواست (Body)
$data = $request->all();
Log::info('📦 محتوای درخواست ( پیدی اف ):', $data);
$key = 'wQ12e245d5%rdpb78oBh31Aos*bIdQemiUeeq9e9G!oey23SMXp40Ew2fodjx9J5buKNW0M4@nYMr1PR6d0KtuqhLQlx*K$';
$auth = $request->header('pargar') ?? $request->header('Authorization');
if ($auth !== $key && $auth !== 'Bearer ' . $key) {
return response()->json(['auth needed'], 401);
}
finalizeProcessing();
return response()->json([
'state' => 'true',
'msg' => 'PDF uploaded successfully',
// 'data' => ['fileName' => $fileName],
'result' => 'OK'
]);
});
Route::post('/mande', function (Request $request) {
$data = $request->all();
if (!$cu = Customer::where("finance_code",$data['AccountId'])->first()) {
}
if ( $wallet = $cu->wallet->where('fund_id', null)->first()){
$goldInv = isset($data['GoldInv']) ? ((float)str_replace('/', '.', $data['GoldInv'])) : 0;
$RialInv = isset($data['RialInv']) ? ((float)str_replace('/', '.', $data['RialInv'])) : 0;
$goldDiff = $goldInv - $wallet->gold ;
$rialInvDiff = $RialInv - $wallet->cash ;
}else{
$goldDiff = isset($data['GoldInv']) ? ((float)str_replace('/', '.', $data['GoldInv'])) : 0;
$rialInvDiff = isset($data['RialInv']) ? ((float)str_replace('/', '.', $data['RialInv'])) : 0;
}
if (abs($goldDiff) >= 0.01 || abs($rialInvDiff) >= 1) {
$wallet_interface = new WalletInterface($cu->id, 2);
new TransactionInterface($wallet_interface, [
"cash" => $rialInvDiff,
"gold" =>$goldDiff,
'expire_at' => now(),
'active' => true,
'start_at' => now(),
], 22,$goldDiff> 0, $rialInvDiff > 0);
}
$cu->gold_balance = $data['GoldInv'];
$cu->rial_balance = $data['RialInv'];
$cu->save();
return response()->json([
'state' => 'true',
'msg' => "با موفقیت دریافت شد",
'data' => null,
'dataWeb' => $cu->id ?? 0,
'result' => 'OK',
'duplicated' => [],
'documents' => []
]);
});
Route::post('/documents', function (Request $request) {
return response()->json([
'state' => true,
'msg' => "با موفقیت دریافت شد",
'data' => null,
'result' => 'OK',
]);
});
Route::any('{any}', function (Request $request) {
// finalizeProcessing();
return response()->json([
'state' => false,
'msg' => "not found",
]);
})->where('any', '.*');