migrate to gtea from bistbucket

This commit is contained in:
2026-03-15 17:08:23 +07:00
commit 129ca2260c
3716 changed files with 566316 additions and 0 deletions

129
routes/admin.php Normal file
View File

@@ -0,0 +1,129 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin as ADMIN;
Route::group(['as' => 'admin.', 'prefix' => 'admin', 'middleware' => ['auth', 'admin']], function () {
Route::get('/', [ADMIN\DashboardController::class, 'index'])->name('dashboard.index');
Route::get('/get-dashboard', [ADMIN\DashboardController::class, 'getDashboardData'])->name('dashboard.data');
Route::get('/yearly-subscriptions', [ADMIN\DashboardController::class, 'yearlySubscriptions'])->name('dashboard.subscriptions');
Route::get('/plans-overview', [ADMIN\DashboardController::class, 'plansOverview'])->name('dashboard.plans-overview');
// Website settings
Route::resource('website-settings',Admin\AcnooWebSettingController::class)->only('index', 'update');
// Features
Route::resource('features',Admin\AcnooFeatureController::class);
Route::post('features/status/{id}', [ADMIN\AcnooFeatureController::class,'status'])->name('features.status');
Route::post('features/delete-all', [ADMIN\AcnooFeatureController::class, 'deleteAll'])->name('features.delete-all');
// Interface
Route::resource('interfaces',Admin\AcnooInterfaceController::class);
Route::put('admin/interfaces/{interface}', [ADMIN\AcnooInterfaceController::class, 'update'])->name('interfaces.update');
Route::post('interfaces/status/{id}', [ADMIN\AcnooInterfaceController::class,'status'])->name('interfaces.status');
Route::post('interfaces/delete-all', [ADMIN\AcnooInterfaceController::class, 'deleteAll'])->name('interfaces.delete-all');
// Testimonial
Route::resource('testimonials',Admin\AcnooTestimonialController::class);
Route::post('testimonials/delete-all', [ADMIN\AcnooTestimonialController::class, 'deleteAll'])->name('testimonials.delete-all');
// Term And Condition Controller
Route::resource('term-conditions', ADMIN\AcnooTermConditionController::class)->only('index', 'store');
// Message
Route::resource('messages', Admin\AcnooMessageController::class)->only('index', 'destroy');
Route::post('messages/filter', [ADMIN\AcnooMessageController::class, 'acnooFilter'])->name('messages.filter');
Route::post('messages/delete-all', [ADMIN\AcnooMessageController::class, 'deleteAll'])->name('messages.delete-all');
Route::post('messages/filter', [Admin\AcnooMessageController::class, 'acnooFilter'])->name('messages.filter');
// Privacy And Policy Controller
Route::resource('privacy-policy', ADMIN\AcnooPrivacyPloicyController::class)->only('index', 'store');
// Blog Controller
Route::resource('blogs', Admin\AcnooBlogController::class);
Route::post('blogs/status/{id}', [ADMIN\AcnooBlogController::class,'status'])->name('blogs.status');
Route::post('blogs/delete-all', [ADMIN\AcnooBlogController::class, 'deleteAll'])->name('blogs.delete-all');
Route::get('blogs/comments/{id}', [ADMIN\AcnooBlogController::class, 'filterComment'])->name('blogs.filter.comment');
//Comment Controller
Route::resource('comments', Admin\AcnooCommentController::class);
Route::post('comments/delete-all', [ADMIN\AcnooCommentController::class, 'deleteAll'])->name('comments.delete-all');
Route::resource('users', ADMIN\UserController::class);
Route::post('users/status/{id}', [ADMIN\UserController::class,'status'])->name('users.status');
Route::post('users/delete-all', [ADMIN\UserController::class,'deleteAll'])->name('users.delete-all');
Route::resource('banners', ADMIN\AcnooBannerController::class)->except('show', 'edit', 'create');
Route::post('banners/status/{id}', [ADMIN\AcnooBannerController::class,'status'])->name('banners.status');
Route::post('banners/delete-all', [ADMIN\AcnooBannerController::class,'deleteAll'])->name('banners.delete-all');
//Subscription Plans
Route::resource('plans', ADMIN\AcnooPlanController::class)->except('show');
Route::post('plans/status/{id}', [ADMIN\AcnooPlanController::class,'status'])->name('plans.status');
Route::post('plans/delete-all', [ADMIN\AcnooPlanController::class, 'deleteAll'])->name('plans.delete-all');
// Business
Route::resource('business',ADMIN\AcnooBusinessController::class);
Route::put('business/upgrade-plan/{id}', [ADMIN\AcnooBusinessController::class, 'upgradePlan'])->name('business.upgrade.plan');
Route::post('business/status/{id}',[ADMIN\AcnooBusinessController::class,'status'])->name('business.status');
Route::post('business/delete-all', [ADMIN\AcnooBusinessController::class,'deleteAll'])->name('business.delete-all');
// Business Categories
Route::resource('business-categories',ADMIN\AcnooBusinessCategoryController::class)->except('show');
Route::post('business-categories/status/{id}',[ADMIN\AcnooBusinessCategoryController::class,'status'])->name('business-categories.status');
Route::post('business-categories/delete-all', [ADMIN\AcnooBusinessCategoryController::class,'deleteAll'])->name('business-categories.delete-all');
Route::resource('profiles', ADMIN\ProfileController::class)->only('index', 'update');
Route::resource('subscription-reports', ADMIN\SubscriptionReport::class)->only('index');
Route::resource('subscription-orders', ADMIN\AcnooSubscriptionController::class)->only('index');
Route::post('subscription-orders/reject/{id}',[ADMIN\AcnooSubscriptionController::class,'reject'])->name('subscription-orders.reject');
Route::post('subscription-orders/paid/{id}',[ADMIN\AcnooSubscriptionController::class,'paid'])->name('subscription-orders.paid');
Route::get('subscription-orders/get-invoice/{id}', [ADMIN\AcnooSubscriptionController::class, 'getInvoice'])->name('subscription-orders.invoice');
// Affiliates
Route::resource('affiliates',ADMIN\AcnooAffiliateController::class);
Route::post('affiliates/filter', [ADMIN\AcnooAffiliateController::class, 'acnooFilter'])->name('affiliates.filter');
Route::post('affiliates/status/{id}',[ADMIN\AcnooAffiliateController::class,'status'])->name('affiliates.status');
Route::post('affiliates/delete-all', [ADMIN\AcnooAffiliateController::class,'deleteAll'])->name('affiliates.delete-all');
// Affiliates Withdraw Request
Route::resource('affiliate-withdrawals',ADMIN\AcnooWithdrawRequestController::class)->only('index');
Route::post('affiliate-withdrawals/reject/{id}',[ADMIN\AcnooWithdrawRequestController::class,'reject'])->name('affiliate-withdrawals.reject');
Route::post('affiliate-withdrawals/paid/{id}',[ADMIN\AcnooWithdrawRequestController::class,'paid'])->name('affiliate-withdrawals.paid');
Route::post('affiliate-withdrawals/filter', [ADMIN\AcnooWithdrawRequestController::class, 'acnooFilter'])->name('affiliate-withdrawals.filter');
Route::post('affiliate-withdrawals/status/{id}',[ADMIN\AcnooWithdrawRequestController::class,'status'])->name('affiliate-withdrawals.status');
Route::post('affiliate-withdrawals/delete-all', [ADMIN\AcnooWithdrawRequestController::class,'deleteAll'])->name('affiliate-withdrawals.delete-all');
// Affiliates Report
Route::resource('affiliate-reports',ADMIN\AcnooAffiliateReportController::class)->only('index');
Route::post('affiliate-reports/filter', [ADMIN\AcnooAffiliateReportController::class, 'acnooFilter'])->name('affiliate-reports.filter');
// Roles & Permissions
Route::resource('roles', ADMIN\RoleController::class)->except('show');
Route::resource('permissions', ADMIN\PermissionController::class)->only('index', 'store');
// Settings
Route::resource('addons', ADMIN\AddonController::class)->only('index', 'store', 'show');
Route::resource('settings', ADMIN\SettingController::class)->only('index', 'update');
Route::resource('system-settings', ADMIN\SystemSettingController::class)->only('index', 'store');
// Gateway
Route::resource('gateways', ADMIN\GatewayController::class)->only('index', 'update');
Route::resource('manage-settings', ADMIN\AcnooSettingsManagerController::class)->only('index', 'store');
Route::post('manage-setting/domain', [ADMIN\AcnooSettingsManagerController::class,'domain'])->name('domain.setting');
Route::resource('currencies', ADMIN\AcnooCurrencyController::class)->except('show');
Route::post('currencies/filter', [ADMIN\AcnooCurrencyController::class, 'acnooFilter'])->name('currencies.filter');
Route::match(['get', 'post'], 'currencies/default/{id}', [ADMIN\AcnooCurrencyController::class, 'default'])->name('currencies.default');
Route::post('currencies/delete-all', [ADMIN\AcnooCurrencyController::class,'deleteAll'])->name('currencies.delete-all');
// Notifications manager
Route::prefix('notifications')->controller(ADMIN\NotificationController::class)->name('notifications.')->group(function () {
Route::get('/', 'mtIndex')->name('index');
Route::get('/{id}', 'mtView')->name('mtView');
Route::get('view/all/', 'mtReadAll')->name('mtReadAll');
});
});

95
routes/api.php Normal file
View File

@@ -0,0 +1,95 @@
<?php
use App\Http\Controllers\Api as Api;
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () {
Route::get('/module-check', [Api\Auth\AuthController::class, 'moduleCheck']);
Route::post('/sign-in', [Api\Auth\AuthController::class, 'login']);
Route::post('/submit-otp', [Api\Auth\AuthController::class, 'submitOtp']);
Route::post('/sign-up', [Api\Auth\AuthController::class, 'signUp']);
Route::post('/resend-otp', [Api\Auth\AuthController::class, 'resendOtp']);
Route::get('/otp-settings', [Api\Auth\AuthController::class, 'otpSettings']);
Route::post('/send-reset-code', [Api\Auth\AcnooForgotPasswordController::class, 'sendResetCode']);
Route::post('/verify-reset-code', [Api\Auth\AcnooForgotPasswordController::class, 'verifyResetCode']);
Route::post('/password-reset', [Api\Auth\AcnooForgotPasswordController::class, 'resetPassword']);
Route::apiResource('default-lang', Api\DefaultLangController::class)->only('index');
Route::group(['middleware' => ['auth:sanctum']], function () {
Route::get('update-expire-date', [Api\BusinessController::class, 'updateExpireDate']);
Route::get('summary', [Api\StatisticsController::class, 'summary']);
Route::get('dashboard', [Api\StatisticsController::class, 'dashboard']);
Route::apiResource('parties', Api\PartyController::class);
Route::apiResource('users', Api\AcnooUserController::class)->except('show');
Route::apiResource('units', Api\UnitController::class)->except('show');
Route::apiResource('brands', Api\AcnooBrandController::class)->except('show');
Route::apiResource('categories', Api\AcnooCategoryController::class)->except('show');
Route::apiResource('products', Api\AcnooProductController::class);
Route::apiResource('stocks', Api\StockController::class)->except('index', 'show');
Route::apiResource('business', Api\BusinessController::class)->only('index', 'store', 'update');
Route::apiResource('business-categories', Api\BusinessCategoryController::class)->only('index');
Route::apiResource('purchase', Api\PurchaseController::class);
Route::apiResource('sales', Api\AcnooSaleController::class);
Route::get('reports/loss-profit', [Api\AcnooReportController::class,'lossProfit']);
Route::get('reports/cashflow', [Api\AcnooReportController::class,'cashFlow']);
Route::get('reports/balance-sheet', [Api\AcnooReportController::class,'balanceSheetReport']);
Route::get('reports/subscription', [Api\AcnooReportController::class,'subscriptionReport']);
Route::get('reports/tax', [Api\AcnooReportController::class,'taxReport']);
Route::get('reports/bill-wise-profit', [Api\AcnooReportController::class,'billWiseProfitReport']);
Route::get('reports/product-sale-history', [Api\AcnooReportController::class,'productSaleHistory']);
Route::get('reports/product-sale-history/{id}', [Api\AcnooReportController::class,'productSaleHistoryDetails']);
Route::get('reports/product-purchase-history', [Api\AcnooReportController::class,'productPurchaseHistory']);
Route::get('reports/product-purchase-history/{id}', [Api\AcnooReportController::class,'productPurchaseHistoryDetails']);
Route::apiResource('sales-return', Api\SaleReturnController::class)->only('index', 'store', 'show');
Route::apiResource('purchases-return', Api\PurchaseReturnController::class)->only('index', 'store', 'show');
Route::apiResource('invoices', Api\AcnooInvoiceController::class)->only('index');
Route::apiResource('dues', Api\AcnooDueController::class)->only('index', 'store');
Route::get('invoice-wise-dues', [Api\AcnooDueController::class, 'invoiceWiseDue']);
Route::post('collect-invoice-due', [Api\AcnooDueController::class, 'collectInvoiceDue']);
Route::apiResource('expense-categories', Api\ExpenseCategoryController::class)->except('show');
Route::apiResource('expenses', Api\AcnooExpenseController::class)->only('index', 'store');
Route::apiResource('income-categories', Api\AcnooIncomeCategoryController::class)->except('show');
Route::apiResource('incomes', Api\AcnooIncomeController::class)->only('index', 'store');
Route::apiResource('banners', Api\AcnooBannerController::class)->only('index');
Route::apiResource('lang', Api\AcnooLanguageController::class)->only('index', 'store');
Route::apiResource('profile', Api\AcnooProfileController::class)->only('index', 'store');
Route::apiResource('plans', Api\AcnooSubscriptionsController::class)->only('index');
Route::apiResource('subscribes', Api\AcnooSubscribesController::class)->only('index');
Route::apiResource('currencies', Api\AcnooCurrencyController::class)->only('index', 'show');
Route::apiResource('vats', Api\AcnooVatController::class)->except('show');
Route::apiResource('payment-types', Api\PaymentTypeController::class)->except('show');
Route::apiResource('product-models', Api\ProducModelController::class)->except('show');
Route::apiResource('variations', Api\VariationController::class)->except('show');
Route::apiResource('racks', Api\RackController::class)->except('show');
Route::apiResource('shelfs', Api\ShelfController::class)->except('show');
Route::apiResource('banks', Api\BankController::class);
Route::apiResource('bank-transactions', Api\BankTransactionController::class);
Route::apiResource('cashes', Api\CashController::class);
Route::apiResource('cheques', Api\ChequeController::class)->except('update');
Route::post('cheque-reopen/{id}', [Api\ChequeController::class, 'reopen']);
Route::apiResource('product-settings', Api\ProductSettingsController::class)->only('index', 'store');
Route::get('product/generate-code', [Api\AcnooProductController::class, 'generateCode']);
Route::post('bulk-uploads', [Api\BulkUploadControler::class, 'store']);
Route::post('change-password', [Api\AcnooProfileController::class, 'changePassword'])->name('api.change-password');
Route::get('new-invoice', [Api\AcnooInvoiceController::class, 'newInvoice']);
Route::get('invoice-settings', [Api\BusinessInvoiceSettingController::class, 'index']);
Route::post('/invoice-settings/update', [Api\BusinessInvoiceSettingController::class, 'updateInvoice'])->name('invoice.update');
Route::post('/business-delete', [Api\BusinessController::class, 'deleteBusiness']);
Route::get('party-ledger/{party_id}', [Api\PartyController::class, 'partyLedger']);
Route::get('money-receipt/{id}', [Api\TransactionController::class, 'moneyReceipt']);
Route::apiResource('currency-settings', Api\BusinessCurrencySettingController::class)->only('index', 'store');
Route::apiResource('transactions', Api\TransactionController::class)->only('index');
Route::get('/sign-out', [Api\Auth\AuthController::class, 'signOut']);
Route::get('/refresh-token', [Api\Auth\AuthController::class, 'refreshToken']);
});
});

40
routes/auth.php Normal file
View File

@@ -0,0 +1,40 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\NewPasswordController;
use App\Http\Controllers\Auth\VerifyEmailController;
use App\Http\Controllers\Auth\RegisteredUserController;
use App\Http\Controllers\Auth\PasswordResetLinkController;
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\EmailVerificationNotificationController;
Route::post('register', [RegisteredUserController::class, 'store'])->name('register');
Route::post('business-setup', [RegisteredUserController::class, 'businessSetup'])->name('business-setup');
Route::post('/otp-resend', [RegisteredUserController::class, 'otpResend'])->name('otp-resend');
Route::post('/otp-submit', [RegisteredUserController::class, 'otpSubmit'])->name('otp-submit');
Route::middleware('guest')->group(function () {
Route::get('login', [AuthenticatedSessionController::class, 'create'])->name('login');
Route::post('login', [AuthenticatedSessionController::class, 'store']);
Route::get('forgot-password', [PasswordResetLinkController::class, 'create'])->name('password.request');
Route::post('forgot-password', [PasswordResetLinkController::class, 'store'])->name('password.email');
Route::get('reset-password/{token}', [NewPasswordController::class, 'create'])->name('password.reset');
Route::post('reset-password', [NewPasswordController::class, 'store'])->name('password.store');
});
Route::middleware('auth')->group(function () {
Route::get('verify-email/{id}/{hash}', VerifyEmailController::class)
->middleware(['signed', 'throttle:6,1'])
->name('verification.verify');
Route::post('email/verification-notification', [EmailVerificationNotificationController::class, 'store'])
->middleware('throttle:6,1')
->name('verification.send');
Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])
->name('logout');
});

18
routes/channels.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
use Illuminate\Support\Facades\Broadcast;
/*
|--------------------------------------------------------------------------
| Broadcast Channels
|--------------------------------------------------------------------------
|
| Here you may register all of the event broadcasting channels that your
| application supports. The given channel authorization callbacks are
| used to check if an authenticated user can listen to the channel.
|
*/
Broadcast::channel('App.Models.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});

18
routes/console.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
use Illuminate\Support\Facades\Artisan;
/*
|--------------------------------------------------------------------------
| Console Routes
|--------------------------------------------------------------------------
|
| This file is where you may define all of your Closure based console
| commands. Each Closure is bound to a command instance allowing a
| simple approach to interacting with each command's IO methods.
|
*/
Artisan::command('demo:reset', function () {
restorePublicImages();
})->describe('Restore images demo images.');

142
routes/web.php Normal file
View File

@@ -0,0 +1,142 @@
<?php
use App\Models\Stock;
use App\Models\Option;
use App\Models\Product;
use App\Http\Controllers as Web;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\Artisan;
Route::get('/', [Web\WebController::class, 'index'])->name('home');
Route::resource('blogs', Web\BlogController::class)->only('index', 'show', 'store');
Route::get('/about-us', [Web\AboutController::class, 'index'])->name('about.index');
Route::get('/plans', [Web\PlanController::class, 'index'])->name('plan.index');
// Business Signup
Route::get('/get-business-categories', [Web\AcnooBusinessController::class, 'getBusinessCategories'])->name('get-business-categories');
Route::post('/businesses', [Web\AcnooBusinessController::class, 'store'])->name('business.store');
Route::post('/verify-code', [Web\AcnooBusinessController::class, 'verifyCode'])->name('business.verify-code');
Route::get('/data-deletion', [Web\DataDeletionController::class, 'index'])->name('term.index');
Route::get('/terms-conditions', [Web\TermServiceController::class, 'index'])->name('term.index');
Route::get('/privacy-policy', [Web\PolicyController::class, 'index'])->name('policy.index');
Route::get('/contact-us', [Web\ContactController::class, 'index'])->name('contact.index');
Route::post('/contact/store', [Web\ContactController::class, 'store'])->name('contact.store');
// Payment Routes Start
Route::get('/payments-gateways/{plan_id}/{business_id}', [Web\PaymentController::class, 'index'])->name('payments-gateways.index');
Route::post('/payments/{plan_id}/{gateway_id}', [Web\PaymentController::class, 'payment'])->name('payments-gateways.payment');
Route::get('/payment/success', [Web\PaymentController::class, 'success'])->name('payment.success');
Route::get('/payment/failed', [Web\PaymentController::class, 'failed'])->name('payment.failed');
Route::post('ssl-commerz/payment/success', [Web\PaymentController::class, 'sslCommerzSuccess']);
Route::post('ssl-commerz/payment/failed', [Web\PaymentController::class, 'sslCommerzFailed']);
Route::get('/order-status', [Web\PaymentController::class, 'orderStatus'])->name('order.status');
Route::group([
'namespace' => 'App\Library',
], function () {
Route::get('/payment/paypal', 'Paypal@status');
Route::get('/payment/mollie', 'Mollie@status');
Route::post('/payment/paystack', 'Paystack@status')->name('paystack.status');
Route::get('/paystack', 'Paystack@view')->name('paystack.view');
Route::get('/razorpay/payment', 'Razorpay@view')->name('razorpay.view');
Route::post('/razorpay/status', 'Razorpay@status');
Route::get('/mercadopago/pay', 'Mercado@status')->name('mercadopago.status');
Route::get('/payment/flutterwave', 'Flutterwave@status');
Route::get('/payment/thawani', 'Thawani@status');
Route::get('/payment/instamojo', 'Instamojo@status');
Route::get('/payment/toyyibpay', 'Toyyibpay@status');
Route::get('/phonepe/status', 'PhonePe@status')->name('phonepe.status');
Route::post('/paytm/status', 'Paytm@status')->name('paytm.status');
Route::get('/tap-payment/status', 'TapPayment@status')->name('tap-payment.status');
});
// Payment Routes End
Route::get('/cache-clear', function () {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('route:clear');
Artisan::call('view:clear');
return back()->with('success', __('Cache has been cleared.'));
});
Route::get('/migrate', function () {
Artisan::call('migrate');
return back()->with('success', __('Migrated.'));
});
Route::get('/update', function () {
$version = Option::where('key', 'version')->value('value') ?? null;
// Run migrations if needed
Artisan::call('migrate');
if (file_exists(base_path('storage/installed'))) {
touch(base_path('vendor/autoload1.php'));
}
if (Schema::hasTable('stocks') && !Stock::exists()) {
Product::chunk(500, function ($products) {
$data = [];
foreach ($products as $product) {
$data[] = [
'business_id' => $product->business_id,
'product_id' => $product->id,
'expire_date' => $product->expire_date ?? null,
'productStock' => $product->productStock,
'profit_percent' => $product->profit_percent,
'productDealerPrice' => $product->productDealerPrice,
'productPurchasePrice' => $product->productPurchasePrice,
'productSalePrice' => $product->productSalePrice,
'productWholeSalePrice' => $product->productWholeSalePrice,
'created_at' => $product->created_at,
'updated_at' => $product->updated_at,
];
}
Stock::insert($data);
});
}
// Run update file if version is not 5.5
if ($version == 5.4) {
$updateFile = base_path('updates/v5_5_update.php');
if (file_exists($updateFile)) {
require $updateFile;
if (function_exists('runUpdate')) {
runUpdate();
}
}
}
// Run update file for version 6.0 only
if ($version == '5.6.2') {
$v6_0_file = base_path('updates/v6_0_update.php');
if (file_exists($v6_0_file)) {
require $v6_0_file;
if (function_exists('runUpdateForV6')) {
runUpdateForV6();
}
}
}
// Update version
Option::updateOrCreate(
['key' => 'version'],
['value' => '6.1']
);
// Clear caches
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('route:clear');
Artisan::call('view:clear');
return redirect('/')->with('message', __('System updated successfully.'));
});
require __DIR__ . '/auth.php';