• File: api.php
  • Full Path: /var/www/imaliapi/routes/api.php
  • Date Modified: 12/17/2025 11:48 PM
  • File size: 77.16 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

use App\Bank\Payment;
use App\Classes\GenerateImaliAccount;
use App\Classes\SendSMSSislog;
use App\Classes\TransactionGeneration;
use App\DayCloseStore;
use App\Exports\CreditSolicitation;
use App\Exports\CreditSolicitationPdf;
use App\Exports\SubAccountExport;
use App\Exports\SubAccountExportSchool;
use App\Http\Controllers\Partner\BimController;
use App\Http\Controllers\ServiceConfigAccountController;
use App\Http\Controllers\ServiceConfigController;
use App\Http\Controllers\SmsController;
use App\Http\Controllers\TypeServiceController;
use App\Imali\ImaliAccount;
use App\Imali\MerchantAccount;
use App\PurchaseVoucher;
use App\Store;
use App\StoreConfig;
use App\StoreDevice;
use Illuminate\Http\Request;
use \Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\TopUpTestController;
use App\Http\Controllers\TopUpController;
use App\Http\Controllers\Api\AdminController;
use App\Http\Controllers\Api\Auth\LoginController;
use App\Http\Controllers\ATSourceController;
use App\Http\Controllers\BusinessController;
use App\Http\Controllers\BusinessLoginController;
use App\Http\Controllers\StoreController;
use App\Http\Controllers\LogController;
use App\Http\Controllers\CloseController;
use App\Http\Controllers\PaymentController;
use App\Http\Controllers\UserClientController;
use App\Http\Controllers\ComercianteController;
use App\Http\Controllers\MerchantController;
use App\Http\Controllers\DashboardTopUp;
use App\Http\Controllers\TransactionHistoryController;
use App\Http\Controllers\StoreDeviceController;
use App\Http\Controllers\RefundController;
use App\Http\Controllers\StoreConfigController;
use App\Http\Controllers\StatistiController;
use App\Http\Controllers\SubAccountControlller;
use App\Http\Controllers\ThirdPartController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\UssdController;
use App\Http\Controllers\VoucherHistoryController;
use Illuminate\Support\Facades\Route;


Route::get('top-up-dashboard', [DashboardTopUp::class, 'getDashboard']);
Route::get('get-transaction-histories/{accountNumber}/{date1}/{date2}', [TransactionHistoryController::class, 'getExtrato']);


Route::get('user-extrato', [PaymentController::class, 'getExtrato']);

Route::get('get-report', [StatistiController::class, 'getWeekReport']);

Route::post('send-sms', [SmsController::class, 'sendSms']);


// USSD
Route::prefix('ussd')->group(function () {

    Route::get('balance/{phone}', 'UserController@getBalance');
    Route::get('check-phone/{phone}', 'Sislog\UssdController@checkPhone');
    Route::get('check-imali-account/{account_number}/{phone}', 'Sislog\UssdController@checkImaliAccount');
    Route::get('get-store-transactions/{phone}', [UssdController::class, 'getTransactions']);
});


Route::get('fcm', 'FcmController@sendNotification');

// USER CLIENT SESSION
//Route::post('save-token', 'UserClientController@saveToken');
Route::post('save-token', [UserClientController::class, 'saveToken']);
Route::post('save-client-integrator', [UserClientController::class, 'saveClientIntegrator']);
//Route::post('save-client-integrator', 'UserClientController@saveClientIntegrator');
Route::get('get-clients', 'UserClientController@getClients');
// AND USER CLIENT TEST

Route::get('get-pedido/{id}/{client_id}', 'MoneyRequestController@getPedido');
Route::get('get-client-test', 'TopUpTestController@getDstvProducts');
Route::get('check-client-start-test/{smartCard}', [TopUpTestController::class, 'checkClientStartTimes']);
Route::post('pay-startimes-test', [TopUpTestController::class, 'payStartTimesPackage']);



// GET-TRANSACTION
Route::get('check-transaction/{id}', [UserClientController::class, 'checkTransactionStatus']);
Route::get('get-lang', [UserClientController::class, 'getLang'])->middleware('localization');

Route::middleware(['auth:sanctum', 'localization'])->prefix('apps')->group(function () {

    //    Route::get('make-recharge', 'Partner\BimController@makeRecharge');
    Route::post('make-recharge', [BimController::class, 'makeRecharge']);

    Route::get('check-reference', 'Partner\BimController@verificarEntidadeReferencia');
});

Route::middleware('localization')->prefix('partner')->group(function () {
    Route::get('check-doc-reference', [UserClientController::class, 'checkReference']);
    Route::get('payment-doc-register', [UserClientController::class, 'paymentRegister']);
});



//@Source Methods
Route::middleware(['auth:sanctum', 'localization'])->prefix('partner')->group(function () {
    Route::get('validate-imali-account', [ATSourceController::class, 'validateImaliAccount']);
    Route::get('check-balance/{account_number}', [ATSourceController::class, 'checkImaliSubAccounBalance']);
    Route::get('get-account-transactions/{account_number}', [ATSourceController::class, 'getSubAccountPayments']);

    // Union Bank Methods
    Route::post('account-deposit', [ATSourceController::class, 'accountDeposit']);
    Route::get('check-client', [ATSourceController::class, 'checkClient']);
});


// Metodos SIMO
Route::post('validate-payment', [UserClientController::class, 'validatePayment']);
Route::post('notify-payment', [UserClientController::class, 'notifyPayment']);


Route::middleware(['auth:sanctum', 'localization'])->prefix('partner')->group(function () {

    // GET-TRANSACTION
    Route::get('get-transaction/{id}', [UserClientController::class, 'getTransaction']);

    // GET-TRANSACTION
    Route::get('check-transaction/{id}', [UserClientController::class, 'checkTransactionStatus']);

    // GENERATE TRANSACTION
    Route::post('generate-transaction', [UserClientController::class, 'Qrcode']); // funciona

    // GET STATIC QRCODE
    Route::get('get-qrcode/{accountNumber}', [UserClientController::class, 'getStoreQrcode']); // funciona

    // GENERATE PAYMENT
    Route::post('generate-payment', [UserClientController::class, 'generatePayment']); // funciona

    // CONFIRM PAYMENT
    Route::post('confirm-payment', [UserClientController::class, 'makePayment']); // funciona


    // GENERATE PAYMENT PUSH
    // Route::post('generate-payment-push', [UserClientController::class, 'generatePaymentPush']); // funciona
    Route::post('generate-payment-push', [ThirdPartController::class, 'generatePushPaymentNew']); // funciona



    // get Store Payments REFUBNDD
    Route::get('get-store-payments-refunds/{accountNumber}', [UserClientController::class, 'getRefunds']);


    // get Store Payments by Dates
    Route::get('get-store-payments/{date1}/{date2}', [MerchantController::class, 'getPaymentsWithDate']);


    // REFUND CUSTOMER
    Route::post('refund-customer', [UserClientController::class, 'refundCustomerNew']);
    Route::post('refund-confirmation', [UserClientController::class, 'confirmRefund']);

    // get Store Payments
    Route::get('get-store-payments/{accountNumber}', [UserClientController::class, 'getStorePayments']);

    // get Generated Payments
    Route::get('get-generated-payments/{accountNumber}', [UserClientController::class, 'getGeneratedPayments']);

    // Rotas das Subcontas iMali - NFC
    //Route::get('check-card-balance/{card_number}', [UserClientController::class, 'checkCardBalance']);
    //Route::post('make-payment-refund', [UserClientController::class, 'makePaymentRefund']);
    //Route::post('mine-transaction-store-2024', [PaymentController::class, 'makePaymentStoreApp2024']);
    Route::middleware('localization')->post('make-payment-card', [PaymentController::class, 'makePaymentStoreApp2024SubAccounts']);
    Route::get('check-card-balance/{card_number}', [UserClientController::class, 'checkCardBalance']);
    Route::post('make-payment-refund', [UserClientController::class, 'makePaymentRefund']);

    // NOVA ROTA PARA INTEGRADORES
    Route::middleware('localization')->post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);



    // iMali GateWay Payments - POS e APP Web
    Route::post('imaliway/v2/{payment_method}/{payment_type}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::get('imaliway/v2/{payment_type}/payments/{partner_transation_id}/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
});


// NOVA ROTA... os integradores e Lojas

// Route::middleware('localization')->post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
// Route::middleware('localization')->get('imaliway/v2/payments/status/{partner_transation_id}', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
// Route::middleware('localization')->get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
// Route::middleware('localization')->post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);


Route::middleware('localization')->post('imaliway/v2/{payment_method}/{payment_type}/payments/{transation_id}/confirm', [App\Http\Controllers\ThirdPartController::class, 'confirm_push_payment_new25']);

Route::middleware('localization')->post('imaliway/v2/{payment_method}/{payment_type}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
// Route::middleware('localization')->post('imaliway/v2/{payment_method}/payments/{payment_type}/{transation_id}', [App\Http\Controllers\ThirdPartController::class, 'send_push_payment_to_client_new25']);
Route::middleware('localization')->get('imaliway/v2/{payment_type}/payments/{partner_transation_id}/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
// Route::middleware('localization')->get('imaliway/v2/check/{payment_method}/status/{transation_id}', [App\Http\Controllers\ThirdPartController::class, 'check_wallets_payment_status_new25']);

// Route::get('subaccount-extract-file/{card_number}/{startDate?}/{endDate?}', function ($subAccounNumber, $startDate = null, $endDate = null) {
//     return (new SubAccountExport($subAccounNumber, $startDate, $endDate))->exportPDF();
// });

Route::get('subaccount-extract', [PaymentController::class, 'subAccountExtract']);


Route::get('make-recharge', 'Partner\BimController@makeRecharge');
Route::get('check-reference', 'Partner\BimController@verificarEntidadeReferencia');

Route::post('store/login', 'Api\LoginStore@login');
Route::post('store/refresh', 'Api\LoginStore@refresh');

Route::get('period-store-day-test', [CloseController::class, 'getPeriodCloses']);

Route::middleware('auth:store-api')->prefix('store')->group(function () {

    Route::get('account', 'StoreController@getUser');
    Route::post('generate-transaction-store', 'StoreAmountGenerationController@generateTransactionStore');
    Route::get('get-transactions/{id}', 'StoreController@getTransactions');
    Route::get('get-period-transactions/{date1}/{date2}', [StoreController::class, 'getPeriodTransactions']);
    Route::get('get-all-transactions', 'StoreController@getAllTransactions');
    Route::get('get-all-store-transactions', 'StoreController@getAllStoreTransactions');
    Route::post('get-closed-transactions', 'StoreController@getClosedTransactions');
    Route::get('get-dashboard/{id}', 'StoreController@getDashboard');
    Route::post('get-dashboard2', 'StoreController@getDashboard2');
    Route::get('get-daily-dashboard', 'StoreController@getDailyDashboard');
    Route::post('update-firebase-token', 'StoreController@updateFirebaseToken');

    Route::get('close-store-day', 'StoreController@getStoreDayCloses');
    Route::get('period-store-day', [CloseController::class, 'getPeriodCloses']);
    Route::post('logout', 'Api\LoginStore@logout');

    Route::post('change-password', 'StoreController@changePassword');

    Route::get('admin/get-merchant-transactions/{id}', 'StoreController@getStoreTransactions');

    Route::post('receive-notification', [StoreDeviceController::class, 'receiveNotification']);

    Route::post('refund-account', [RefundController::class, 'refundCustomerNewStore']);
    Route::post('confirm-refund-account', [RefundController::class, 'refundConfirmation']);
    Route::post('close-period', [CloseController::class, 'closePeriod']);
    Route::post('open-period', [CloseController::class, 'openPeriod']);
});

Route::get('store/dashboard', 'StoreController@getChartDashboard');
//Route::get('store/get-dashboard/{id}', 'StoreController@getDashboard');


//MERCHANT ROUTES
Route::post('merchant/login', 'Api\MerchantController@login');
Route::post('merchant/refresh', 'Api\MerchantController@refresh');


Route::middleware('auth:merchant-api')->prefix('merchant')->group(function () {

    Route::get('account', 'MerchantController@loggedUser');
    Route::post('logout', 'Api\MerchantController@logout');

    //    Route::get('get-merchant-stores/{id}', 'ComercianteController@getStore');
    //    Route::get('get-store-payments', 'MerchantController@getPayments');
    Route::get('get-store-payments/{date1}/{date2}', [MerchantController::class, 'getPaymentsWithDate']);
    Route::get('get-stores', 'MerchantController@getMerchantStores');

    Route::post('refund-imali-account', [RefundController::class, 'refundCustomerNew']);
    Route::post('refund-confirmation', [RefundController::class, 'refundConfirmation']);

    Route::get('get-refunds', [RefundController::class, 'getRefundCustomer']);

    Route::post('change-password', [MerchantController::class, 'changePassword']);

    Route::get('get-store-periods/{storeId}', [MerchantController::class, 'getStorePeriods']);
    Route::get('get-store-period-transactions/{storeId}', [MerchantController::class, 'getPeriodTransactions']);


    Route::get('get-imali-account/{accountNumber}', 'MerchantController@getImaliAccount');
    Route::get('get-periodos', 'MerchantController@getPeridos');
    Route::get('get-periodos-loja/{storeId}', 'MerchantController@getPeridosLoja');
    Route::get('get-closed-transactions-store/{storeId}/{dateReference}', 'MerchantController@getPagamentosPeriodoLoja');
    Route::get('get-general-dashboard', 'MerchantController@getMerchantDashboard');
    Route::get('get-store-dashboard/{storeId}', 'MerchantController@getStoreDashboard');

    Route::get('get-period-transactions/{store_id}/{date1}/{date2}', [StoreController::class, 'getPeriodTransactionsMerchant']);
});


// // todo BUSINESS-API 
// //? Rotas do dasboard para contas Empresa
// Route::middleware('auth:business-api')->prefix('business')->group(function () {

//     Route::get('get-all-stores', [BusinessController::class, 'getAllStores']);

//     Route::get('user', [BusinessController::class, 'getUser']);

//     // Route::post('money-request', [MoneyRequestController::class, 'requestMoney']);

//     // comprar recargas para uma ou varias contas
//     // fazer withdrawalls com varias fontes MPesa, Banco, etc
//     // Consultar lojas, movimentos (pagamentos, transferencias) da conta Empresa
// });

// //BUSINESS LOGIN
// Route::post('business/login', [BusinessController::class, 'login']);


//Route::get('/miguel-admin', 'LogController@getLogs')->middleware('auth:admin-api');
Route::post('admin/save-comerciante-test', 'ComercianteController@saveComerciante');
//Route::get('admin/get-daily-close-topup', 'CloseController@getTopUpDailyClose');
//Route::get('admin/get-daily-close-topup/{date1}/{date2}', 'CloseController@getTopUpDailyClose');
Route::get('admin/get-daily-close-topup/{date1}/{date2}', [CloseController::class, 'getTopUpDailyClose']);
Route::get('admin/get-documents-test', 'UserDocumentController@getDocuments');


Route::middleware('localization')->group(function () {

    Route::post('send-codigo', 'UserController@verifyUserNumber');
    //Route::middleware('localization')->post('register', 'Api\Auth\RegisterController@register');
    Route::post('register', 'Api\Auth\RegisterController@register');
    //Route::middleware('localization')->post('login', 'Api\Auth\LoginController@login');
    Route::post('login', 'Api\Auth\LoginController@login');
    Route::post('refresh', 'Api\Auth\LoginController@refresh');
    Route::post('send-password-reset-link', 'Api\Auth\LoginController@resetLink');

    //? dados do Pais-Provincia-Distritos
    Route::get('get-country', [App\Http\Controllers\Api\Auth\CountryController::class, 'getCoutry']);
    Route::get('get-provinces/{id}', [App\Http\Controllers\Api\Auth\CountryController::class, 'getProvinces']);
    Route::get('get-districts/{id}', [App\Http\Controllers\Api\Auth\CountryController::class, 'getDistricts']);

    Route::get('get-activity-branch', [App\Http\Controllers\Api\Auth\CountryController::class, 'getActivityBranch']);
});

//===================== ADMIN ROUTES =====================

Route::prefix('admin')->group(function () {

    Route::post('save-user', [AdminController::class, 'saveUser']);
    Route::post('login', [AdminController::class, 'login']);
    Route::post('refresh', [AdminController::class, 'refresh']);
    Route::post('logout', [AdminController::class, 'logout']);
});

//Route::get('get-type-services', [TypeServiceController::class, 'index']);
//Route::post('save-type-services', [TypeServiceController::class, 'store']);
//Route::post('update-type-services/{id}', [TypeServiceController::class, 'update']);
//Route::get('delete-type-services/{id}', [TypeServiceController::class, 'destroy']);
//Route::get('get-type-services/{id}', [TypeServiceController::class, 'edit'])/;

//Route::get('get-services', [ServiceConfigController::class, 'index']);
//Route::post('save-services', [ServiceConfigController::class, 'store']);
//Route::post('update-services/{id}', [ServiceConfigController::class, 'update']);
//Route::get('delete-services/{id}', [ServiceConfigController::class, 'destroy']);
//Route::get('get-services/{id}', [ServiceConfigController::class, 'edit']);

//Route::get('get-account-services', [ServiceConfigAccountController::class, 'index']);
//Route::post('save-account-services', [ServiceConfigAccountController::class, 'store']);
//Route::post('update-account-services/{id}', [ServiceConfigAccountController::class, 'update']);
//Route::get('delete-account-services/{id}', [ServiceConfigAccountController::class, 'destroy']);
//Route::get('get-account-services/{id}', [ServiceConfigAccountController::class, 'edit']);





Route::middleware('auth:admin-api')->prefix('admin')->group(function () {

    // Rotas para aceitar ou cancelar o pedido de exclusao de uma conta iMali
    Route::post('accept-account-deletion-request', 'UserController@acceptAccountDeletionRequest');

    Route::post('cancel-account-deletion-request', 'UserController@cancelAccountDeletionRequest');

    Route::post('block-or-enable-imaliaccount', 'UserController@blockOrEnableIMaliAccount');
    // Rotas para aceitar ou cancelar o pedido de exclusao de uma conta iMali

    //Account Deletion Requests
    Route::get('get-accounts-deletion-requests', 'UserController@getAccountDeletionRequests');
    Route::post('update-token', [UserClientController::class, 'saveToken']);
    Route::post('save-client-integrator', [UserClientController::class, 'saveClientIntegrator']);
    Route::get('get-clients', 'UserClientController@getClients');
    Route::post('add-store-to-client', [UserClientController::class, 'addStoreToUserClient']);

    Route::get('get-transactions-histories/{from}/{to}', [TransactionHistoryController::class, 'historyTransactions']);
    Route::get('get-topup-history/{date1}/{date2}', [VoucherHistoryController::class, 'getVoucherHistories']);
    Route::post('add-or-update-config', [StoreConfigController::class, 'addOrUpdateConfigs']);
    Route::get('get-store-config/{id}', [StoreConfigController::class, 'getStoreConfig']);


    Route::get('find-imali-account/{query}', [MerchantController::class, 'getAccountNumber']);
    Route::get('find-store-account/{query}', [MerchantController::class, 'getStoreAccount']);
    Route::get('find-merchant-account/{query}', [MerchantController::class, 'getMerchantAccount']);


    Route::post('update-store-logo', [StoreController::class, 'updateStoreImage']);

    // reset Password
    Route::post('change-password', [AdminController::class, 'changePassword']);

    Route::post('deny-documents-update', 'UserDocumentController@negarPedidoActualizacaoDocumentos');
    Route::post('accept-documents-update', 'UserDocumentController@updateUserInformation');


    Route::get('get-documents/{status}', 'UserDocumentController@getDocuments');
    Route::get('get-user-documents/{id}', 'UserDocumentController@getUserDocuments');

    Route::post('send-messages', 'PushNotificationController@sendMessage');

    Route::get('get-app-logs', [LogController::class, 'getLogs']);
    Route::get('get-full-logs', [LogController::class, 'getFullLog']);

    Route::get('get-my-transferencias2/{id}', 'PaymentController@getTransferenciasHistory');
    Route::get('get-my-transferencias-data', 'PaymentController@getTransferenciasHistoryData');

    Route::get('get-imali-configuracoes', 'DashboardController@getImaliConfiguracoes');
    Route::get('get-carregamentos2/{datainicial}/{datafinal}', 'DashboardController@getCarregamentos');

    Route::get('get-dashboard', 'DashboardController@getIndicadores');

    Route::post('update-imaliaccount-config', 'DashboardController@updateImaliAccountConfig');


    Route::post('update-imaliaccount-kyc', 'ImaliAccountController@updateKyc');


    // USERS ALL AND CRUD //

    Route::post('create-user', 'Api\AdminController@saveUser');
    Route::get('account', 'Api\AdminController@loggedUser');
    Route::get('paytekusers', 'Api\AdminController@getUsers');
    Route::get('delete-user/{id}', 'Api\AdminController@deleteUser');
    Route::get('get-user/{id}', 'Api\AdminController@getUser');
    Route::post('update-user', 'Api\AdminController@updateUser');
    Route::get('paytekuser-enable-or-disable/{id}', 'Api\AdminController@enableOrDisable');
    //    Route::get('admin/update-profile-user/{id}', 'Api\AdminController@updateUserPasword');
    Route::post('update-user-password', 'Api\AdminController@updateUserPasword');


    Route::get('get-merchant-transactions/{id}', 'StoreController@getStoreTransactions');

    // END USERS AND CRUD


    Route::get('get-profits/{date1}/{date2}', 'ProfitController@getProfits');
    //    Route::get('get-stores', 'StoreController@getStores');
    Route::get('get-stores', [StoreController::class, 'getStores']);
    //    Route::get('get-stores', [StoreController::class, 'getStorePayments']);

    Route::get('get-imali-accounts', 'UserController@getImaliAccounts');
    Route::get('enable-or-disable-imali-account/{account_number}', 'UserController@updateUserStatus');

    Route::get('get-merchant-stores/{id}', 'ComercianteController@getStore');
    Route::post('get-merchant', 'ComercianteController@getMerchant2');
    Route::get('get-comerciantes', 'ComercianteController@getComerciantes');
    Route::get('get-ramo-activity', 'ComercianteController@getRamoActivity');

    Route::get('get-stores', 'StoreController@getStores');
    Route::get('get-profits', 'ProfitController@getProfits');

    Route::get('get-imali-configuracoes', 'DashboardController@getImaliConfiguracoes');
    Route::get('get-carregamentos2/{datainicial}/{datafinal}', 'DashboardController@getCarregamentos');

    Route::get('get-dashboard', 'DashboardController@getIndicadores');

    Route::post('update-imaliaccount-config', 'DashboardController@updateImaliAccountConfig');


    Route::get('get-imali-accounts', 'UserController@getImaliAccounts');

    Route::get('get-user-token/{phone}', 'UserController@getUserToken');


    Route::get('mytransactions/{id}', 'PaymentController@getMyTransactions');
    Route::get('get-user/{id}', 'PaymentController@getUser');
    Route::get('get-test/{id}', 'PaymentController@getTesteTransaction');
    Route::post('recharge', 'UserController@rechargeAccount');
    Route::post('recharge-bank-reference', 'UserController@rechargeByReference');
    // Route::post('recharge-bank-reference', [App\Http\Controllers\UserController::class, 'rechargeByReference'])->name('recharge-bank-reference');
    Route::get('users', 'UserController@users');
    Route::get('get-bank-connections', 'UserController@bankConnections');
    Route::post('update-user-data-mobile', 'UserController@updateUserDataMobile');

    // SAVE COMERCIANTE
    //    Route::post('save-comerciante', 'ComercianteController@saveComerciante');
    Route::post('save-comerciante', [ComercianteController::class, 'saveComerciante']);
    //    Route::post('save-store', 'ComercianteController@saveLoja');
    Route::post('save-store', [ComercianteController::class, 'saveLoja']);
    Route::post('update-merchant', 'ComercianteController@updateComerciante');

    // FIM DO SAVE MERCHANT

    Route::post('mine-transaction', 'PaymentController@makePayment');
    Route::post('mine-transaction-store', 'PaymentController@makePaymentStore');
    Route::get('get-payments', 'PaymentController@getPayments');
    Route::get('get-my-payment/{id}', 'PaymentController@getMyPayments');
    Route::get('get-my-payments', 'PaymentController@getMyPayments2');
    Route::get('get-transferencias', 'PaymentController@getTransferencias');
    Route::get('get-carregamentos', 'PaymentController@getCarregamentos');
    Route::get('get-my-carregamentos2/{id}', 'PaymentController@getMyCarregamentos2');
    Route::get('get-my-carregamentos', 'PaymentController@getMyCarregamentos');
    Route::get('get-my-transferencias/{id}', 'PaymentController@getMyTransferencias');

    Route::post('transfer-money', 'PaymentController@transferMoney');
    Route::post('check-account', 'PaymentController@checkReceiver');
    Route::get('get-comerciante2/{account_number}', 'ComercianteController@getComerciante2');
    Route::get('get-comerciante/{account_number}', 'ComercianteController@getComerciante');


    Route::get('generate-qrcode/{id}/{account_number}', 'ComercianteController@generateQrcode');

    Route::post('get-merchant', 'ComercianteController@getMerchant2');
    Route::get('get-comerciantes', 'ComercianteController@getComerciantes');
    Route::get('get-ramo-activity', 'ComercianteController@getRamoActivity');


    // Get Users By admon
    Route::get('get-user-by-account-number/{account_number}', 'ComercianteController@getUserByImaliAccount');
    Route::get('get-user-by-account-reference/{reference}', 'ComercianteController@getUserByImaliAccountReference');
    Route::get('get-user-data/{id}', 'ComercianteController@getUserData');

    // PESQUISA POR PARAMETRO
    Route::post('update-store', 'StoreController@updateStore');
    Route::get('get-merchant-transactions-searched/{datainicial}/{datafinal}/{id}', 'StoreController@getStorePayments');
    Route::get('get-transferencias2/{datainicial}/{datafinal}', 'DashboardController@getTransferencias');
    Route::get('get-transaction-history/{datainicial}/{datafinal}/{imali}/{type}', 'ImaliAccountController@getImaliTransactions');


    Route::get('get-payments2/{datainicial}/{datafinal}', 'DashboardController@getPayments');
    Route::get('get-transferencias2/{datainicial}/{datafinal}', 'DashboardController@getTransferencias');

    Route::get('get-comerciante-payments/{account_number}', 'ComercianteController@getComercianteTransactions');

    Route::get('get-my-transferencias2/{id}', 'PaymentController@getTransferenciasHistory');
    Route::get('get-my-transferencias-data', 'PaymentController@getTransferenciasHistoryData');


    // KYC
    Route::post('save-kyc', 'UserKycController@saveKyc');
    Route::post('update-kyc', 'UserKycController@updateKyc');
    Route::get('delete-kyc/{id}', 'UserKycController@deleteKyc');


    // CLOSE DAY

    Route::get('store-closes/{date1}/{date2}', 'StoreController@getAdminStoresCloses');
    Route::get('close-store-day', 'StoreController@getStoreDayCloses');
    Route::post('save-close-store-day', 'DayCloseStoreController@dayCloseStore');
    Route::get('store-day-closes/{store_id}', 'StoreController@getStoreCloses');


    //    MPESA
    Route::post('revert-recharge-transanction', 'UserController@reverteTransaction');
    Route::post('send-money-b2b', 'UserController@sendMoneyB2B');
    Route::post('send-money-imali-mpesa', 'UserController@sendMoneyImaliMpesa')->middleware('json.response');

    // ================ SERVICES NOTIFICATION =======================
    Route::get('get-services', [ServiceConfigController::class, 'index']);
    Route::post('save-services', [ServiceConfigController::class, 'store']);
    Route::post('update-services/{id}', [ServiceConfigController::class, 'update']);
    Route::get('delete-services/{id}', [ServiceConfigController::class, 'destroy']);
    Route::get('get-services/{id}', [ServiceConfigController::class, 'edit']);

    Route::get('get-account-services', [ServiceConfigAccountController::class, 'index']);
    Route::post('save-account-services', [ServiceConfigAccountController::class, 'store']);
    Route::post('update-account-services/{id}', [ServiceConfigAccountController::class, 'update']);
    Route::get('delete-account-services/{id}', [ServiceConfigAccountController::class, 'destroy']);
    Route::get('get-account-services/{id}', [ServiceConfigAccountController::class, 'edit']);

    //================ FIM DE SERVICES NOTIFICATION =======================

    // KRB Methods
    Route::post('create-partner-services', [MerchantController::class, 'createPartnerServices']);
    Route::get('get-partner-services', [MerchantController::class, 'getPartnerServices']);
    Route::post('update-user-client/{id}', [UserClientController::class, 'updateUserClient2024']);

    // Payment Services
    Route::post('create-payment-services', [AdminController::class, 'createPaymentServices']);
    //Route::get('get-payment-services', [AdminController::class, 'getPaymentServices']);
    Route::get('get-all-payment-services', [AdminController::class, 'getAllPaymentServices']);

    Route::post('create-ai-data', [AdminController::class, 'createIAData']);


    // Kiara Methods 
    Route::get('get-merchants', 'ComercianteController@getComerciantes');
    Route::get('get-subaccounts', 'UserController@getSubAccountsAdmin');
    Route::get('get-all-stores-transactions', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactionsAdmin']);
    // Route::get('stores-transactions-exp', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactionsAdminExport']);
    Route::get('get-month-close', [App\Http\Controllers\ThirdPartController::class, 'getMonthClose']);
});

Route::get('ai-data', [AdminController::class, 'getAllIAData']);

// get All transactions TRANSFER | PAYMENT
Route::get('all-transaction', [PaymentController::class, 'getAllTransactionData']);

//Route::get('get-payment-services', [AdminController::class, 'getPaymentServices']);


Route::post('create-applications', [App\Http\Controllers\ApplicationController::class, 'createApplication']);
Route::post('encrypt-applications', [App\Http\Controllers\ApplicationController::class, 'encryptString']);

//JWT
Route::post('encrypt-jwt', [App\Http\Controllers\ApplicationController::class, 'encryptStringJWT']);

Route::middleware(['applicationsv2', 'localization'])->prefix('apps')->group(function () {

    // Route::get('decrypt-jwt', [App\Http\Controllers\ApplicationController::class, 'decryptStringJWT']);

    Route::get('get-payment-services', [AdminController::class, 'getPaymentServices']);
    Route::get('get-merchant-from-website/{account_number}', [App\Http\Controllers\ThirdPartController::class, 'getStoreMerchant']);
    // Route::post('decrypt-applications', [App\Http\Controllers\ApplicationController::class, 'decryptString']);

    // Route::post('c2b/{wallet_name}/recharge/store', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);
    // Route::post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);

    // iMali GateWay Payments - POS e APP Web
    // Route::post('imaliway/v2/{payment_method}/{payment_type}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    // Route::get('imaliway/v2/{payment_type}/payments/{partner_transation_id}/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);


    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
    Route::post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);
});

// TERMINAL
Route::post('encrypt-terminal', [App\Http\Controllers\ApplicationController::class, 'encryptString']);
Route::post('create-terminal', [App\Http\Controllers\ApplicationController::class, 'createterminals']);
Route::get('get-my-terminals/{account_number}', [App\Http\Controllers\ApplicationController::class, 'getMyTerminals']);
Route::post('decrypt-applications', [App\Http\Controllers\ApplicationController::class, 'decryptString']);

// ROTAS DAS TERMINALs iMali
Route::middleware('terminals')->prefix('terminals')->group(function () {

    // Route::post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);

    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);

    Route::get('account_store', [App\Http\Controllers\StoreController::class, 'getUserStore']);

    Route::get('get-store-transactions', [App\Http\Controllers\StoreController::class, 'getTransactionsStore']);

    // GENERATE TRANSACTION
    Route::post('generate-store-transaction', [UserClientController::class, 'QrcodeStore']); // funciona

    Route::get('get-payment-services', [AdminController::class, 'getPaymentServices']);
});

// ROTAS DAS TERMINALs iMali V2
Route::middleware('terminalsv2')->prefix('terminalsv2')->group(function () {

    // Route::post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);

    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);

    Route::get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);

    Route::get('account_store', [App\Http\Controllers\StoreController::class, 'getUserStore']);

    Route::get('get-store-transactions', [App\Http\Controllers\StoreController::class, 'getTransactionsStore']);

    // GENERATE TRANSACTION
    Route::post('generate-store-transaction', [UserClientController::class, 'QrcodeStore']); // funciona

    Route::get('get-payment-services', [AdminController::class, 'getPaymentServices']);
});


// NOVAS ROTAS DOS PARTNERS iMali --- IMALIGATEWAY ..::::::::..
Route::middleware(['localization', 'partnersv2'])->prefix('partners')->group(function () {
    // Route::prefix('partners')->group(function () {
    // Route::post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);

    // Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'imaliway_guard_new25']);
    Route::post('imaliway/v2/payments/check', [App\Http\Controllers\ThirdPartController::class, 'checkB2CDepositNew25']);
    Route::get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
    Route::post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);
    Route::get('imaliway/v2/payments/client/balance', [App\Http\Controllers\ThirdPartController::class, 'check_imali_account_balance_new25']);

    // B2C 
    Route::get('imaliway/v2/payments/check-b2c-fees', [App\Http\Controllers\ThirdPartController::class, 'checkB2CFeesTransactionImaliway']);

    // Teste de pagamento por Cartao NFC
    Route::get('imaliway/v2/payments/balance', [ThirdPartController::class, 'check_card_balance_new25']);
    Route::post('imaliway/v2/payments/refund', [ThirdPartController::class, 'make_payment_refund_new25']);
    // Teste de pagamento por Cartao NFC
});

// NOVAS ROTAS DOS PARTNERS iMali
Route::middleware(['partnersv2'])->prefix('partnersv2')->group(function () {

    Route::post('imaliway/{payment_method}/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStore']);
    Route::get('imaliway/{payment_method}/payments/status/{push_id}', [App\Http\Controllers\ThirdPartController::class, 'checkPushStatus']);

    // GENERATE PAYMENT PUSH
    // Route::post('generate-payment-push', [App\Http\Controllers\ThirdPartController::class, 'generatePaymentPush']); // funciona
    Route::middleware('localization')->post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::middleware('localization')->get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
    Route::middleware('localization')->post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);
});


//fim rotas admin

## ================ SERVICES NOTIFICATION =======================
///Route::get('get-services', [ServiceConfigController::class, 'index']);
//Route::post('save-services', [ServiceConfigController::class, 'store']);
//Route::post('update-services/{id}', [ServiceConfigController::class, 'update']);
//Route::get('delete-services/{id}', [ServiceConfigController::class, 'destroy']);
//Route::get('get-services/{id}', [ServiceConfigController::class, 'edit']);

//Route::get('get-account-services', [ServiceConfigAccountController::class, 'index']);
//Route::post('save-account-services', [ServiceConfigAccountController::class, 'store']);
//Route::post('update-account-services/{id}', [ServiceConfigAccountController::class, 'update']);
//Route::get('delete-account-services/{id}', [ServiceConfigAccountController::class, 'destroy']);
//Route::get('get-account-services/{id}', [ServiceConfigAccountController::class, 'edit']);

## ================ FIM DE SERVICES NOTIFICATION =======================



//Route::post('add-store-to-client', 'UserClientController@addStoreToUserClient');
Route::post('add-store-to-client', [UserClientController::class, 'addStoreToUserClient']);
Route::post('userF', 'UserClientController@getUser');
//Route::post('send-codigo', 'UserController@verifyUserNumber');

Route::post('send-sms-token', 'UserController@sendSMSToken');

Route::post('resend-code-verification', 'UserController@resendCode');
Route::post('check-codigo', 'UserController@checkCodigo');

Route::post('sms-test', 'UserController@sendSMS');


Route::get('teste', 'UserController@teste');


Route::post('update-firebase-token', 'UserController@updateFirebaseToken');

Route::post('recharge-by-reference', 'UserController@rechargeByReference2');
Route::get('topup-water-client2', 'TopUpController@getWaterClient');
Route::get('topup-advice', 'TopUpController@runAdvice');
Route::get('topup-close', 'TopUpController@topUpClose');
Route::get('topup-balance', 'TopUpController@getBalance');



Route::get('get-my-devices', 'ConfigController@getMyDevices');

Route::get('get-map-stores-off', [MerchantController::class, 'getAllStores']);

//? registo de tarifas
Route::post('imali-tariffs', 'ImaliTariffController@createTariff');

Route::post('delete-account', 'UserController@makeAccountDeletionRequest2024')->name('delete-account');

// todo BUSINESS-API
// comprar recargas para uma ou varias contas
// fazer withdrawalls com varias fontes MPesa, Banco, etc
// Consultar lojas, movimentos (pagamentos, transferencias) da conta Empresa
//? Rotas do dasboard para contas Empresa
Route::middleware(['auth:business'])->prefix('business-web')->group(function () {

    Route::get('get-all-stores', [BusinessController::class, 'getAllStores']);

    Route::get('user', [BusinessController::class, 'getUser']);

    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);

    // Metodos Lojas Conta Empresa
    Route::get('get-empresa-stores', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaStores']);
    // Route::get('get-payments-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsStores']);
    Route::get('get-payments-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsStores']);
    Route::get('get-payments-stores-details/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsDetails']);

    Route::get('get-stores-data/{id}', [App\Http\Controllers\ThirdPartController::class, 'getStoresData']);

    // Links
    Route::get('get-stores-links', [App\Http\Controllers\ThirdPartController::class, 'getStoresLink']);
    Route::get('get-payments-links', [App\Http\Controllers\ThirdPartController::class, 'getLinkPayments']);


    // Create Link
    Route::post('create-payment-link', [App\Http\Controllers\PaymentController::class, 'paymentLink']);
    Route::get('update-payment-link', [App\Http\Controllers\PaymentController::class, 'updateLink']);


    // Metricas
    Route::get('get-count-stores', [App\Http\Controllers\ThirdPartController::class, 'getCountStores']);
    Route::get('get-all-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getAllTransactionStores']);
    Route::get('get-total-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStores']);
    Route::get('get-transactions-by-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionByStores']);
    Route::get('get-total-by-day', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStoresDay']);
    Route::get('get-transactions-days/{id}/{startDate}/{endDate}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionStoresDates']);

    Route::get('get-all-stores-transactions', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactions']);
    Route::get('get-all-stores-transactions-c2b-b2c', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactionsC2B2C']);


    // Metodos de Solicitacao de Credito
    Route::get('get-credit-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'get_credit_solicitation']);
    Route::post('update-credit-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'update_credit_solicitation']);

    Route::get('business-solicitation-file/{card_number}', function ($subAccounNumber) {
        return (new CreditSolicitationPdf($subAccounNumber))->exportPDF();
    });

    // ORDENS DE DEBITO NA CONTA BUSINESS...
    Route::post('create_debit', [App\Http\Controllers\DebitOrderController::class, 'create_debit']);
    Route::get('get_debit', [App\Http\Controllers\DebitOrderController::class, 'get_debit']);
    Route::post('approve_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'approve']);
    Route::post('reject_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'reject']);
    Route::post('complete_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'complete']);
    Route::post('change-password', [App\Http\Controllers\BusinessController::class, 'changePassword']);

    Route::post('logout', 'Api\Auth\LoginController@logout');

    // LOGs Business Dashboard 
    Route::get('activity-log', [App\Http\Controllers\BusinessLogController::class, 'activity_log']);
});

Route::post('webhook-dojah', [App\Http\Controllers\DojahWebhookController::class, 'receive']);

Route::get('webhook-dojah', [App\Http\Controllers\DojahWebhookController::class, 'key']);

// Route::get('webhook-dojah', function () {
//     return response()->json(['status' => 'ok', 'message' => 'Endpoint ok']);
// });

// Route::middleware(['auth:business-api', 'log'])->prefix('business')->group(function () {
Route::middleware(['auth:business-api'])->prefix('business')->group(function () {

    Route::get('get-all-stores', [BusinessController::class, 'getAllStores']);

    Route::get('user', [BusinessController::class, 'getUser']);

    // todo -- ROTAS PARA IMALIWAY
    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
    Route::post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);
    Route::get('imaliway/v2/payments/pendings', [App\Http\Controllers\ThirdPartController::class, 'get_imali_push_pendings_new25']);
    // TODO -- ROTAS PARA IMALIWAY

    // Metodos Lojas Conta Empresa
    Route::get('get-empresa-stores', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaStoresMobile']);
    // Route::get('get-payments-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsStores']);
    Route::get('get-payments-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsStores']);
    Route::get('get-payments-stores-details/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsDetails']);

    Route::get('get-stores-data/{id}', [App\Http\Controllers\ThirdPartController::class, 'getStoresData']);

    // Links
    Route::get('get-stores-links', [App\Http\Controllers\ThirdPartController::class, 'getStoresLink']);
    Route::get('get-payments-links', [App\Http\Controllers\ThirdPartController::class, 'getLinkPayments']);


    // Create Link
    Route::post('create-payment-link', [App\Http\Controllers\PaymentController::class, 'paymentLink']);
    Route::get('update-payment-link', [App\Http\Controllers\PaymentController::class, 'updateLink']);


    // Metricas
    Route::get('get-count-stores', [App\Http\Controllers\ThirdPartController::class, 'getCountStores']);
    Route::get('get-all-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getAllTransactionStores']);
    Route::get('get-total-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStores']);
    Route::get('get-transactions-by-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionByStores']);
    Route::get('get-total-by-day', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStoresDay']);
    Route::get('get-transactions-days/{id}/{startDate}/{endDate}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionStoresDates']);

    Route::get('get-all-stores-transactions', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactions']);
    Route::get('get-all-stores-transactions-c2b-b2c', [App\Http\Controllers\ThirdPartController::class, 'getAllStoresTransactionsC2B2C']);


    // Metodos de Solicitacao de Credito
    Route::get('get-credit-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'get_credit_solicitation']);
    Route::post('update-credit-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'update_credit_solicitation']);

    Route::get('business-solicitation-file/{card_number}', function ($subAccounNumber) {
        return (new CreditSolicitationPdf($subAccounNumber))->exportPDF();
    });

    // ORDENS DE DEBITO NA CONTA BUSINESS...
    Route::post('create_debit', [App\Http\Controllers\DebitOrderController::class, 'create_debit']);
    Route::get('get_debit', [App\Http\Controllers\DebitOrderController::class, 'get_debit']);
    Route::post('approve_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'approve']);
    Route::post('reject_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'reject']);
    Route::post('complete_debit/{id}', [App\Http\Controllers\DebitOrderController::class, 'complete']);
    Route::post('change-password', [App\Http\Controllers\BusinessController::class, 'changePassword']);

    Route::post('logout', 'Api\Auth\LoginController@logout');

    // LOGs Business Dashboard 
    Route::get('activity-log', [App\Http\Controllers\BusinessLogController::class, 'activity_log']);
});

//BUSINESS LOGIN
// Route::post('business/login', [LoginController::class, 'login']);
// Route::post('business/login', 'Api\Auth\LoginController@login');

// todo --- 20/10/2025 ⭐
// Route::post('business/login', [BusinessLoginController::class, 'login']);
Route::post('business-web/login', [BusinessLoginController::class, 'login']);



// Route::middleware('auth:api', 'appversion', 'localization')->group(function () {
Route::middleware('auth:api', 'localization')->group(function () {

    //Account Deletion Request
    Route::post('make-account-deletion-request', 'UserController@makeAccountDeletionRequest');
    //    Route::get('get-account-deletion-requests', 'UserController@getAccountDeletionRequests');
    Route::get('get-account-deletion-reasons', 'UserController@getAccountDeletionReasons');
    // DENY PAYMENT PUSH
    Route::post('deny-payment-push', [UserClientController::class, 'denyPaymentPush']); // funciona

    //check Pin
    Route::post('check-pin-unlock', [\App\Http\Controllers\UserController::class, 'validatePin']);

    //get All Stores
    Route::get('get-map-stores', [MerchantController::class, 'getAllStores']);

    // PAGAR STARTIMES
    Route::post('pay-startimes-test', [TopUpTestController::class, 'payStartTimesPackage']);


    // ATERAR ISTO
    Route::post('pay-startimes', [TopUpController::class, 'payStartTimesPackage']);
    Route::get('check-client-start/{smartCard}', [TopUpController::class, 'checkClientStartTimes']);


    Route::post('upload-document', 'UserDocumentController@updateDocoment');


    Route::get('get-meu-extrato', 'MonthCloseController@getMonthClose');


    Route::get('topup-zap-pacotes', 'TopUpController@getZapPacotes');
    Route::post('topup-buy-zap-pacote', 'TopUpController@buyZapPacote');

    //    Route::get('topup-get-dstv/{customer_number}/{type}', 'TopUpTestController@getDstvProducts'); // teste
    Route::get('topup-get-dstv/{customer_number}/{type}', [TopUpController::class, 'getDstvProducts']);

    //    Route::post('topup-pay-dstv', 'TopUpTestController@buyDstvPacote'); // teste
    Route::post('topup-pay-dstv', [TopUpController::class, 'buyDstvPacote']);
    Route::post('pay-dstv', 'TopUpTestController@buyDstvPacote');

    Route::get('get-my-water-contador', 'WaterController@getWaterContadores');
    //? Remover contador de Agua
    Route::get("remove-contadors-water/{id}", 'WaterController@destroy');

    //? Adicionar contador de Agua
    Route::post('add-water-contadors', 'WaterController@addContaWaters');

    //? Remover contador de Credelec
    Route::get("remove-contadors-credelec/{id}", 'TopUpController@destroy');

    Route::post('topup-water-client', 'TopUpController@getWaterClient');
    Route::post('topup-pay-water', 'TopUpController@payWater');

    Route::post('topup-check-contador', 'TopUpController@checkContador');
    Route::get('get-my-contador', 'TopUpController@getMyContador');

    Route::post('deny-money-request', 'MoneyRequestController@recusarPedido');
    Route::post('money-request', 'MoneyRequestController@requestMoney');
    Route::get('get-meus-pedidos', 'MoneyRequestController@getMeusPedidos');


    Route::get('get-app-logs', 'LogController@getLogs');

    Route::post('update-avatar', 'UserController@updateAvatar');

    Route::get('user', 'UserController@getUser');
    Route::get('show-hide-balance', 'UserController@hideAndShowBalance');
    Route::get('disable-user/{id}', 'UserController@disableUser');
    Route::post('change-password', 'UserController@changePassword');
    Route::post('check-pin', 'UserController@checkPin');

    //    Route::post('generate-amount', 'UserController@generateAmount');
    Route::post('generate-amount', [UserController::class, 'generateAmount']);
    Route::get('get-client/{transaction}', 'UserController@getClientDataForPayment');
    Route::get('get-client-account/{account}', [UserController::class, 'getClientAccount']);


    Route::post('upload-photo', 'UserController@uploadPhoto');
    //    Route::post('logout', 'Api\Auth\LoginController@refresh');
    Route::post('logout', 'Api\Auth\LoginController@logout');
    Route::get('get-my-imali/{id}', 'UserController@getMyImaliAccount');

    Route::get('get-imali-accounts', 'UserController@getImaliAccounts');


    Route::get('mytransactions/{id}', 'PaymentController@getMyTransactions');
    Route::get('get-user/{id}', 'PaymentController@getUser');
    Route::get('get-test/{id}', 'PaymentController@getTesteTransaction');
    Route::post('recharge', 'UserController@rechargeAccount');
    Route::post('recharge-bank-reference', 'UserController@rechargeByReference');
    Route::get('users', 'UserController@users');
    Route::get('get-bank-connections', 'UserController@bankConnections');
    Route::post('update-user-data-mobile', 'UserController@updateUserDataMobile');

    Route::post('save-comerciante', 'ComercianteController@saveComerciante');
    Route::post('save-store', 'ComercianteController@saveLoja');
    Route::post('update-merchant', 'ComercianteController@updateComerciante');
    Route::post('mine-transaction', 'PaymentController@makePayment');

    // MAKE PAYMENT
    //    Route::post('mine-transaction-store', 'PaymentController@makePaymentStore');
    //    Route::post('mine-transaction-store-no-pin', 'PaymentController@makePaymentStore2');

    // Route::post('mine-transaction-store', [PaymentController::class, 'makePaymentStoreAppNew']); //? OLD
    Route::post('mine-transaction-store', [PaymentController::class, 'payment_guard']); // todo ---- NEW

    //    Route::post('mine-transaction-store', [PaymentController::class, 'makePaymentStore']);
    //    Route::post('mine-transaction-store-no-pin', [PaymentController::class, 'makePaymentStore2']);
    Route::post('mine-transaction-store-no-pin', [PaymentController::class, 'makePaymentStoreAppNew']);

    // Route::post('mine-transaction-store-2024', [PaymentController::class, 'makePaymentStoreApp2024']); //? OLD
    Route::post('mine-transaction-store-2024', [PaymentController::class, 'payment_guard']); // todo ---- NEW


    Route::get('get-payments', 'PaymentController@getPayments');
    Route::get('get-my-payment/{id}', 'PaymentController@getMyPayments');
    Route::get('get-my-payments', 'PaymentController@getMyPayments2');
    Route::get('get-transferencias', 'PaymentController@getTransferencias');
    Route::get('get-carregamentos', 'PaymentController@getCarregamentos');
    Route::get('get-my-carregamentos2/{id}', 'PaymentController@getMyCarregamentos2');
    Route::get('get-my-carregamentos', 'PaymentController@getMyCarregamentos');
    Route::get('get-my-transferencias/{id}', 'PaymentController@getMyTransferencias');
    Route::get('get-my-vouchers', 'PaymentController@getMyVouchers');

    //? Get Withdrawalls Request data
    Route::get('get-my-withdrawalls', 'PaymentController@getMyWithDrawalls');
    //? Get Withdrawalls Request data

    //Route::post('transfer-money', 'PaymentController@transferMoney');
    //Route::post('transfer-money-no-pin', 'PaymentController@transferMoney2');

    Route::post('transfer-money-new', 'PaymentController@transferMoneyNew2024');

    Route::post('transfer-money', 'PaymentController@transferMoneyNew2024');
    Route::post('transfer-money-no-pin', 'PaymentController@transferMoneyNew2024');

    Route::post('pay-loans', 'PaymentController@pay_loans');

    Route::get('pay-loans-payments/{credit_request}', 'PaymentController@pay_loans_payments');

    Route::get('accept-loans', 'PaymentController@accept_loans');

    Route::post('check-account', 'PaymentController@checkReceiver');
    Route::get('get-comerciante2/{account_number}', 'ComercianteController@getComerciante2');
    Route::get('get-comerciante/{account_number}', 'ComercianteController@getComerciante');
    //    Route::post('get-merchant', 'ComercianteController@getMerchant');
    //    Route::post('get-merchant', 'ComercianteController@getMerchant2');

    // Route::post('get-merchant', [ComercianteController::class, 'getStorePayment']);
    // Route::post('get-merchant', [ComercianteController::class, 'getStorePayment_new25']);
    Route::post('get-merchant', [ComercianteController::class, 'getStorePayment_new25_v8']);
    //Route::post('get-merchant', [ComercianteController::class, 'getMerchant2']);
    Route::get('get-comerciantes', 'ComercianteController@getComerciantes');
    Route::get('get-ramo-activity', 'ComercianteController@getRamoActivity');

    //Route::get('get-user-by-account-number/{account_number}', 'ComercianteController@getUserByImaliAccount');
    Route::get('get-user-by-account-number/{account_number}', 'ComercianteController@getUserByImaliAccount');
    Route::get('get-user-by-account-number-phone/{account_number}', 'ComercianteController@getUserByImaliAccountPhone');
    Route::get('get-user-data/{id}', 'ComercianteController@getUserData');


    Route::get('get-payments2/{datainicial}/{datafinal}', 'DashboardController@getPayments');
    Route::get('get-transferencias2/{datainicial}/{datafinal}', 'DashboardController@getTransferencias');

    Route::get('get-comerciante-payments/{account_number}', 'ComercianteController@getComercianteTransactions');

    Route::get('get-my-transferencias2/{id}', 'PaymentController@getTransferenciasHistory');
    Route::get('get-my-transferencias-data', 'PaymentController@getTransferenciasHistoryData');

    // novo metodo transferencias...
    Route::get('get-all-transfers', 'PaymentController@getTransferInEx');

    //    Route::get('get-imali-configuracoes', 'DashboardController@getImaliConfiguracoes');
    //    Route::get('get-carregamentos2/{datainicial}/{datafinal}', 'DashboardController@getCarregamentos');
    //
    //    Route::get('get-dashboard', 'DashboardController@getIndicadores');
    //
    //    Route::post('update-imaliaccount-config', 'DashboardController@updateImaliAccountConfig');

    Route::post('buy-voucher', 'TopUpController@buyVoucher');
    Route::post('buy-voucher-token', 'TopUpController@buyVoucherPin');
    Route::post('buy-voucher-direct', 'TopUpController@buyVoucherDirectRecharge');
    //    Route::post('buy-voucher-advice', 'TopUpController@buyVoucherWithAdvice');


    // MOBILE ROUTES
    Route::get('get-imali-by-phone/{phone}', 'ImaliAccountController@getImaliByPhoneNumber');
    Route::get('get-contacts', 'ImaliAccountController@getContacts');
    Route::get('get-contacts2', 'ImaliAccountController@getContacts2');
    Route::get('get-my-month-consuming', 'UserController@getMyMonthConsuming');
    Route::get('get-my-credelec', 'UserController@getMyCredelec');
    Route::get('get-my-water', 'UserController@getMyWater');
    // END MOBILE ROUTES //

    Route::post('buy-credelec', 'TopUpController@buyCredelec');


    //? Update Username
    Route::post('update-username', 'UserController@updateUsername');

    //? Nova rota de teste de Credelec
    Route::post('credelec-message', 'TopUpController@credelecMessage');


    //? Check Transaction
    Route::post('check-withdrawall-transaction', 'UserController@checkWithdrawallTransaction');

    //? Save WithDrawalls
    Route::post('save-withdrawalls', 'UserController@createWithDrawalls');

    //? Validate NIB
    Route::post('check-nib', 'UserController@checkNIB');

    //? Adicionar novo contacto
    Route::post('check-contact', 'UserController@checkContact')->name('check-contact');
    Route::post('add-contact', 'UserController@addContact')->name('add-contact');
    Route::post('remove-contact', 'UserController@removeContact')->name('remove-contact');
    Route::get('get-my-contacts', 'UserController@getMyConctacts')->name('get-my-contacts');

    Route::post('check-default-number', 'UserController@checkDefaultNumber')->name('check-default-number');
    Route::post('change-default-number', 'UserController@changeDefaultNumber')->name('change-default-number');
    //? Adicionar novo contacto


    // todo -- METODO GENERICO PARA DEPOSITO..
    // Route::post('c2b/{wallet_name}/recharge', [App\Http\Controllers\ThirdPartController::class, 'c2bPayment']);
    // Route::post('b2c/{wallet_name}/withdraw', [App\Http\Controllers\ThirdPartController::class, 'b2cPayment']);
    // Route::get('customer/{wallet_name}/name', [App\Http\Controllers\ThirdPartController::class, 'maskedName']);


    Route::post('c2b/{wallet_name}/recharge', [App\Http\Controllers\ThirdPartController::class, 'c2bDeposit']);
    Route::post('b2c/{wallet_name}/withdraw', [App\Http\Controllers\ThirdPartController::class, 'b2cWithdraw']);
    Route::get('transac/{wallet_name}/status', [App\Http\Controllers\ThirdPartController::class, 'walletTransacStatus']);
    Route::get('customer/{wallet_name}/name', [App\Http\Controllers\ThirdPartController::class, 'getWalletCustomerName']);
    Route::get('check/{wallet_name}/b2c-transaction', [App\Http\Controllers\ThirdPartController::class, 'checkB2CTransaction']);

    // todo -- 21/10/2025
    // Route::get('check/{transfer_to}/withdrawall_transaction', [App\Http\Controllers\ThirdPartController::class, 'checkWithdrawallTransactionNew25']);
    // Route::post('create/{transfer_to}/withdrawall_transaction', [App\Http\Controllers\ThirdPartController::class, 'createWithDrawalls_new25']);

    Route::get('check-b2c-withdrawall_transaction', [App\Http\Controllers\ThirdPartController::class, 'checkWithdrawallTransactionNew25']);
    Route::post('create-b2c-withdrawall_transaction', [App\Http\Controllers\ThirdPartController::class, 'createWithDrawalls_new25']);

    // mKesh Response
    Route::middleware('localization')->post('recharge-by-mkesh-response', [App\Http\Controllers\ThirdPartController::class, 'c2bMKeshPaymentResponse']);


    // // Metodos Lojas Conta Empresa
    Route::middleware('localization')->get('get-empresa-stores', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaStoresMobile']);
    // Route::middleware('localization')->get('get-payments-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsStores']);
    // Route::middleware('localization')->get('get-payments-stores-details/{id}', [App\Http\Controllers\ThirdPartController::class, 'getEmpresaPaymentsDetails']);

    // // Metricas
    // Route::middleware('localization')->get('get-count-stores', [App\Http\Controllers\ThirdPartController::class, 'getCountStores']);
    // Route::middleware('localization')->get('get-all-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getAllTransactionStores']);
    // Route::middleware('localization')->get('get-total-transactions-stores', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStores']);
    // Route::middleware('localization')->get('get-transactions-by-stores/{id}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionByStores']);
    // Route::middleware('localization')->get('get-total-by-day', [App\Http\Controllers\ThirdPartController::class, 'getTotalTransactionStoresDay']);
    // Route::middleware('localization')->get('get-transactions-days/{id}/{startDate}/{endDate}', [App\Http\Controllers\ThirdPartController::class, 'getTransactionStoresDates']);

    //? Pagamento Via Entidades externas

    Route::post('withdrawall-by-mpesa', 'ThirdPartController@b2cPayment');
    Route::post('recharge-by-mpesa', 'ThirdPartController@c2bPayment');
    Route::get('mpesa-customer-masked-name', [App\Http\Controllers\ThirdPartController::class, 'maskedName']);
    Route::get('check-mpesa-withdrawall-transaction', 'ThirdPartController@checkB2CTransaction');

    //? Pagamento Via Entidades externas

    Route::post('create-imali-subaccount-2024', 'UserController@createSubAccounts2024');


    //? Criar subcontas iMali
    Route::post('create-imali-subaccount', 'UserController@createSubAccounts');
    Route::get('get-subaccounts', 'UserController@getSubAccounts');
    Route::post('remove-subaccount-money', 'UserController@removeSubAccountMoney');

    Route::get('get-subaccounts-transactions', 'UserController@getMyTransactionSubAccount');
    //Route::get('get-subaccounts-transactions', 'UserController@getSubAccountsTransactions');

    // enviar dinheiro da conta principal para subconta
    Route::post('add-money-subaccount', 'UserController@addMoneySubAccount');

    // remover dinheiro da conta principal para subconta
    Route::post('remove-money-subaccount', 'UserController@removeMoneySubAccount');

    Route::post('delete-imali-subaccount', 'UserController@deleteSubAccounts');
    Route::post('update-imali-subaccount/{account_number}', 'UserController@updateSubAccounts');

    // GET Accounts
    Route::get('get-payment-accounts', [UserClientController::class, 'getPaymentAccounts']);

    // SWITCH LANG
    Route::post('switch-lang', [UserController::class, 'switchLang']);

    Route::get('get-meu-extrato', 'MonthCloseController@getMonthClose');

    // TESTE Withdrawall 10/12/2024
    Route::get('check/{wallet_name}/transaction-status', [App\Http\Controllers\ThirdPartController::class, 'check_pending_withdrawalls']);


    // Get My Generated Push Payments
    // Route::get('get-my-push-payments', [App\Http\Controllers\ThirdPartController::class, 'getMyGeneratedPushPayments']);

    // Get Payment Request Push Payment
    Route::get('get-my-push-payments', [App\Http\Controllers\ThirdPartController::class, 'get_my_generated_push_payments_new25']);

    // Route::post('create-business-credit-request', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequest']);
    // Route::post('create-business-credit-request-2', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequest2']);
    // Route::post('create-business-credit-request-3', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequest3']);

    // Route::post('final-method', [App\Http\Controllers\CreditSolicitationController::class, 'final_method']);
    Route::post('create-business-credit-request', [App\Http\Controllers\CreditSolicitationController::class, 'business_credit_request_method']);

    // todo -- EDIT CREDIT REQUEST SOLICITATION
    Route::post('edit-business-credit-request-1', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequestEdit']);
    Route::post('edit-business-credit-request-2', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequestEditII']);
    Route::post('edit-business-credit-request-3', [App\Http\Controllers\CreditSolicitationController::class, 'businessCreditRequestEditIII']);

    Route::post('delete-credit-request', [App\Http\Controllers\CreditSolicitationController::class, 'destroy_credit_request']);

    Route::get('business-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'getbusinessCreditRequest']);
    Route::get('in-creation-business-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'getInCreationBusinessCreditRequest']);
    // Route::get('business-solicitation', [App\Http\Controllers\CreditSolicitationController::class, 'getbusinessCreditRequestPDFBKP']);

    Route::get('get-my-pending-payments', [App\Http\Controllers\ThirdPartController::class, 'get_imali_push_pendings_new25']);


    // LINKS de terminal em BUSINESS

    Route::post('imaliway/v2/payments', [App\Http\Controllers\ThirdPartController::class, 'c2bDepositStoreNew25']);
    Route::get('imaliway/v2/payments/status', [App\Http\Controllers\ThirdPartController::class, 'check_payment_requests_status_new25']);
    Route::post('imaliway/v2/payments/qrcode/refresh', [App\Http\Controllers\ThirdPartController::class, 'make_refresh_qrcode_payments_new25']);
    Route::get('imaliway/v2/payments/client/balance', [App\Http\Controllers\ThirdPartController::class, 'check_imali_account_balance_new25']);

    // LINKS de terminal em BUSINESS


    // Route::get('subaccount-extract-file/{card_number}/{startDate}/{endDate}', function ($subAccounNumber, $startDate, $endDate) {
    //     return (new SubAccountExport($subAccounNumber, $startDate, $endDate))->exportPDF();
    // });

    Route::get('subaccount-extract-file/{card_number}/{startDate?}/{endDate?}', function ($subAccounNumber, $startDate = null, $endDate = null) {
        return (new SubAccountExport($subAccounNumber, $startDate, $endDate))->exportPDF();
    });

    // Apagar ficheiro
    Route::post('delete-subaccount-extract', [App\Http\Controllers\SubAccountControlller::class, 'deleteGeneratedPDF']);


    // AI Comments
    Route::post('ai-comments', [App\Http\Controllers\Api\AdminController::class, 'create_ai_comment']);

    Route::get('users-transac-error', [App\Http\Controllers\Api\AdminController::class, 'users_transac_error']);
});

// Commitions 
Route::post('create-transaction-type', [App\Http\Controllers\TransactionCommitionController::class, 'create_transaction']);
Route::get('get-transaction-type', [App\Http\Controllers\TransactionCommitionController::class, 'get_transaction']);
Route::post('create-transaction-direction', [App\Http\Controllers\TransactionCommitionController::class, 'create_transaction_direction']);
Route::get('get-transaction-direction', [App\Http\Controllers\TransactionCommitionController::class, 'get_transaction_direction']);
Route::post('create-fees', [App\Http\Controllers\TransactionCommitionController::class, 'create_transaction_fees']);
Route::get('get-transaction-fees', [App\Http\Controllers\TransactionCommitionController::class, 'get_transaction_fees']);

// AI Comments
Route::get('get-ai-comments', [App\Http\Controllers\Api\AdminController::class, 'get_ai_comment']);

Route::get('get-extract-card-data', [App\Http\Controllers\ThirdPartController::class, 'card_export']);

Route::get('subaccount-extract-file-school/{card_number}/{startDate?}/{endDate?}', function ($subAccounNumber, $startDate = null, $endDate = null) {
    return (new SubAccountExportSchool($subAccounNumber, $startDate, $endDate))->exportPDF();
});

// Version APP 
Route::get('get-version', [App\Http\Controllers\IMaliAppVersionController::class, 'isAppVersionValid']);


// Gerar PDF
// Route::post('business-solicitation-file', [App\Http\Controllers\CreditSolicitationController::class, 'getbusinessCreditRequestPDF']);
// Route::post('business-solicitation-file', [App\Http\Controllers\CreditSolicitationController::class, 'getbusinessCreditRequestPDF']);

Route::get('business-solicitation-file/{card_number}', function ($subAccounNumber) {
    return (new CreditSolicitation($subAccounNumber))->exportPDF();
});


// business-solicitation

Route::post('create-marital-status', [App\Http\Controllers\CreditSolicitationController::class, 'maritalStatus']);
Route::post('create-bem-garantia', [App\Http\Controllers\CreditSolicitationController::class, 'bemGarantia']);
Route::post('create-agregado-familiar', [App\Http\Controllers\CreditSolicitationController::class, 'agregadoFamiliar']);
Route::post('create-despesa-mensal', [App\Http\Controllers\CreditSolicitationController::class, 'despesaMensal']);
Route::post('create-dados-negocio', [App\Http\Controllers\CreditSolicitationController::class, 'dadosNegocio']);
Route::post('create-dados-solicitante', [App\Http\Controllers\CreditSolicitationController::class, 'dadosSolicitante']);

// business-solicitation

// Create Link
Route::post('create-payment-link', [App\Http\Controllers\PaymentController::class, 'paymentLink']);
Route::get('get-store-payment-link/{store_account}', [App\Http\Controllers\PaymentController::class, 'getStorePaymentLink']);
Route::get('get-store-link/{link}', [App\Http\Controllers\PaymentController::class, 'getStoreLink']);

Route::get('all-subaccount-extract', [PaymentController::class, 'subAccountExtract']);

// GET ALL MOVIMENTS
Route::get('get-all-moviments', [App\Http\Controllers\Api\AdminController::class, 'getAllMoviments']);


Route::get('subaccounts-report', [App\Http\Controllers\StoreController::class, 'subAccountReport']);

// ? Criar subAccounts
Route::post('create-subaccounts', 'UserController@createSubAccountsTypes');
Route::get('get-subaccounts-types', 'UserController@getSubAccountsTypes');

// ? Webservices TVCabo
Route::get('tvcabo-client-validate', 'UserController@tvcaboCheckClient');
// ? Webservices TVCabo


//? reset PIN
Route::get('recuperar-pin', function () {
    return view('recuperar-pin');
});

Route::post('reset-pin', 'UserController@resetPIN')->name('reset-pin');
Route::get('definir-pin/{token}', 'UserController@definirPin')->name('definir-pin');
Route::post('salvar-pin', 'UserController@salvarPin')->name('salvar-pin');

// Route::get('pagina-erro', 'UserController@paginaErro')->name('pagina-erro');
//? reset PIN


//? Check Username
Route::get('check-username', 'UserController@checkUserName');

//? Check Phone
Route::get('check-phone-number', 'UserController@checkUserPhone');

//? Check Email
Route::get('check-email', 'UserController@checkUserEmail');

//? Get Wallets
Route::get('get-wallets', 'UserController@getWallets');

//? Check Transaction
//Route::post('check-withdrawall-transaction', 'UserController@checkWithdrawallTransaction');

//? Save WithDrawalls
//Route::post('save-withdrawalls', 'UserController@createWithDrawalls');

Route::get('wallet-csv', function () {

    $data = new \App\Exports\WalletExport();

    $date = date('Y') . date('m') . date('d');
    $hours = date('H') . date('i') . date('s');
    $fileName = "Transac_iMali_" . $date . "-" . $hours  . '.csv';

    file_put_contents(storage_path('/app/template/' . $fileName), file_get_contents(storage_path('/app/template/template.csv')));

    $file = fopen(storage_path('/app/template/' . $fileName), 'a') or die('unable to open file');

    foreach ($data->collection() as $key => $value) {
        $text = $value['value' . $key] . "\n";
        fwrite($file, $text);
    }

    fclose($file);

    rename(storage_path('/app/template/' . $fileName), storage_path('/app/downloads/' . $fileName));

    $filePath = "/downloads/" . $fileName;
    $uploadPath = storage_path('app' . $filePath);

    if (count($data->collection()) === 0) return print("No data found!");

    $filePath = str_replace('\\', '/', $uploadPath);

    //ENCRIPTAR FICHEIRO
    $commands = explode(",", "gpg --homedir /home/paytek/.gnupg --recipient einstein.bata@mozabanco.co.mz --encrypt " . $filePath . "," . "mv " . $filePath . ".gpg" . " /var/sftp/uploads_mozabanco/imali_transac_files/" . $fileName . ".gpg");

    foreach ($commands as $command) {
        exec($command, $output, $returnDir);
        if ($returnDir === 0) {
            echo 'Command executed successfully!';
        } else {
            echo 'Command execution failed.';
        }
    }


    //? actualizar os dados para pending..
    foreach ($data->collection() as $key => $value) {

        $transacData = explode(",", $value['value' . $key]);

        $phoneOrnib = $transacData[0];

        $phoneOrnibLength = strlen($phoneOrnib);

        if ($phoneOrnibLength == 9) {
            \App\WithdrawalsRequest::query()
                ->where('phone', $phoneOrnib)
                ->where('status', 'new')
                ->update(['status' => 'pending']);
        } else if ($phoneOrnibLength == 21) {
            \App\WithdrawalsRequest::query()
                ->where('nib', $phoneOrnib)
                ->where('status', 'new')
                ->update(['status' => 'pending']);
        }
    }

    return "Done.";
});

Route::get('get-contacts3', 'ImaliAccountController@getContacts2');
// TESTES


//FIM DOS TESTES

Route::post('test/save-store', 'ComercianteController@saveLoja');

Route::get('est', 'DashboardController@getMyStatics');

//Route::post('buy-voucher', 'TopUpController@buyVoucher');
Route::post('buy-voucher-advice', 'TopUpController@buyVoucherWithAdvice');

Route::get('get-voucher-list', 'TopUpController@getVoucherList');
//Route::post('buy-voucher-direct', 'TopUpController@buyVoucherDirectRecharge');
Route::get('get-voucher-list-local/{id}', 'TopUpController@getVoucherListLocal');
Route::get('get-voucher-types', 'TopUpController@getVoucherTypes');
Route::post('save-voucher-type', 'TopUpController@saveVoucherType');
Route::get('get-voucher-tv', 'TopUpController@getVoucherTv');

//Route::post('recarga-test', 'RecargaAquiController@getVouchers');
Route::post('recarga-test', 'RecargaAquiController@secureSocket');

Route::get('secure-socket', 'RecargaAquiController@secureSocket');


Route::get('send-sms', 'ProfitController@sendSMS');

Route::post('recharge-mpesa-java', 'ApiController@mPesaRecharge');

Route::get('get-users2', 'UserController@getUsers');

Route::post('kyc', 'UserKycController@check');
Route::post('kyc-recharge', 'UserKycController@makeCheck');
Route::post('kyc-payment-check', 'UserKycController@checkSenderPayment');


Route::post('close-store-day', 'DayCloseStoreController@dayCloseStore');