Files
boursecu_server/routes/admin.php
T

358 lines
26 KiB
PHP

<?php
use App\Http\Controllers\Admin\ConstController;
use App\Http\Controllers\Admin\OrderController;
use App\Http\Controllers\Admin\PriceController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\Admin\CustomerController;
use App\Http\Controllers\Admin\MassageController;
use Illuminate\Support\Facades\Route;
use \App\Http\Controllers\Admin\WalletController;
use \App\Http\Controllers\Admin\BankAccountController;
use \App\Http\Controllers\Admin\DashboardController;
use \App\Http\Controllers\Single\SingleOrderController;
use App\Http\Controllers\Admin\PriceTriggerController as AdminPriceTriggerController;
use App\Http\Controllers\Admin\AppNotificationController as AdminAppNotificationController;
use App\Http\Controllers\Admin\AutomationController as AdminAutomationController;
use App\Http\Controllers\Finance\FinanceController;
use App\Http\Controllers\Admin\ProductController;
use App\Http\Controllers\Admin\TahesabController;
use App\Http\Controllers\Admin\ZarinController;
use App\Http\Controllers\Admin\PargarController;
use App\Http\Controllers\Admin\ShayeganController;
use App\Http\Controllers\Admin\FileController;
use App\Http\Controllers\Site\OfferCodesController;
use App\Http\Controllers\Admin\SettingsController;
use App\Http\Controllers\Admin\GoldCreditController as AdminGoldCreditController;
use \App\Http\Controllers\Admin\GiftCardController;
use App\Http\Controllers\Admin\CategoryController;
use App\Http\Controllers\Chat\SupportChatNotifyController;
use App\Http\Controllers\Admin\PriceSyncLogController;
use App\Http\Controllers\Admin\SmsPanelController;
use App\Services\ConfigService;
Route::middleware(['auth:user', 'admin.page'])->group(function (){
Route::middleware('validation')->group(function (){
Route::get('/p', [PriceController::class, 'methodPrices'])
->withoutMiddleware(['throttle:api']);
//upload file
Route::post('/file',[FileController::class, 'store']);
//settigs
Route::get('get_settings',[SettingsController::class, 'index']);
Route::post('get_settings',[SettingsController::class, 'edit']);
Route::get('settings/table',[SettingsController::class, 'localTable']);
Route::post('settings/refresh-superadmin', [SettingsController::class, 'refreshSuperAdminOverlay']);
//------------balence
Route::post('getBalance', [DashboardController::class, 'getBalance']);
//------------PriceTrigger
Route::post('price_triggers/table', [AdminPriceTriggerController::class, 'table']);
Route::post('price_triggers', [AdminPriceTriggerController::class, 'store']);
Route::put('price_triggers/{id}', [AdminPriceTriggerController::class, 'update']);
Route::put('price_triggers/{id}/toggle', [AdminPriceTriggerController::class, 'toggleActive']);
Route::delete('price_triggers/{id}', [AdminPriceTriggerController::class, 'destroy']);
//------------AppNotifications
Route::post('app_notifications/table', [AdminAppNotificationController::class, 'table']);
Route::get('app_notifications/audience-options', [AdminAppNotificationController::class, 'audienceOptions']);
Route::get('app_notifications/search-customers', [AdminAppNotificationController::class, 'searchCustomers']);
Route::post('app_notifications/preview-audience', [AdminAppNotificationController::class, 'previewAudience']);
Route::post('app_notifications', [AdminAppNotificationController::class, 'store']);
Route::put('app_notifications/{id}', [AdminAppNotificationController::class, 'update']);
Route::put('app_notifications/{id}/toggle', [AdminAppNotificationController::class, 'toggleActive']);
Route::get('app_notifications/{id}/readers', [AdminAppNotificationController::class, 'readers']);
Route::get('app_notifications/{id}/recipients', [AdminAppNotificationController::class, 'recipients']);
Route::delete('app_notifications/{id}', [AdminAppNotificationController::class, 'destroy']);
//------------Automations
Route::post('automations/table', [AdminAutomationController::class, 'table']);
Route::get('automations/catalog', [AdminAutomationController::class, 'catalog']);
Route::post('automations/preview', [AdminAutomationController::class, 'preview']);
Route::post('automations', [AdminAutomationController::class, 'store']);
Route::put('automations/{id}', [AdminAutomationController::class, 'update']);
Route::put('automations/{id}/toggle', [AdminAutomationController::class, 'toggle']);
Route::post('automations/{id}/run-now', [AdminAutomationController::class, 'runNow']);
Route::post('automations/{id}/sends/table', [AdminAutomationController::class, 'sendsTable']);
Route::delete('automations/{id}', [AdminAutomationController::class, 'destroy']);
//------------ConditionalOrder
Route::post('conditional_orders/table', [\App\Http\Controllers\Admin\ConditionalOrderController::class, 'table']);
Route::post('conditional_orders', [\App\Http\Controllers\Admin\ConditionalOrderController::class, 'store']);
Route::put('conditional_orders/{id}', [\App\Http\Controllers\Admin\ConditionalOrderController::class, 'update']);
Route::put('conditional_orders/{id}/toggle', [\App\Http\Controllers\Admin\ConditionalOrderController::class, 'toggleActive']);
Route::delete('conditional_orders/{id}', [\App\Http\Controllers\Admin\ConditionalOrderController::class, 'destroy']);
//------------Customer special price packages
Route::post('customer_special_price_packages/table', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'table']);
Route::get('customer_special_price_packages/search-customers', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'searchCustomers']);
Route::post('customer_special_price_packages/products-by-categories', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'productsByCategories']);
Route::get('customer_special_price_packages/{id}', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'show']);
Route::post('customer_special_price_packages', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'store']);
Route::put('customer_special_price_packages/{id}', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'update']);
Route::put('customer_special_price_packages/{id}/toggle', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'toggleActive']);
Route::delete('customer_special_price_packages/{id}', [\App\Http\Controllers\Admin\CustomerSpecialPricePackageController::class, 'destroy']);
//-----------product
Route::post('/product/table', [ProductController::class, 'tableProduct']);
Route::post('/product/archive/table', [ProductController::class, 'archiveTable']);
Route::get('/product/archive/{id}', [ProductController::class, 'archive']);
Route::get('/product/active/{id}',[ProductController::class, 'active']);
Route::get('/product/show_on_tv/{id}',[ProductController::class, 'showOnTv']);
Route::get('/product/hide/{id}',[ProductController::class, 'hide']);
Route::get('/product/credit',[ProductController::class, 'listProductCredit']);
Route::get('/product/list',[ProductController::class, 'listProduct']);
Route::get('/product/open_sell/{id}',[ProductController::class, 'openSell']);
Route::get('/product/open_buy/{id}',[ProductController::class, 'openBuy']);
Route::get('/product/auto_sell/{id}',[ProductController::class, 'auto_sell']);
Route::get('/product/auto_buy/{id}',[ProductController::class, 'auto_buy']);
Route::get('/product/auto/{method}/{action}',[ProductController::class, 'auto_group']);
Route::prefix('products/quick')->group(function () {
Route::get('activation-snapshot', [ProductController::class, 'activationSnapshotStatus']);
Route::post('deactivate-all', [ProductController::class, 'deactivateAllProducts']);
Route::post('restore-activation', [ProductController::class, 'restoreActivationSnapshot']);
Route::post('close-buy', [ProductController::class, 'closeAllBuy']);
Route::post('close-sell', [ProductController::class, 'closeAllSell']);
Route::post('sync-show', [ProductController::class, 'syncProductShow']);
});
Route::get('/getProduct/{id}',[ProductController::class, 'getProduct']);
Route::put('/products',[ProductController::class, 'editProducts']);
Route::delete('/product/{id}', [ProductController::class, 'destroy']);
Route::resource('/product',ProductController::class)->except(['destroy']);
//--------const
Route::get('/const/key/{key}',[ConstController::class, 'showValue']);
Route::post('/const/table',[ConstController::class, 'table']);
Route::resource('/const',ConstController::class);
//--------user
Route::get('/me',[UserController::class,'me']);
Route::get('/user/type/{user_type}',[UserController::class,'getByUserType']);
Route::post('/me/update',[UserController::class,'updateMe']);
Route::post('/user/table',[UserController::class,'table']);
Route::get('/user/list',[UserController::class,'listUser']);
Route::resource('/user',UserController::class);
//--------customer
Route::post('/customer/table',[CustomerController::class,'tableWallets']);
Route::get('/customer/online',[CustomerController::class,'onlineList']);
Route::get('/customer/chat-presence',[CustomerController::class,'chatPresence']);
Route::post('/chat/focus', [SupportChatNotifyController::class, 'focus']);
Route::post('/chat/unfocus', [SupportChatNotifyController::class, 'unfocus']);
Route::post('/chat/ensure-webhook', [SupportChatNotifyController::class, 'ensureWebhook']);
Route::get('/customer/{id}/assets',[CustomerController::class,'assetsSummary']);
Route::get('/customer/active/{id}',[CustomerController::class,'active']);
Route::get('/customer/archive/{id}',[CustomerController::class,'archive']);
Route::get('/customer/trade/{id}',[CustomerController::class,'changeTradeActive']);
Route::get('/customer/conditional_order/{id}',[CustomerController::class,'changeConditionalOrderActive']);
Route::put('/customer/conditional_order_limit/{id}',[CustomerController::class,'updateConditionalOrderLimit']);
Route::post('/customer/archive/table',[CustomerController::class,'archiveTable']);
Route::get('/customer/is_valid/{id}',[CustomerController::class,'MakeValidByAdmin']);
Route::get('/customer/list',[CustomerController::class,'listUser']);
Route::post('/customers/{customer_id}/referrals',[CustomerController::class,'referrals']);
Route::post('/customers/{customer_id}/funds',[CustomerController::class,'funds']);
Route::post('/customers/{customer_id}/piggy-funds',[CustomerController::class,'piggyFunds']);
Route::post('/customers/{customer_id}/assets/{product_id}/piggy-funds',[CustomerController::class,'assetPiggyFunds']);
Route::post('/customers/{customer_id}/assets/{product_id}/transactions',[CustomerController::class,'assetTransactions']);
Route::post('/customers/{customer_id}/piggy-funds/{fund_id}/transactions',[CustomerController::class,'piggyFundTransactions']);
Route::put('/customer/{id}',[CustomerController::class,'updateAdmin']);
Route::resource('/customer', CustomerController::class)->except(['update']);
//------massages
Route::post('messages/table', [MassageController::class, 'messagesTable']);
Route::get('messages/functions', [MassageController::class, 'getFunctionDescriptions']);
Route::post('messages/get_customer_list', [MassageController::class, 'getCustomerList']);
Route::post('messages/get_customer_list/table', [MassageController::class, 'getCustomerListTable']);
Route::post('messages/send_message', [MassageController::class, 'send_message']);
Route::post('messages/send_customer', [MassageController::class, 'send_customer_message']);
Route::resource('messages', MassageController::class);
//------------single customer
Route::post('/customer/single/table',[CustomerController::class,'singleCustomerTable']);
Route::post('/customer/single/archive/table',[CustomerController::class,'singleArchiveTable']);
//-------------wallet
Route::post('/wallet/charge',[WalletController::class,'charge']);
Route::post('/wallet/charge_gold',[WalletController::class,'charge_gold']);
//-------------gold credit
Route::post('/gold_credit/preview', [AdminGoldCreditController::class, 'preview']);
Route::post('/gold_credit/table', [AdminGoldCreditController::class, 'table']);
Route::post('/gold_credit/requests/table', [AdminGoldCreditController::class, 'requestsTable']);
Route::post('/gold_credit/installments/pay', [AdminGoldCreditController::class, 'payInstallments']);
Route::post('/gold_credit/requests/{id}/approve', [AdminGoldCreditController::class, 'approveRequest']);
Route::post('/gold_credit/requests/{id}/reject', [AdminGoldCreditController::class, 'rejectRequest']);
Route::post('/customers/{id}/gold_credit/installments', [AdminGoldCreditController::class, 'customerInstallments']);
Route::put('/gold_credit/{id}', [AdminGoldCreditController::class, 'update']);
Route::post('/gold_credit', [AdminGoldCreditController::class, 'store']);
Route::post('/wallet/charge_wallet',[WalletController::class,'charge_wallet']);
Route::get('/wallet/charge-targets',[WalletController::class,'chargeTargets']);
Route::post('/wallet/table',[WalletController::class,'indexWallet']);
Route::post('/wallet/transaction/table',[WalletController::class,'index']);
Route::post('/wallet/transaction/update',[WalletController::class,'updateTransaction']);
Route::post('/wallet/withdraw/table',[WalletController::class,'indexWithdraw']);
Route::post('/wallet/withdraw/report',[WalletController::class,'exportWithdrawReport']);
Route::put('/wallet/withdraw/{id}',[WalletController::class,'updateWithdraw']);
Route::get('/wallet/withdraw/{id}',[WalletController::class,'getWithdraw']);
Route::post('/wallet/withdraw/complete',[WalletController::class,'completeWithdraw']);
Route::post('/wallet/withdraw_physical/table',[WalletController::class,'indexPhysicalWithdraw']);
Route::get('/wallet/withdraw_physical/options/{customerId}',[WalletController::class,'physicalWithdrawOptions']);
Route::post('/wallet/withdraw_physical',[WalletController::class,'createPhysicalWithdraw']);
Route::get('/wallet/withdraw_physical/{id}/adjust-info',[WalletController::class,'physicalWithdrawAdjustInfo']);
Route::post('/wallet/withdraw_physical/{id}/adjust',[WalletController::class,'adjustPhysicalWithdraw']);
//---------------order
Route::post('order/table', [OrderController::class, 'table']);
Route::post('order/single/table', [OrderController::class, 'singleOrderTable']);
Route::post('order/colleague/table', [OrderController::class, 'colleagueTable']);
Route::post('single/order', [SingleOrderController::class, 'store']);
//-------------------price
Route::post('price', [PriceController::class, 'store']);
Route::post('price/table', [PriceController::class, 'table']);
Route::post('prices', [PriceController::class, 'priceData']);
Route::post('prices/chart', [PriceController::class, 'chartPrices']);
Route::post('price-sync-logs/table', [PriceSyncLogController::class, 'table']);
Route::get('price-sync-logs/{id}', [PriceSyncLogController::class, 'show']);
Route::post('price-sync/run', [PriceSyncLogController::class, 'runSync']);
Route::get('zaarbox/products', [PriceController::class, 'zaarboxProducts']);
Route::get('montzar/products', [PriceController::class, 'montzarProducts']);
Route::post('finance', [FinanceController::class, 'fall']);
//dashboard
Route::post('dashboard/finance', [DashboardController::class, 'finance']);
Route::get('dashboard', [DashboardController::class, 'dashboardMaster']);
Route::post('dashboard', [DashboardController::class, 'dashboardMaster']);
Route::post('gateway', [DashboardController::class, 'gateway']);
Route::post('dashboard/customer/all_sell', [DashboardController::class, 'sumSellToCustomerMajor']);
Route::post('dashboard/customer/single/all_sell', [DashboardController::class, 'sumSellToCustomerSingle']);
Route::post('dashboard/customer/flow', [DashboardController::class, 'flow']);
Route::post('dashboard/customer/order-peak-hours', [DashboardController::class, 'orderPeakHours']);
// سند تبدیل سود ریالی به طلا
Route::post('dashboard/profit-conversions', [DashboardController::class, 'profitConversions']);
Route::post('dashboard/profit-conversions/store', [DashboardController::class, 'storeProfitConversion']);
Route::delete('dashboard/profit-conversions/{id}', [DashboardController::class, 'deleteProfitConversion']);
Route::post('dashboard/montzar-reconcile', [DashboardController::class, 'montzarReconcile']);
//bank account
Route::post('account/table', [BankAccountController::class, 'table']);
Route::get('account/{id}', [BankAccountController::class, 'show']);
Route::post('account/sts', [BankAccountController::class, 'changeSts']);
Route::delete('account/{id}', [BankAccountController::class, 'destroy']);
Route::post('wallet/tahesab', [TahesabController::class, 'wallet']);
Route::post('tahesab/table', [TahesabController::class, 'table']);
Route::get('tahesab/pending-summary', [TahesabController::class, 'pendingSummary']);
Route::get('tahesab/pending-docs', [TahesabController::class, 'pendingDocs']);
Route::post('tahesab/sync-one', [TahesabController::class, 'syncOne']);
Route::post('tahesab/sync-all-pending', [TahesabController::class, 'syncAllPending']);
Route::post('tahesab/doc-sync/start', [TahesabController::class, 'startDocSync']);
Route::post('tahesab/doc-sync/stop', [TahesabController::class, 'stopDocSync']);
Route::post('tahesab/doc-sync/reset-local', [TahesabController::class, 'resetLocalDocSync']);
Route::post('tahesab/customer-sync/outbound/start', [TahesabController::class, 'startCustomerOutbound']);
Route::post('tahesab/customer-sync/inbound/start', [TahesabController::class, 'startCustomerInbound']);
Route::get('tahesab/customer-sync/status', [TahesabController::class, 'customerSyncStatus']);
Route::post('tahesab/customer-sync/panel-to-tahesab', [TahesabController::class, 'syncPanelToTahesab']);
Route::post('tahesab/customer-sync/import-from-tahesab', [TahesabController::class, 'importFromTahesab']);
Route::post('tahesab/customer-sync/link-by-phone', [TahesabController::class, 'linkMatchingPhones']);
Route::post('tahesab/customer-sync/rollback-import', [TahesabController::class, 'rollbackImport']);
Route::post('tahesab/mande-by-codes', [TahesabController::class, 'mandeByCodes']);
Route::post('tahesab/wallet-sync/all', [TahesabController::class, 'syncAllWallets']);
Route::get('tahesab/wallet-sync/list', [TahesabController::class, 'walletLinkedList']);
Route::get('tahesab/{id}', [TahesabController::class, 'show']);
Route::post('tahesab/{id}/retry', [TahesabController::class, 'retrySanad']);
Route::post('customer/{id}/tahesab/register', [TahesabController::class, 'registerCustomer']);
Route::post('customer/{id}/tahesab/sync-wallet', [TahesabController::class, 'syncCustomerWallet']);
Route::post('customer/{id}/tahesab/preview-wallet', [TahesabController::class, 'previewCustomerWallet']);
Route::get('zarin/health', [ZarinController::class, 'healthCheck']);
Route::post('wallet/zarin', [ZarinController::class, 'wallet']);
Route::post('zarin/table', [ZarinController::class, 'table']);
Route::get('zarin/pending-summary', [ZarinController::class, 'pendingSummary']);
Route::get('zarin/pending-docs', [ZarinController::class, 'pendingDocs']);
Route::post('zarin/sync-one', [ZarinController::class, 'syncOne']);
Route::post('zarin/sync-all-pending', [ZarinController::class, 'syncAllPending']);
// 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/import-from-zarin', [ZarinController::class, 'importFromZarin']);
Route::post('zarin/customer-sync/link-by-phone', [ZarinController::class, 'linkMatchingPhones']);
Route::post('zarin/customer-sync/rollback-import', [ZarinController::class, 'rollbackImport']);
Route::post('zarin/wallet-sync/all', [ZarinController::class, 'syncAllWallets']);
Route::get('zarin/{id}', [ZarinController::class, 'show']);
Route::post('zarin/{id}/retry', [ZarinController::class, 'retrySanad']);
Route::post('customer/{id}/zarin/register', [ZarinController::class, 'registerCustomer']);
Route::post('customer/{id}/zarin/sync-wallet', [ZarinController::class, 'syncCustomerWallet']);
Route::post('customer/{id}/zarin/preview-wallet', [ZarinController::class, 'previewCustomerWallet']);
Route::get('shayegan/health', [ShayeganController::class, 'healthCheck']);
Route::post('shayegan/table', [ShayeganController::class, 'table']);
Route::get('shayegan/{id}', [ShayeganController::class, 'show']);
Route::post('shayegan/{id}/retry', [ShayeganController::class, 'retrySanad']);
Route::post('pargar/table', [PargarController::class, 'table']);
Route::get('pargar/customer-sync/status', [PargarController::class, 'customerSyncStatus']);
Route::get('pargar/stuck-outbound', [PargarController::class, 'stuckOutbound']);
Route::post('pargar/customer-sync/panel-to-pargar', [PargarController::class, 'syncPanelToPargar']);
Route::post('pargar/customer-sync/import-from-pargar', [PargarController::class, 'importFromPargar']);
Route::post('pargar/customer-sync/rollback-import', [PargarController::class, 'rollbackImport']);
Route::post('pargar/wallet-sync/all', [PargarController::class, 'syncAllWallets']);
Route::get('pargar/{id}', [PargarController::class, 'show']);
Route::post('pargar/{id}/retry', [PargarController::class, 'retrySanad']);
Route::post('customer/{id}/pargar/register', [PargarController::class, 'registerCustomer']);
Route::post('customer/{id}/pargar/sync-wallet', [PargarController::class, 'syncCustomerWallet']);
Route::get('test', function () {
$data = [
"value" => 2000,
"customer_id" => 466,
"note" => "test",
"direction" => "0"
];
app(TahesabController::class)->wallet($data);
return "OK";
}
);
//Offer codes
Route::post('/offer_code/table',[OfferCodesController::class, 'table']);
Route::post('/offer_code/create',[OfferCodesController::class, 'store']);
Route::resource('/offer_code',OfferCodesController::class);
//check card
Route::post('/check_card',[CustomerController::class, 'cardChecker']);
//Giftcard
Route::post('giftcard/generate/', [GiftCardController::class, 'redeem']);
Route::post('giftcard/table/', [GiftCardController::class, 'table']);
Route::put('giftcard/{id}', [GiftCardController::class, 'update']);
Route::delete('giftcard/{id}', [GiftCardController::class, 'destroy']);
Route::get('categories', [CategoryController::class, 'index']);
Route::post('categories', [CategoryController::class, 'store']);
Route::post('categories/sync-from-products', [CategoryController::class, 'syncFromProducts']);
Route::put('categories/{id}', [CategoryController::class, 'update']);
Route::get('categories/{id}/active/{active}', [CategoryController::class, 'changeActive']);
// خلاصه کیف پول پیامک برای همه ادمین‌ها (نمایش «اعتبار پیامک» در هدر)
Route::get('sms-wallet/summary', [SmsPanelController::class, 'walletSummary']);
Route::middleware('sms.panel.super')->prefix('sms-panel')->group(function () {
Route::get('overview', [SmsPanelController::class, 'overview']);
Route::post('charge', [SmsPanelController::class, 'charge']);
Route::put('price', [SmsPanelController::class, 'updatePrice']);
Route::put('block', [SmsPanelController::class, 'updateBlock']);
Route::put('deposit-info', [SmsPanelController::class, 'updateDepositInfo']);
Route::post('logs/table', [SmsPanelController::class, 'logsTable']);
Route::post('ledger/table', [SmsPanelController::class, 'ledgerTable']);
Route::get('report', [SmsPanelController::class, 'report']);
Route::get('report/charges', [SmsPanelController::class, 'chargeReport']);
});
});
});