initial: bootstrap from BukidBountyApp base
This commit is contained in:
28
routes/api.php
Normal file
28
routes/api.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Http\Controllers\IndexController;
|
||||
use App\Http\Controllers\RemoteLogoutController;
|
||||
use App\Http\Controllers\Market\ActivityController;
|
||||
use App\Http\Controllers\Market\PerformanceController;
|
||||
use Hypervel\Support\Facades\Route;
|
||||
|
||||
Route::any('/', [IndexController::class, 'index']);
|
||||
|
||||
// Remote logout routes
|
||||
Route::post('/remote/logout', [RemoteLogoutController::class, 'logout']);
|
||||
|
||||
// Activity routes
|
||||
Route::get('/activity/recent', [ActivityController::class, 'getRecent']);
|
||||
Route::get('/activity/search', [ActivityController::class, 'search']);
|
||||
|
||||
// Performance / load-testing endpoints — token-gated via env PERF_API_TOKEN.
|
||||
// Callable from a client machine over curl with header `X-Perf-Token: <token>`.
|
||||
// Disabled (403) if PERF_API_TOKEN is unset.
|
||||
Route::get('/perf/ping', [PerformanceController::class, 'ping']);
|
||||
Route::post('/perf/seed/users', [PerformanceController::class, 'seedUsers']);
|
||||
Route::post('/perf/seed/stores', [PerformanceController::class, 'seedStores']);
|
||||
Route::post('/perf/seed/products', [PerformanceController::class, 'seedProducts']);
|
||||
Route::post('/perf/seed/batch', [PerformanceController::class, 'seedBatch']);
|
||||
Route::post('/perf/pos/simulate', [PerformanceController::class, 'simulatePos']);
|
||||
20
routes/channels.php
Normal file
20
routes/channels.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Hypervel\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;
|
||||
});
|
||||
23
routes/console.php
Normal file
23
routes/console.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Hypervel\Support\Facades\Artisan;
|
||||
use Hypervel\Support\Facades\Schedule;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| 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('hello', function () {
|
||||
$this->comment('Hypervel is awesome!');
|
||||
})->purpose('This is a demo closure command.');
|
||||
|
||||
// Schedule::command('hello')->everyFiveSeconds();
|
||||
95
routes/debug.php
Normal file
95
routes/debug.php
Normal file
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Hypervel\Support\Facades\Route;
|
||||
|
||||
use App\Http\Controllers\LoginController;
|
||||
use Hypervel\Support\Facades\Auth;
|
||||
|
||||
use App\Models\User;
|
||||
|
||||
use Hypervel\Support\Facades\Cache;
|
||||
|
||||
use Hypervel\Support\Facades\Config;
|
||||
|
||||
use Hypervel\Support\Facades\Response;
|
||||
|
||||
|
||||
use Hyperf\Redis\RedisFactory;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
use Hypervel\Support\Facades\Session;
|
||||
|
||||
use Hypervel\Http\Request;
|
||||
|
||||
|
||||
// Route::get('/dev-login/{mobile}', function ($mobile) {
|
||||
// $user = User::where('mobile_number', $mobile)->first();
|
||||
|
||||
// if (!$user) {
|
||||
// return response()->json(['success' => false, 'message' => 'User not found.'], 404);
|
||||
// }
|
||||
|
||||
// Auth::login($user);
|
||||
// // request()->session();
|
||||
|
||||
// request()->session()->regenerate();
|
||||
// return response()->json([
|
||||
// 'success' => true,
|
||||
// 'message' => "Logged in as {$user->name} (ID: {$user->id})",
|
||||
// 'session_id' => request()->session()->getId(),
|
||||
// 'session_data' => request()->session()->all(),
|
||||
// 'cookie_name' => config('session.cookie'),
|
||||
// 'auth_check' => Auth::check(),
|
||||
// 'user' => Auth::user(),
|
||||
// ]);
|
||||
// }, ['middleware' => 'web']);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Route::get('/debug-redis-config', function () {
|
||||
// return response()->json([
|
||||
// 'redis' => Config::get('database.redis'),
|
||||
// ]);
|
||||
// }, ['middleware' => 'web']);
|
||||
|
||||
|
||||
// Route::get('/test-redis', function (RedisFactory $redisFactory): ResponseInterface {//works
|
||||
// $redis = $redisFactory->get('default');
|
||||
// $redis->set('test_key', '✅ Redis connection works!');
|
||||
// $value = $redis->get('test_key');
|
||||
|
||||
// return Response::json(['value' => $value]);
|
||||
// }, ['middleware' => 'web']);
|
||||
|
||||
// Route::get('/test-redis-cache', function () {//same error about ivalid redis proxy
|
||||
// Cache::put('redis_test_key', 'bukidbounty_works', 600); // store for 10 mins
|
||||
// return response()->json(['status' => 'Cache written to Redis']);
|
||||
// }, ['middleware' => 'web']);
|
||||
|
||||
|
||||
// Route::get('/session-check', function () {
|
||||
// return response()->json([
|
||||
// 'authenticated' => Auth::check(),
|
||||
// 'user' => Auth::user(),
|
||||
// 'session_id' => Session::getId(),
|
||||
// ]);
|
||||
// });
|
||||
|
||||
|
||||
// Route::get('/debug-session', function (Request $request) {
|
||||
// return Response::json([
|
||||
// 'session_id' => $request->session()->getId(),
|
||||
// 'session_data' => $request->session()->all(),
|
||||
// 'cookie_name' => config('session.cookie'),
|
||||
// 'auth_check' => Auth::check(),
|
||||
// 'user' => Auth::user(),
|
||||
// 'acct_type' => Auth::user()->acct_type,
|
||||
// ]);
|
||||
// });
|
||||
|
||||
|
||||
// Route::get('/session-check', fn() => response()->json(session()->all()), ['middleware' => 'web']);
|
||||
12
routes/store.php
Normal file
12
routes/store.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
use App\Enums\UserTypes;
|
||||
use Hypervel\Support\Facades\Route;
|
||||
use Hypervel\Support\Facades\Auth;
|
||||
|
||||
Route::post('/Store/New', [\App\Http\Controllers\Market\StoreController::class, 'store'], ['middleware' => 'auth']);
|
||||
|
||||
Route::post('/New', function () {
|
||||
|
||||
}
|
||||
);
|
||||
930
routes/web.php
Normal file
930
routes/web.php
Normal file
@@ -0,0 +1,930 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Enums\UserActions;
|
||||
use App\Http\Controllers\Helpers\Permissions\UserPermissions;
|
||||
use App\Http\Controllers\Market\CartController;
|
||||
use App\Http\Controllers\Market\ProductController;
|
||||
use App\Http\Controllers\Market\StoreController;
|
||||
use App\Http\Controllers\Market\ShipmentController;
|
||||
use App\Http\Controllers\Market\FarmerController;
|
||||
use App\Http\Controllers\Pages\AccountSettingsPageController;
|
||||
use App\Http\Controllers\Pages\TransferMyCreditPageController;
|
||||
use App\Http\Controllers\Pages\UserModifyAdminPageController;
|
||||
use App\Http\Controllers\Pages\UserListPageController;
|
||||
use App\Http\Controllers\Photos\PhotoGallery;
|
||||
use App\Http\Controllers\UserManagement\CreateUserControllerUltimate;
|
||||
use App\Models\Market\Store;
|
||||
use Hyperf\Codec\Json;
|
||||
use Hypervel\Support\Facades\Route;
|
||||
use Hypervel\Support\Facades\Auth;
|
||||
use App\Http\Controllers\LoginController;
|
||||
|
||||
use App\Models\User;
|
||||
|
||||
use Hypervel\Support\Facades\Cache;
|
||||
|
||||
use Hypervel\Support\Facades\Config;
|
||||
|
||||
use Hypervel\Support\Facades\Response;
|
||||
|
||||
use App\Enums\UserTypes;
|
||||
|
||||
use Hyperf\Redis\RedisFactory;
|
||||
use Hypervel\Support\Facades\Storage;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
use Hypervel\Support\Facades\Session;
|
||||
|
||||
use Hypervel\Http\Request;
|
||||
use App\Http\Controllers\viewHelperController;
|
||||
|
||||
use Hypervel\Support\Facades\File;
|
||||
use App\Http\Controllers\PageMemoryController;
|
||||
use App\Http\Controllers\FilesMainController;
|
||||
|
||||
use App\Models\FileContent;
|
||||
use routes\Market\Web_stores;
|
||||
use routes\Web_debug;
|
||||
use routes\Web_files;
|
||||
use App\Http\Controllers\Support\Inertia;
|
||||
use App\Http\Controllers\Support\VueRouteMap;
|
||||
use App\Http\Controllers\Support\AnnouncementController;
|
||||
use App\Http\Controllers\Support\SSEController;
|
||||
use App\Http\Controllers\Property\PropertyManagementController;
|
||||
use App\Http\Controllers\Accounting\AccountingController;
|
||||
use App\Http\Controllers\Subscription\SubscriptionPlanController;
|
||||
use App\Http\Controllers\Subscription\SubscriptionController;
|
||||
|
||||
VueRouteMap::registerRoutes();
|
||||
|
||||
Route::get('/health', function () {
|
||||
$checks = [];
|
||||
$allOk = true;
|
||||
|
||||
try {
|
||||
\Hypervel\Support\Facades\DB::select('SELECT 1');
|
||||
$checks['db'] = 'ok';
|
||||
} catch (\Throwable $e) {
|
||||
$checks['db'] = 'fail: ' . $e->getMessage();
|
||||
$allOk = false;
|
||||
}
|
||||
|
||||
try {
|
||||
\Hypervel\Support\Facades\Redis::ping();
|
||||
$checks['redis'] = 'ok';
|
||||
} catch (\Throwable $e) {
|
||||
$checks['redis'] = 'fail: ' . $e->getMessage();
|
||||
$allOk = false;
|
||||
}
|
||||
|
||||
if ($allOk) {
|
||||
return 'OK';
|
||||
}
|
||||
|
||||
return response()->json(['status' => 'degraded', 'checks' => $checks], 503);
|
||||
});
|
||||
|
||||
Route::get('/manifest.json', [\App\Http\Controllers\PwaManifestController::class, 'manifest']);
|
||||
|
||||
// Route::get('/', function () {
|
||||
// return view('layouts.default');
|
||||
// }, ['middleware' => 'auth']);
|
||||
|
||||
// Route::get('/app', function () {
|
||||
// $page = Inertia::render('Home');
|
||||
// return view('layouts.application-layout', ['page' => $page]);
|
||||
// }, ['middleware' => ['web', 'auth']]);
|
||||
|
||||
|
||||
Route::get('/home-data', function () {
|
||||
$userCount = \App\Models\User::count();
|
||||
$storeCount = \App\Models\Market\Store::where('is_active', true)->count();
|
||||
$pendingOrders = \App\Models\Market\PosSession::where('status', 'PENDING')->count();
|
||||
|
||||
/** @var \App\Models\User $user */
|
||||
$user = Auth::user();
|
||||
$personalBalance = $user->total_balance ?? 0;
|
||||
|
||||
$totalTransactionsNo = \App\Models\GlobalTransaction::count();
|
||||
$totalTransactionsPhp = \App\Models\GlobalTransaction::sum('amount');
|
||||
$projectedIncomeToday = \App\Models\GlobalTransaction::whereDate('created_at', today())
|
||||
->where('flow', \App\Enums\Market\TransactionFlow::INCOME->value)
|
||||
->sum('amount');
|
||||
|
||||
// Store-scoped today metrics (for STORE_OWNER / STORE_MANAGER dashboards).
|
||||
$acctType = $user?->acct_type instanceof \App\Enums\UserTypes
|
||||
? $user->acct_type
|
||||
: \App\Enums\UserTypes::tryFrom($user?->acct_type ?? '');
|
||||
$isBig3 = in_array($acctType, [
|
||||
\App\Enums\UserTypes::ULTIMATE,
|
||||
\App\Enums\UserTypes::SUPER_OPERATOR,
|
||||
\App\Enums\UserTypes::OPERATOR,
|
||||
], true);
|
||||
|
||||
$todayTxQuery = \App\Models\GlobalTransaction::whereDate('created_at', today());
|
||||
if (!$isBig3 && $user) {
|
||||
$storeIds = \App\Models\Market\Store::where('owner_id', $user->id)
|
||||
->orWhereHas('managers', fn ($q) => $q->where('user_id', $user->id))
|
||||
->pluck('id');
|
||||
$todayTxQuery->whereIn('store_id', $storeIds);
|
||||
}
|
||||
$transactionsTodayNo = (clone $todayTxQuery)->count();
|
||||
$cashFlowToday = (clone $todayTxQuery)
|
||||
->selectRaw('COALESCE(SUM(amount * flow), 0) as net')
|
||||
->value('net');
|
||||
$myStoresCount = !$isBig3 && $user
|
||||
? \App\Models\Market\Store::where('owner_id', $user->id)
|
||||
->orWhereHas('managers', fn ($q) => $q->where('user_id', $user->id))
|
||||
->count()
|
||||
: $storeCount;
|
||||
|
||||
$cooperativeTotalNo = 0;
|
||||
$cooperativeMembersNo = 0;
|
||||
$myCooperativesNo = 0;
|
||||
$pendingMembersNo = 0;
|
||||
if ($acctType === \App\Enums\UserTypes::COORDINATOR && $user) {
|
||||
$cooperativeTotalNo = \App\Models\Market\Organization::where('type', 'COOPERATIVE')->count();
|
||||
$cooperativeMembersNo = \App\Models\Market\CooperativeMember::whereHas('organization', fn ($q) => $q->where('created_by', $user->id))->count();
|
||||
$myCooperativesNo = \App\Models\Market\Organization::where('type', 'COOPERATIVE')->where('created_by', $user->id)->withCount('members')->count();
|
||||
$myCoopIds = \App\Models\Market\Organization::where('type', 'COOPERATIVE')->where('created_by', $user->id)->pluck('id');
|
||||
$pendingMembersNo = \App\Models\Market\CooperativeMember::whereIn('organization_id', $myCoopIds)->where('created_at', '>=', now()->subDays(7))->count();
|
||||
}
|
||||
|
||||
// Cooperative chapter dashboards (officer / member).
|
||||
$chapterInfo = null;
|
||||
$chapterMemberCount = 0;
|
||||
$childChapterCount = 0;
|
||||
$newMembers7d = 0;
|
||||
if ($acctType === \App\Enums\UserTypes::COOP_OFFICER && $user) {
|
||||
$myChapterMember = \App\Models\ChapterMember::join('chapters', 'chapters.id', 'chapter_members.chapter_id')
|
||||
->where('chapter_members.user_id', $user->id)->where('chapter_members.is_active', true)
|
||||
->orderByRaw("FIELD(chapters.level,'national','region','province','city','municipal','barangay')")
|
||||
->select('chapter_members.*', 'chapters.id as chapter_id_resolved', 'chapters.name as chapter_name', 'chapters.level as chapter_level', 'chapters.hashkey as chapter_hashkey', 'chapters.cooperative_id as chapter_coop_id')
|
||||
->first();
|
||||
if ($myChapterMember) {
|
||||
$myChapterId = (int) $myChapterMember->chapter_id_resolved;
|
||||
$chapterMemberCount = \App\Models\ChapterMember::where('chapter_id', $myChapterId)->where('is_active', true)->count();
|
||||
$childChapterCount = \App\Models\Chapter::where('parent_id', $myChapterId)->where('is_active', true)->count();
|
||||
$newMembers7d = \App\Models\ChapterMember::where('chapter_id', $myChapterId)->where('is_active', true)->where('created_at', '>=', now()->subDays(7))->count();
|
||||
$cooperativeHash = $myChapterMember->chapter_coop_id
|
||||
? \App\Models\Market\Organization::where('id', $myChapterMember->chapter_coop_id)->value('hashkey')
|
||||
: null;
|
||||
$chapterInfo = [
|
||||
'chapter_name' => $myChapterMember->chapter_name,
|
||||
'chapter_level' => $myChapterMember->chapter_level,
|
||||
'chapter_hashkey' => $myChapterMember->chapter_hashkey,
|
||||
'cooperative_hash' => $cooperativeHash,
|
||||
];
|
||||
}
|
||||
}
|
||||
if ($acctType === \App\Enums\UserTypes::COOP_MEMBER && $user) {
|
||||
$myChapterMember = \App\Models\ChapterMember::join('chapters', 'chapters.id', 'chapter_members.chapter_id')
|
||||
->where('chapter_members.user_id', $user->id)->where('chapter_members.is_active', true)
|
||||
->orderByRaw("FIELD(chapters.level,'barangay','city','municipal','province','region','national')")
|
||||
->select('chapter_members.*', 'chapters.id as chapter_id_resolved', 'chapters.name as chapter_name', 'chapters.level as chapter_level', 'chapters.cooperative_id as chapter_coop_id')
|
||||
->first();
|
||||
if ($myChapterMember) {
|
||||
$myChapterId = (int) $myChapterMember->chapter_id_resolved;
|
||||
$chapterMemberCount = \App\Models\ChapterMember::where('chapter_id', $myChapterId)->where('is_active', true)->count();
|
||||
$cooperativeName = $myChapterMember->chapter_coop_id
|
||||
? \App\Models\Market\Organization::where('id', $myChapterMember->chapter_coop_id)->value('name')
|
||||
: null;
|
||||
$chapterInfo = [
|
||||
'chapter_name' => $myChapterMember->chapter_name,
|
||||
'chapter_level' => $myChapterMember->chapter_level,
|
||||
'cooperative_name' => $cooperativeName,
|
||||
'member_count' => $chapterMemberCount,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$isOperator = $acctType === \App\Enums\UserTypes::OPERATOR;
|
||||
$operatorStoreIds = [];
|
||||
if ($isOperator && $user) {
|
||||
$operatorStoreIds = \App\Models\Market\Store::where('owner_id', $user->id)
|
||||
->orWhereHas('managers', fn($q) => $q->where('user_id', $user->id))
|
||||
->pluck('id')->toArray();
|
||||
}
|
||||
$activePosSessionsNo = $isOperator
|
||||
? \App\Models\Market\PosSession::whereIn('store_id', $operatorStoreIds)->where('status', 'PENDING')->count()
|
||||
: \App\Models\Market\PosSession::where('status', 'PENDING')->count();
|
||||
$managedStoresNo = $isOperator ? count($operatorStoreIds) : $storeCount;
|
||||
$todayRevenueOperator = $isOperator
|
||||
? \App\Models\GlobalTransaction::whereDate('created_at', today())
|
||||
->whereIn('store_id', $operatorStoreIds)
|
||||
->where('flow', \App\Enums\Market\TransactionFlow::INCOME->value)
|
||||
->sum('amount')
|
||||
: $projectedIncomeToday;
|
||||
|
||||
$props = [
|
||||
'props' => [
|
||||
'user' => $user,
|
||||
'stats' => [
|
||||
'total_users_no' => $userCount,
|
||||
'active_stores_no' => $storeCount,
|
||||
'pending_orders_no' => $pendingOrders,
|
||||
'total_balance_php' => number_format((float) $personalBalance, 2),
|
||||
'total_transactions_no' => $totalTransactionsNo,
|
||||
'total_transactions_php' => number_format((float) $totalTransactionsPhp, 2),
|
||||
'projected_income_today' => number_format((float) $projectedIncomeToday, 2),
|
||||
'transactions_today_no' => $transactionsTodayNo,
|
||||
'cash_flow_today_php' => number_format((float) $cashFlowToday, 2),
|
||||
'my_stores_no' => $myStoresCount,
|
||||
'cooperative_total_no' => $cooperativeTotalNo,
|
||||
'cooperative_members_no' => $cooperativeMembersNo,
|
||||
'my_cooperatives_no' => $myCooperativesNo,
|
||||
'pending_members_no' => $pendingMembersNo,
|
||||
'active_pos_sessions_no' => $activePosSessionsNo,
|
||||
'managed_stores_no' => $managedStoresNo,
|
||||
'today_revenue_php' => number_format((float) $todayRevenueOperator, 2),
|
||||
'chapter_member_count' => $chapterMemberCount,
|
||||
'child_chapter_count' => $childChapterCount,
|
||||
'new_members_7d' => $newMembers7d,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
if ($chapterInfo !== null) {
|
||||
$props['props']['chapter_info'] = $chapterInfo;
|
||||
}
|
||||
|
||||
return response()->json($props);
|
||||
});
|
||||
|
||||
// Route::get('/{page}', [viewHelperController::class, 'servePageFragment'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
|
||||
Route::get('/p/{page}/s/{data}', [viewHelperController::class, 'servePageFragmentWithTemplate'], ['middleware' => 'auth']);
|
||||
Route::get('/p/{page}/s/', [viewHelperController::class, 'servePageFragmentWithTemplate'], ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/login', function (\Hypervel\Http\Request $request) {
|
||||
if (Auth::check() && !$request->has('logged_out')) {
|
||||
return redirect('/');
|
||||
}
|
||||
$page = Inertia::render('Auth.Login', []);
|
||||
return view('layouts.application-layout', compact('page'));
|
||||
}, ['middleware' => 'web']);
|
||||
|
||||
Route::get('/sp/login', function (\Hypervel\Http\Request $request) {
|
||||
if (Auth::check() && !$request->has('logged_out')) {
|
||||
return redirect('/');
|
||||
}
|
||||
$page = Inertia::render('Auth.Login', []);
|
||||
return view('layouts.application-layout', compact('page'));
|
||||
}, ['middleware' => 'web']);
|
||||
|
||||
Route::get('/old/login', function () {
|
||||
return view('login');
|
||||
}, ['middleware' => 'web']);
|
||||
|
||||
Route::get('/get/isloggedin', function () {
|
||||
$isLoggedIn = Auth::check();
|
||||
if ($isLoggedIn) {
|
||||
$user = Auth::user();
|
||||
if (!$user || !$user->active) {
|
||||
Auth::logout();
|
||||
if (session() && method_exists(session(), 'flush')) {
|
||||
session()->flush();
|
||||
}
|
||||
return Response::json(['isloggedin' => false]);
|
||||
}
|
||||
|
||||
// Check Redis forced_logout flag (set by admin remote-logout)
|
||||
$hashkey = $user->hashkey ?? null;
|
||||
if ($hashkey && \Hypervel\Support\Facades\Redis::get("forced_logout:{$hashkey}")) {
|
||||
\Hypervel\Support\Facades\Redis::del("forced_logout:{$hashkey}");
|
||||
Auth::logout();
|
||||
if (session() && method_exists(session(), 'flush')) {
|
||||
session()->flush();
|
||||
}
|
||||
return Response::json(['isloggedin' => false]);
|
||||
}
|
||||
}
|
||||
return Response::json(['isloggedin' => $isLoggedIn]);
|
||||
}, ['middleware' => 'web']);
|
||||
|
||||
Route::get('/sse/stream', [SSEController::class, 'stream'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
Route::get('/get/user/acct-type', function () {
|
||||
$user = Auth::user();
|
||||
return Response::json([
|
||||
'acct_type' => $user->acct_type,
|
||||
]);
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
|
||||
Route::get('/get/isExec', function () {
|
||||
$execCommand = Auth::user()->exec_command ?? '';
|
||||
$user = User::findOrFail(Auth::id());
|
||||
$user->exec_command = '';
|
||||
$user->save();
|
||||
return Response::raw($execCommand);
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
|
||||
Route::post('/post/loginnow', [LoginController::class, 'authenticate'], ['middleware' => 'web']);
|
||||
Route::get('/session/extend', [LoginController::class, 'extendcurrentSession'], ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/sp/listviews', function () {
|
||||
return Response::json(viewHelperController::getAllViews());
|
||||
}, ['middleware' => 'ultimate']);
|
||||
|
||||
Route::get('/debug/asset', function () {
|
||||
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/debug/assetview', function () {
|
||||
return view('adminlte');
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
Route::get('/account_settings/details', [AccountSettingsPageController::class, 'listDetails'], ['middleware' => ['web', 'auth']]);
|
||||
Route::post('/User/Settings/Details', [AccountSettingsPageController::class, 'listSettings'], ['middleware' => ['web', 'auth']]);
|
||||
Route::post('/user/changemypassword', [AccountSettingsPageController::class, 'changepassword'], ['middleware' => ['web', 'auth']]);
|
||||
Route::post('/user/updatephoto', [AccountSettingsPageController::class, 'updatePhoto'], ['middleware' => ['web', 'auth']]);
|
||||
Route::post('/User/Settings/Run/Scripts', [AccountSettingsPageController::class, 'listRunScripts'], ['middleware' => ['web', 'auth']]);
|
||||
|
||||
Route::get('/user/note/content', [AccountSettingsPageController::class, 'getUserNotes'], ['middleware' => ['web', 'auth']]);
|
||||
Route::get('/user/note/dismiss', [AccountSettingsPageController::class, 'clearUserNotes'], ['middleware' => ['web', 'auth']]);
|
||||
|
||||
Route::get('/go/logoutnow', [AccountSettingsPageController::class, 'logoutnow'], ['middleware' => 'auth']);
|
||||
Route::get('/logout', [AccountSettingsPageController::class, 'logoutnow'], ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/admin/users/list', [UserListPageController::class, 'Response_ListChildrenofCurrentUser'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/details', [UserModifyAdminPageController::class, 'Response_UserDetails'], ['middleware' => 'auth']);
|
||||
Route::post('/user/details/children', [UserModifyAdminPageController::class, 'Response_childrenofTargetUser'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/children/direct', [UserModifyAdminPageController::class, 'Response_directChildrenofTargetUser'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
Route::post('/admin/user/disable', [UserModifyAdminPageController::class, 'Response_DisableUser'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/enable', [UserModifyAdminPageController::class, 'Response_EnableUser'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/delete', [UserModifyAdminPageController::class, 'Response_DeleteUser'], ['middleware' => 'auth']);
|
||||
|
||||
Route::post('/admin/user/note/content', [UserModifyAdminPageController::class, 'Response_ViewNotes'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/note/delete', [UserModifyAdminPageController::class, 'Response_DeleteNotes'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/note/update', [UserModifyAdminPageController::class, 'Response_ReplaceNotes'], ['middleware' => 'auth']);
|
||||
|
||||
Route::post('/admin/user/exec/content', [UserModifyAdminPageController::class, 'Response_ViewExec'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/exec/update', [UserModifyAdminPageController::class, 'Response_ReplaceExec'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/exec/delete', [UserModifyAdminPageController::class, 'Response_DeleteExec'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
Route::post('/admin/user/details/update', [UserModifyAdminPageController::class, 'Response_UpdateUserDetails'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/password/reset', [UserModifyAdminPageController::class, 'Response_ResetUserPassword'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/logout/force/user', [UserModifyAdminPageController::class, 'Response_LogoutUser'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/roles/get', [UserModifyAdminPageController::class, 'Response_UserRoles'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/store/detach', [UserModifyAdminPageController::class, 'Response_DetachStore'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/roles/all', [UserModifyAdminPageController::class, 'Response_AllRoles'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/roles/change', [UserModifyAdminPageController::class, 'Response_ChangeUserRoles'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/session/extend', [UserModifyAdminPageController::class, 'Response_ExtendUserSessions'], ['middleware' => 'auth']);
|
||||
|
||||
Route::post('/admin/list/usertype/create', [CreateUserControllerUltimate::class, 'listAllUserTypesforSelectHTML'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/list/numbers/hash', [CreateUserControllerUltimate::class, 'listAllUsersforParentSelectHTML'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/number/exists', [CreateUserControllerUltimate::class, 'checkIfUserMobileNumberExists'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/username/exists', [CreateUserControllerUltimate::class, 'checkIfUsernameExists'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/user/create', [CreateUserControllerUltimate::class, 'CreateUser'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
Route::post('/user/sendmycredit', [TransferMyCreditPageController::class, 'Response_TransferMyCredit'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
// ── Subscriptions (user-facing) ──────────────────────────────────────────
|
||||
Route::get('/subscription/plans', [SubscriptionController::class, 'listAvailablePlans'], ['middleware' => 'auth']);
|
||||
Route::get('/subscription/my', [SubscriptionController::class, 'mySubscription'], ['middleware' => 'auth']);
|
||||
Route::get('/subscription/invoices', [SubscriptionController::class, 'myInvoices'], ['middleware' => 'auth']);
|
||||
Route::post('/subscription/pay/wallet', [SubscriptionController::class, 'payWithWallet'], ['middleware' => 'auth']);
|
||||
|
||||
// ── Subscription Plans (admin/ultimate only) ─────────────────────────────
|
||||
Route::get('/admin/subscription/plans', [SubscriptionPlanController::class, 'listPlans'], ['middleware' => 'ult']);
|
||||
Route::post('/admin/subscription/plan/create', [SubscriptionPlanController::class, 'createPlan'], ['middleware' => 'ult']);
|
||||
Route::post('/admin/subscription/plan/update', [SubscriptionPlanController::class, 'updatePlan'], ['middleware' => 'ult']);
|
||||
Route::post('/admin/subscription/plan/toggle', [SubscriptionPlanController::class, 'togglePlan'], ['middleware' => 'ult']);
|
||||
Route::post('/admin/subscription/list', [SubscriptionPlanController::class, 'listAllSubscriptions'], ['middleware' => 'ult']);
|
||||
|
||||
|
||||
Route::get('/test/upload', function () {
|
||||
$cache = Cache::get('querycache:5324fb1ee26f771b9d87ae56f822bd99++++85838d9513d840ff389e75c60d7c4a40');
|
||||
// $fileData = Storage::get('test/images.jpg');
|
||||
return Response::json($cache);
|
||||
// $title = 'Test FIle Now';
|
||||
// $description = 'This is a test file list entry';
|
||||
// $details = ['status' => 'inves', 'public' => false];
|
||||
// $categories = 'product,images';
|
||||
// $tags = 'test,product,images';
|
||||
|
||||
|
||||
|
||||
// $data = FilesMainController::uploadFileList(
|
||||
// $fileData,
|
||||
// $title,
|
||||
// $filename ?? '',
|
||||
// $description,
|
||||
// $details,
|
||||
// $categories,
|
||||
// $tags
|
||||
// );
|
||||
|
||||
// $filelist_hash = '5ae2d383-4156-4afd-95aa-e6d0984aa118Ks6oZlcvLVKtwvPX9QkrhOE72zK0XKh7MXnZeQ81HOjUbuI6c8Q4E7noQvth5UzVSAeO8E76Y9Wdm2s3Jiiyl10BmjslkYjg7mr3';
|
||||
// return FilesMainController::viewFilebyFileListHash( $filelist_hash);
|
||||
|
||||
// return $data;
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
|
||||
Route::get('/test/viewfile', function () {
|
||||
$file = FileContent::first();
|
||||
|
||||
if (!$file) {
|
||||
abort(404, 'File not found');
|
||||
}
|
||||
$content = $file->content;
|
||||
|
||||
if (is_resource($content)) {
|
||||
$content = stream_get_contents($content);
|
||||
}
|
||||
|
||||
return Response::make($content, 200, [
|
||||
'Content-Type' => 'application/octet-stream',
|
||||
'Content-Disposition' => 'inline; filename="file.bin"',
|
||||
'Content-Length' => strlen($content),
|
||||
]);
|
||||
}, ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Route::post('/Products/Admin/New/', [
|
||||
'as' => 'admin.products.new',
|
||||
'uses' => ProductController::class . '@createNew_Admin',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
Route::post('/Products/Admin/FuzzySearch', [
|
||||
'as' => 'admin.products.fuzzy.search',
|
||||
'uses' => ProductController::class . '@fuzzySearchByName',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
Route::post('/Products/Admin/Edit/', [
|
||||
'as' => 'admin.products.edit',
|
||||
'uses' => ProductController::class . '@editProductAdmin',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
Route::post('/Products/Admin/Edit/Store', [
|
||||
'as' => 'admin.products.bystore.edit',
|
||||
'uses' => ProductController::class . '@editProductAdmin',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/Products/Admin/AddtoStore/', [
|
||||
'as' => 'admin.products.addtostore',
|
||||
'uses' => ProductController::class . '@AddProducttoStore',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
Route::post('/Products/Admin/RemovefronStore/', [
|
||||
'as' => 'admin.products.removefromstore',
|
||||
'uses' => ProductController::class . '@RemoveProductFromStore',
|
||||
'middleware' => ['auth', 'module:products']
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
Route::post('/View/Product/Details/data/withStores', [
|
||||
'as' => 'admin.products.view.data.addstore',
|
||||
'uses' => ProductController::class . '@viewProductwithAddStoreData',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Route::post('/Products/New/Category/Datalist', [
|
||||
'as' => 'admin.products.category.datalist.data',
|
||||
'uses' => ProductController::class . '@getCategories',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
Route::post('/Products/New/SubCategory/Datalist', [
|
||||
'as' => 'admin.products.subcategory.datalist.data',
|
||||
'uses' => ProductController::class . '@getSubcategories',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/View/Product/Details/data', [
|
||||
'as' => 'admin.products.view.data',
|
||||
'uses' => ProductController::class . '@viewProductDetails',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
Route::post('/View/Product/Details/ByStore/data', [
|
||||
'as' => 'admin.products.bystore.view.data',
|
||||
'uses' => ProductController::class . '@viewProductDetailsByStoreEdit',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
|
||||
Route::post('/Market/Products/List', [
|
||||
'as' => 'products.list.data',
|
||||
'uses' => ProductController::class . '@listProductsData',
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Products/List', [
|
||||
'as' => 'admin.products.list.data',
|
||||
'uses' => ProductController::class . '@listProducts_Admin',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Product/Delete', [
|
||||
'as' => 'admin.product.delete',
|
||||
'uses' => ProductController::class . '@deleteProduct_Admin',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Product/ToggleStatus', [
|
||||
'as' => 'admin.product.toggle_status',
|
||||
'uses' => ProductController::class . '@toggleProductStatus_Admin',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
|
||||
Route::post('/File/Upload/{category}', [FilesMainController::class, 'UploadFilefromRequest'], ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/api/products/photo-search', [\App\Http\Controllers\Market\ProductPhotoSearchController::class, 'search'], ['middleware' => 'auth']);
|
||||
Route::post('/api/products/photo-download', [\App\Http\Controllers\Market\ProductPhotoSearchController::class, 'download'], ['middleware' => 'auth']);
|
||||
|
||||
Route::get('/RequestData/File/{filelist_hash}', [
|
||||
'as' => 'requestdata.file.view',
|
||||
'uses' => 'App\Http\Controllers\FilesMainController@viewFilebyFileListHash',
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/Request/Photos/{type}', [
|
||||
'as' => 'request.photos',
|
||||
'uses' => PhotoGallery::class . '@handle',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
|
||||
Route::post('/Store/New', [StoreController::class, 'store'], ['middleware' => ['auth', 'module:stores']]);
|
||||
Route::post('/Store/AutoCreate', [StoreController::class, 'autoCreate'], ['middleware' => ['auth', 'module:stores']]);
|
||||
Route::post('/Store/New/Category/Datalist', [StoreController::class, 'getCategories'], ['middleware' => ['auth', 'module:stores']]);
|
||||
Route::post('/Store/New/SubCategory/Datalist', [StoreController::class, 'getSubcategories'], ['middleware' => ['auth', 'module:stores']]);
|
||||
|
||||
|
||||
Route::post('/View/Store/Details/data', [
|
||||
'as' => 'store.details',
|
||||
'uses' => StoreController::class . '@viewStoreDetails'
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/Store/Edit', [StoreController::class, 'update'], ['middleware' => ['auth', 'module:stores']]);
|
||||
|
||||
Route::post('/Edit/Store/Details/data', [
|
||||
'as' => 'store.details.editing',
|
||||
'uses' => StoreController::class . '@editStoreDetails',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
|
||||
|
||||
Route::post('/ListStores/List/data', [
|
||||
'as' => 'stores.list.data',
|
||||
'uses' => StoreController::class . '@listStoresActiveDataAll',
|
||||
// 'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/ListStores/MyStores/data', [
|
||||
'as' => 'stores.my.list.data',
|
||||
'uses' => StoreController::class . '@listStoresForCurrentUser',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Stores/Selectable', [
|
||||
'as' => 'admin.stores.selectable',
|
||||
'uses' => StoreController::class . '@listSelectableStoresForAddingProduct',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Products/AssignToStore/', [
|
||||
'as' => 'products.assign.to.store',
|
||||
'uses' => ProductController::class . '@AssignProductToOwnStore',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Products/UnassignFromStore/', [
|
||||
'as' => 'products.unassign.from.store',
|
||||
'uses' => ProductController::class . '@RemoveProductFromStore',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Products/GlobalList', [
|
||||
'as' => 'products.global.list',
|
||||
'uses' => ProductController::class . '@listGlobalProductsForPicker',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Products/AssignedStores/', [
|
||||
'as' => 'products.assigned.stores',
|
||||
'uses' => ProductController::class . '@getAssignedStoresForProduct',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Stores/List', [
|
||||
'as' => 'admin.stores.list.data',
|
||||
'uses' => StoreController::class . '@listStores_Admin',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Store/Cooperatives/List', [
|
||||
'as' => 'store.cooperatives.list',
|
||||
'uses' => StoreController::class . '@listCooperativesForStore',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Store/Delete', [
|
||||
'as' => 'admin.store.delete',
|
||||
'uses' => StoreController::class . '@deleteStore_Admin',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
Route::post('/Admin/Store/ToggleStatus', [
|
||||
'as' => 'admin.store.toggle_status',
|
||||
'uses' => StoreController::class . '@toggleStoreStatus_Admin',
|
||||
'middleware' => ['auth', 'module:stores']
|
||||
]);
|
||||
|
||||
|
||||
Route::post('/Edit/Store/Product/remove/', [
|
||||
'as' => 'store.product.remove',
|
||||
'uses' => StoreController::class . '@removeProductfromStore',
|
||||
'middleware' => 'auth'
|
||||
]);
|
||||
|
||||
// Announcements
|
||||
Route::get('/Announcements/Latest', [AnnouncementController::class, 'latest']);
|
||||
Route::post('/Admin/Announcements/List', [AnnouncementController::class, 'index'], ['middleware' => 'auth']);
|
||||
Route::post('/Admin/Announcement/Store', [AnnouncementController::class, 'store'], ['middleware' => 'auth']);
|
||||
Route::post('/Admin/Announcement/Update', [AnnouncementController::class, 'update'], ['middleware' => 'auth']);
|
||||
Route::post('/Admin/Announcement/Delete', [AnnouncementController::class, 'destroy'], ['middleware' => 'auth']);
|
||||
Route::post('/Admin/Announcement/ToggleStatus', [AnnouncementController::class, 'toggleStatus'], ['middleware' => 'auth']);
|
||||
|
||||
|
||||
|
||||
//TODO Add Route for StoreUpdate Edit
|
||||
|
||||
// Global Transactions
|
||||
Route::post('/admin/transactions/list', [\App\Http\Controllers\GlobalTransactionController::class, 'list'], ['middleware' => ['auth', 'module:transactions']]);
|
||||
Route::post('/admin/transactions/create', [\App\Http\Controllers\GlobalTransactionController::class, 'store'], ['middleware' => ['auth', 'module:transactions']]);
|
||||
Route::post('/admin/transactions/types', [\App\Http\Controllers\GlobalTransactionController::class, 'getTypes'], ['middleware' => ['auth', 'module:transactions']]);
|
||||
|
||||
|
||||
// Property Management
|
||||
Route::post('/admin/properties/list', [PropertyManagementController::class, 'listProperties'], ['middleware' => ['auth', 'module:properties']]);
|
||||
Route::post('/admin/properties/referrals', [PropertyManagementController::class, 'listReferrals'], ['middleware' => ['auth', 'module:properties']]);
|
||||
|
||||
// Accounting & Reports
|
||||
Route::post('/admin/accounting/tree', [AccountingController::class, 'getAccountsTree'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/leaf', [AccountingController::class, 'getLeafAccounts'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/daily', [AccountingController::class, 'getDailyTransactions'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/daily/save', [AccountingController::class, 'saveDailyTransactions'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/transactions', [AccountingController::class, 'listTransactions'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/transactions/delete', [AccountingController::class, 'deleteTransaction'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/reports', [AccountingController::class, 'listReports'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/reports/monthly', [AccountingController::class, 'getMonthlyReport'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/accounts/create', [AccountingController::class, 'createAccount'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/accounts/update', [AccountingController::class, 'updateAccount'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/accounts/archive', [AccountingController::class, 'archiveAccount'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/accounts/restore', [AccountingController::class, 'restoreAccount'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/accounts/move', [AccountingController::class, 'moveAccount'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/theme', [AccountingController::class, 'getThemeInfo'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/theme/drift', [AccountingController::class, 'getThemeDrift'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/theme/apply', [AccountingController::class, 'applyTheme'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
Route::post('/admin/accounting/theme/set', [AccountingController::class, 'setTheme'], ['middleware' => ['auth', 'module:accounting']]);
|
||||
|
||||
// POS Routes
|
||||
Route::post('/api/pos/access-keys/list', [\App\Http\Controllers\Admin\PosAccessKeyController::class, 'index'], ['middleware' => ['auth', 'module:pos']]);
|
||||
Route::post('/api/pos/access-keys/create', [\App\Http\Controllers\Admin\PosAccessKeyController::class, 'store'], ['middleware' => ['auth', 'module:pos']]);
|
||||
Route::post('/api/pos/access-keys/delete', [\App\Http\Controllers\Admin\PosAccessKeyController::class, 'destroy'], ['middleware' => ['auth', 'module:pos']]);
|
||||
Route::post('/api/pos/access-keys/toggle', [\App\Http\Controllers\Admin\PosAccessKeyController::class, 'toggleStatus'], ['middleware' => ['auth', 'module:pos']]);
|
||||
|
||||
Route::post('/api/pos/start', [\App\Http\Controllers\Market\PosController::class, 'startSession'], ['middleware' => 'module:pos']); // Allow guest access via key
|
||||
Route::post('/api/pos/session', [\App\Http\Controllers\Market\PosController::class, 'getSession'], ['middleware' => 'module:pos']); // Public/Guest access
|
||||
Route::post('/api/pos/add-item', [\App\Http\Controllers\Market\PosController::class, 'addItem'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/remove-item', [\App\Http\Controllers\Market\PosController::class, 'removeItem'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/complete', [\App\Http\Controllers\Market\PosController::class, 'completeSession'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/sync-offline', [\App\Http\Controllers\Market\PosController::class, 'syncOffline'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/void', [\App\Http\Controllers\Market\PosController::class, 'voidSession'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/stats', [\App\Http\Controllers\Market\PosController::class, 'getTodayStats'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/get-customers', [\App\Http\Controllers\Market\PosController::class, 'getCustomers'], ['middleware' => 'module:pos']);
|
||||
Route::post('/api/pos/sessions/list', [\App\Http\Controllers\Market\PosController::class, 'getPosSessions'], ['middleware' => ['auth', 'module:pos']]);
|
||||
|
||||
|
||||
// Shipment Routes
|
||||
Route::post('/Shipments/List', [ShipmentController::class, 'listShipments'], ['middleware' => ['auth', 'module:shipments']]);
|
||||
Route::post('/Shipments/Create', [ShipmentController::class, 'createNewShipment'], ['middleware' => ['auth', 'module:shipments']]);
|
||||
Route::post('/Shipments/Status/Update', [ShipmentController::class, 'updateShipmentStatus'], ['middleware' => ['auth', 'module:shipments']]);
|
||||
Route::post('/Couriers/List', [ShipmentController::class, 'listCouriers'], ['middleware' => ['auth', 'module:shipments']]);
|
||||
Route::post('/Couriers/Create', [ShipmentController::class, 'createCourier'], ['middleware' => ['auth', 'module:shipments']]);
|
||||
|
||||
// Farmer Management Routes
|
||||
Route::post('/Farmers/Register', [FarmerController::class, 'registerFarmer'], ['middleware' => ['auth', 'module:farmers']]);
|
||||
Route::post('/Farmers/List', [FarmerController::class, 'listFarmers'], ['middleware' => ['auth', 'module:farmers']]);
|
||||
Route::post('/Farmers/Verify', [FarmerController::class, 'verifyFarmer'], ['middleware' => ['auth', 'module:farmers']]);
|
||||
Route::post('/Organizations/List', [FarmerController::class, 'listOrganizations'], ['middleware' => ['auth', 'module:farmers']]);
|
||||
Route::post('/Organizations/Create', [FarmerController::class, 'createOrganization'], ['middleware' => ['auth', 'module:farmers']]);
|
||||
|
||||
// UserInfo Routes
|
||||
Route::post('/UserInfo/Get', [\App\Http\Controllers\Market\UserInfoController::class, 'getUserInfo'], ['middleware' => 'auth']);
|
||||
Route::post('/UserInfo/Update', [\App\Http\Controllers\Market\UserInfoController::class, 'updateUserInfo'], ['middleware' => 'auth']);
|
||||
Route::post('/UserInfo/SearchEmergencyContact', [\App\Http\Controllers\Market\UserInfoController::class, 'searchEmergencyContact'], ['middleware' => 'auth']);
|
||||
|
||||
// Cooperative Module Routes
|
||||
Route::post('/Cooperatives/List', [\App\Http\Controllers\Market\CooperativeController::class, 'listCooperatives'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Get', [\App\Http\Controllers\Market\CooperativeController::class, 'getCooperative'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Join', [\App\Http\Controllers\Market\CooperativeController::class, 'joinCooperative'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Create', [\App\Http\Controllers\Market\CooperativeController::class, 'createCooperative'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Member/Add', [\App\Http\Controllers\Market\CooperativeController::class, 'addMember'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Member/Register', [\App\Http\Controllers\Market\CooperativeController::class, 'registerMember'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Member/Update', [\App\Http\Controllers\Market\CooperativeController::class, 'updateMember'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
|
||||
// Governance Module Routes
|
||||
Route::post('/Governance/Resolutions/List', [\App\Http\Controllers\Market\GovernanceController::class, 'listResolutions'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Governance/Resolutions/Create', [\App\Http\Controllers\Market\GovernanceController::class, 'createResolution'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Governance/Resolutions/Vote', [\App\Http\Controllers\Market\GovernanceController::class, 'castVote'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Governance/Resolutions/Status/Update', [\App\Http\Controllers\Market\GovernanceController::class, 'updateResolutionStatus'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
|
||||
// Cooperative Document Routes
|
||||
Route::post('/Cooperatives/Documents/List', [\App\Http\Controllers\Market\CooperativeDocumentController::class, 'listDocuments'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Documents/Upload', [\App\Http\Controllers\Market\CooperativeDocumentController::class, 'uploadDocument'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Documents/Revise', [\App\Http\Controllers\Market\CooperativeDocumentController::class, 'reviseDocument'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
Route::post('/Cooperatives/Documents/Delete', [\App\Http\Controllers\Market\CooperativeDocumentController::class, 'deleteDocument'], ['middleware' => ['auth', 'module:cooperatives']]);
|
||||
|
||||
// Financial & Credit Routes
|
||||
Route::post('/Financial/Wallet/Get', [\App\Http\Controllers\Market\CreditController::class, 'getWalletData'], ['middleware' => ['auth', 'module:credits']]);
|
||||
Route::post('/Financial/Credit/TopUp', [\App\Http\Controllers\Market\CreditController::class, 'topUp'], ['middleware' => ['auth', 'module:credits']]);
|
||||
Route::post('/Financial/Credit/Transfer', [\App\Http\Controllers\Market\CreditController::class, 'transferCredit'], ['middleware' => ['auth', 'module:credits']]);
|
||||
Route::post('/Financial/Credit/SearchUsers', [\App\Http\Controllers\Market\CreditController::class, 'searchUsers'], ['middleware' => ['auth', 'module:credits']]);
|
||||
Route::post('/Financial/Qrph/Get', [\App\Http\Controllers\Market\CreditController::class, 'getQrphCode'], ['middleware' => 'auth']);
|
||||
Route::post('/Financial/Qrph/Set', [\App\Http\Controllers\Market\CreditController::class, 'setQrphCode'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/Financial/Qrph/Decode', [\App\Http\Controllers\Market\CreditController::class, 'decodeQrph'], ['middleware' => ['auth', 'ultimate']]);
|
||||
|
||||
// UserSettings Routes
|
||||
Route::post('/UserSettings/Get', [\App\Http\Controllers\Market\UserSettingsController::class, 'getSettings'], ['middleware' => 'auth']);
|
||||
Route::post('/UserSettings/Update', [\App\Http\Controllers\Market\UserSettingsController::class, 'updateSettings'], ['middleware' => 'auth']);
|
||||
|
||||
// UserAdditionalDetails Routes
|
||||
Route::post('/UserAdditionalDetails/Get', [\App\Http\Controllers\UserManagement\UserAdditionalDetailsController::class, 'getDetails'], ['middleware' => 'auth']);
|
||||
Route::post('/UserAdditionalDetails/UpdateCooperatives', [\App\Http\Controllers\UserManagement\UserAdditionalDetailsController::class, 'updateCooperatives'], ['middleware' => 'auth']);
|
||||
Route::post('/UserAdditionalDetails/SearchByCooperative', [\App\Http\Controllers\UserManagement\UserAdditionalDetailsController::class, 'searchUsersByCooperative'], ['middleware' => 'auth']);
|
||||
Route::post('/UserAdditionalDetails/GetCooperatives', [\App\Http\Controllers\UserManagement\UserAdditionalDetailsController::class, 'getUserCooperatives'], ['middleware' => 'auth']);
|
||||
|
||||
// Cart Routes
|
||||
Route::post('/cart/get', [CartController::class, 'getCart'], ['middleware' => ['auth', 'module:cart']]);
|
||||
Route::post('/cart/add', [CartController::class, 'addItem'], ['middleware' => ['auth', 'module:cart']]);
|
||||
Route::post('/cart/update', [CartController::class, 'updateItem'], ['middleware' => ['auth', 'module:cart']]);
|
||||
Route::post('/cart/remove', [CartController::class, 'removeItem'], ['middleware' => ['auth', 'module:cart']]);
|
||||
Route::post('/cart/clear', [CartController::class, 'clearCart'], ['middleware' => ['auth', 'module:cart']]);
|
||||
|
||||
// Public Cooperative Registration Routes
|
||||
Route::get('/api/public/cooperative/{hkey}', [\App\Http\Controllers\Market\CooperativeController::class, 'publicGetCooperative']);
|
||||
Route::post('/api/public/cooperative/register', [\App\Http\Controllers\Market\CooperativeController::class, 'publicRegisterMember']);
|
||||
Route::post('/api/public/cooperative/complete-membership', [\App\Http\Controllers\Market\CooperativeController::class, 'publicCompleteMembership']);
|
||||
|
||||
// Public Chapter Registration Routes
|
||||
Route::get('/api/public/chapter/{hkey}', [\App\Http\Controllers\Support\ChapterController::class, 'publicGetChapter']);
|
||||
Route::post('/api/public/chapter/register', [\App\Http\Controllers\Support\ChapterController::class, 'publicRegisterToChapter']);
|
||||
|
||||
// Public User Self-Registration Routes
|
||||
Route::post('/api/public/user/register', [\App\Http\Controllers\UserManagement\CreateUserControllerUltimate::class, 'publicRegisterUser']);
|
||||
Route::post('/api/public/user/check-mobile', [\App\Http\Controllers\UserManagement\CreateUserControllerUltimate::class, 'publicCheckMobileNumber']);
|
||||
|
||||
// Chapter / Org Hierarchy Routes
|
||||
Route::post('/Chapters/Hierarchy', [\App\Http\Controllers\Support\ChapterController::class, 'hierarchy'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/MapData', [\App\Http\Controllers\Support\ChapterController::class, 'mapData'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/OrgHierarchy', [\App\Http\Controllers\Support\ChapterController::class, 'orgHierarchy'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/OrgMapData', [\App\Http\Controllers\Support\ChapterController::class, 'orgMapData'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Members', [\App\Http\Controllers\Support\ChapterController::class, 'members'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Member/Assign', [\App\Http\Controllers\Support\ChapterController::class, 'assignMember'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Member/Remove', [\App\Http\Controllers\Support\ChapterController::class, 'removeMember'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/SyncAutoAssignments', [\App\Http\Controllers\Support\ChapterController::class, 'syncAllAutoAssignments'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/Chapters/Positions', [\App\Http\Controllers\Support\ChapterController::class, 'positions'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/OrgChart', [\App\Http\Controllers\Support\ChapterController::class, 'getOrgChart'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Officer/Assign', [\App\Http\Controllers\Support\ChapterController::class, 'assignOfficer'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Create', [\App\Http\Controllers\Support\ChapterController::class, 'createChapter'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Members/Search', [\App\Http\Controllers\Support\ChapterController::class, 'memberSearch'], ['middleware' => 'auth']);
|
||||
Route::post('/Chapters/Officer/Scope', [\App\Http\Controllers\Support\ChapterController::class, 'getOfficerScope'], ['middleware' => 'auth']);
|
||||
|
||||
// Landing Page Routes
|
||||
Route::get('/api/public/landing-page', [\App\Http\Controllers\Admin\LandingPageController::class, 'getActiveLandingPage']);
|
||||
Route::post('/admin/landing-pages/list', [\App\Http\Controllers\Admin\LandingPageController::class, 'index'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/landing-pages/show', [\App\Http\Controllers\Admin\LandingPageController::class, 'show'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/landing-pages/store', [\App\Http\Controllers\Admin\LandingPageController::class, 'store'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/landing-pages/set-active', [\App\Http\Controllers\Admin\LandingPageController::class, 'setActive'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/landing-pages/deactivate-all', [\App\Http\Controllers\Admin\LandingPageController::class, 'deactivateAll'], ['middleware' => 'auth']);
|
||||
Route::post('/admin/landing-pages/delete', [\App\Http\Controllers\Admin\LandingPageController::class, 'destroy'], ['middleware' => 'auth']);
|
||||
|
||||
// Ultimate Console Routes
|
||||
Route::post('/admin/ultimate/system-settings', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'index'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/system-settings/update', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'update'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/system-settings/logo', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'uploadLogo'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/admin/ultimate/system-settings/organizations', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'listOrganizations'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/admin/ultimate/modules', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'getModules'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/modules/update', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'updateModules'], ['middleware' => ['auth', 'ultimate']]);
|
||||
|
||||
// API tokens — issued from Ultimate Console
|
||||
Route::get('/admin/ultimate/api-tokens/catalog', [\App\Http\Controllers\Admin\ApiTokenController::class, 'catalog'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/admin/ultimate/api-tokens', [\App\Http\Controllers\Admin\ApiTokenController::class, 'index'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/api-tokens', [\App\Http\Controllers\Admin\ApiTokenController::class, 'store'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/api-tokens/{id}/revoke', [\App\Http\Controllers\Admin\ApiTokenController::class, 'revoke'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::delete('/admin/ultimate/api-tokens/{id}', [\App\Http\Controllers\Admin\ApiTokenController::class, 'destroy'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/api/public/system-settings', [\App\Http\Controllers\Admin\SystemSettingsController::class, 'getPublicSettings']);
|
||||
Route::get('/api/public/global-message', function () {
|
||||
$message = \Hypervel\Support\Facades\Redis::get('system:global_message');
|
||||
if ($message) {
|
||||
return response()->json(['success' => true, 'data' => json_decode($message, true)]);
|
||||
}
|
||||
return response()->json(['success' => true, 'data' => null]);
|
||||
});
|
||||
|
||||
Route::post('/admin/ultimate/stats', [\App\Http\Controllers\Market\UltimateController::class, 'getSystemStats'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/query', [\App\Http\Controllers\Market\UltimateController::class, 'runQuery'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/maintenance/toggle', [\App\Http\Controllers\Market\UltimateController::class, 'toggleMaintenance'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/global-message', [\App\Http\Controllers\Market\UltimateController::class, 'sendGlobalMessage'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/flush', [\App\Http\Controllers\Market\UltimateController::class, 'flushData'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/test-notification', [\App\Http\Controllers\Market\UltimateController::class, 'testNotification'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/batch', [\App\Http\Controllers\Market\UltimateController::class, 'batchManage'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/command', [\App\Http\Controllers\Market\UltimateController::class, 'runCommand'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/migrate', [\App\Http\Controllers\Market\UltimateController::class, 'runMigrate'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/admin/ultimate/backup/download', [\App\Http\Controllers\Market\UltimateController::class, 'downloadBackup'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/logs', [\App\Http\Controllers\Market\UltimateController::class, 'getSystemLogs'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/backups/list', [\App\Http\Controllers\Market\UltimateController::class, 'getBackups'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::get('/admin/ultimate/backup/download/hash', [\App\Http\Controllers\Market\UltimateController::class, 'downloadBackupByHash'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/backup/rename', [\App\Http\Controllers\Market\UltimateController::class, 'renameBackup'], ['middleware' => ['auth', 'ultimate']]);
|
||||
Route::post('/admin/ultimate/backup/delete', [\App\Http\Controllers\Market\UltimateController::class, 'deleteBackup'], ['middleware' => ['auth', 'ultimate']]);
|
||||
|
||||
|
||||
// Batch Creation Routes
|
||||
Route::post('/admin/batch/products', [\App\Http\Controllers\Market\BatchController::class, 'batchCreateProducts'], ['middleware' => ['auth', 'module:batch']]);
|
||||
Route::get('/admin/batch/products/template', [\App\Http\Controllers\Market\BatchController::class, 'downloadProductTemplate'], ['middleware' => ['auth', 'module:batch']]);
|
||||
Route::post('/admin/batch/stores', [\App\Http\Controllers\Market\BatchController::class, 'batchCreateStores'], ['middleware' => ['auth', 'module:batch']]);
|
||||
Route::post('/admin/batch/users', [\App\Http\Controllers\Market\BatchController::class, 'batchCreateUsers'], ['middleware' => ['auth', 'module:batch']]);
|
||||
Route::post('/admin/batch/cooperatives', [\App\Http\Controllers\Market\BatchController::class, 'batchCreateCooperatives'], ['middleware' => ['auth', 'module:batch']]);
|
||||
Route::post('/admin/batch/cooperative-members', [\App\Http\Controllers\Market\BatchController::class, 'batchCreateCooperativeMembers'], ['middleware' => ['auth', 'module:batch', 'module:cooperatives']]);
|
||||
|
||||
|
||||
// Universal SPA Route - Handles all other paths by mapping them to Vue components
|
||||
Route::get('/{path}', function ($path = '/') {
|
||||
return VueRouteMap::handleSpa($path);
|
||||
}, [
|
||||
'where' => ['path' => '.*'],
|
||||
'middleware' => 'web'
|
||||
]);
|
||||
|
||||
|
||||
// Route::get('/data/hello/', function (\Hypervel\Http\Request $request) {
|
||||
// $file = public_path('/plugins/bootstrap/js/bootstrap.bundle.min.js');
|
||||
|
||||
// if ($request->has('nocache')) {
|
||||
// return response()->file($file);
|
||||
// }
|
||||
|
||||
// $cacheKey = 'file_cache:bootstrap_bundle_js';
|
||||
|
||||
// $content = Cache::remember($cacheKey, 3600, function () use ($file) {
|
||||
// return File::get($file);
|
||||
// });
|
||||
|
||||
// return Response::make($content, 200, [
|
||||
// 'Content-Type' => 'application/javascript',
|
||||
// 'X-Cache' => Cache::has($cacheKey) ? 'HIT' : 'MISS'
|
||||
// ]);
|
||||
// });
|
||||
|
||||
|
||||
// Route::get('logs/now', function(){
|
||||
// $dd = Storage::get('logs/view_errors.log');
|
||||
|
||||
// return Response::json(Json::decode($dd),200);
|
||||
// });
|
||||
Reference in New Issue
Block a user