Files
BarangaySystem/app/Http/Controllers/Pages/UserModifyAdminPageController.php
2026-06-06 18:43:00 +08:00

1031 lines
32 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Controllers\Pages;
use App\Http\Controllers\Helpers\Permissions\UserPermissions;
use App\Http\Controllers\LoginController;
use Hypervel\Http\Request;
use Hypervel\Support\Facades\Auth;
use App\Models\User;
use Hypervel\Support\Facades\Cache;
use Hypervel\Support\Facades\Response;
use App\Enums\UserTypes;
use App\Models\Market\Store;
use App\Http\Controllers\Pages\PageController;
use App\Enums\UserActions;
use Hypervel\Support\Facades\Hash;
use Hypervel\Support\Facades\Redis;
class UserModifyAdminPageController
{
use PageResponses_UserModify;
private static function getUserbyHashkey($hashkey)
{
if (!$hashkey || !Auth::check()) {
return false;
}
try {
$User = User::where('hashkey', $hashkey)->first();
} catch (\Throwable $th) {
return false;
}
if (!$User) {
return false;
}
return $User;
}
public static function getDetailsbyHashkey($hashkey): bool|array
{
$User = self::getUserbyHashkey($hashkey);
if (!$User) {
return false;
}
// $UserDetail = $User->map(function ($detail) {
// return [
// 'hashkey' => $detail->hashkey,
// 'mobile_number' => $detail->mobile_number,
// 'total_balance' => $detail->total_balance,
// 'active' => $detail->active,
// 'parent' => $detail->parent ? $detail->parent->name : null,
// 'nickname' => $detail->nickname,
// 'fullname' => $detail->fullname,
// 'name' => $detail->name,
// 'username' => $detail->username,
// 'acct_type' => $detail->acct_type,
// 'modified' => $detail->updated_at,
// 'total_credit' => $detail->total_credit,
// 'created' => $detail->created_at,
// // 'children' => $detail->getAllDescendants,
// ];
// });
$UserDetail = [
'hashkey' => $User->hashkey,
'mobile_number' => $User->mobile_number,
'total_balance' => $User->total_balance,
'active' => $User->active,
'parent' => $User->parent ? $User->parent->name : null,
'parent_hashkey' => $User->parent ? $User->parent->hashkey : null,
'nickname' => $User->nickname,
'fullname' => $User->fullname,
'name' => $User->name,
'username' => $User->username,
'acct_type' => $User->acct_type,
'modified' => $User->updated_at,
'total_credit' => $User->total_credit,
'created' => $User->created_at,
// 'children' => $User->getAllDescendants, // if you need this later
'store_hashkey' => Store::where('owner_id', $User->id)->orWhere('manager_id', $User->id)->value('hashkey'),
'stores' => Store::where('owner_id', $User->id)->orWhere('manager_id', $User->id)->get()->map(fn($s) => [
'hashkey' => $s->hashkey,
'name' => $s->name,
'role' => $s->owner_id === $User->id ? 'owner' : 'manager'
])
];
$CurrentUserType = Auth::user()->acct_type;
try {
$UserDetail = $UserDetail->toArray();
} catch (\Throwable $th) {
}
if ($CurrentUserType !== UserTypes::ULTIMATE) {
unset($UserDetail['modified']);
unset($UserDetail['total_credit']);
unset($UserDetail['fullname']);
unset($UserDetail['username']);
}
return $UserDetail;
}
public static function getDirectChildrenofTargetUser($hashkey)
{
$User = self::getUserbyHashkey($hashkey);
if (!$User) {
return false;
}
$children = $User->children->map(function ($child) {
return [
'hashkey' => $child->hashkey,
'name' => $child->name,
'fullname' => $child->fullname,
'username' => $child->username,
'mobile_number' => $child->mobile_number,
'total_balance' => $child->total_balance,
'acct_type' => $child->acct_type,
'active' => (bool) $child->active,
];
});
return $children;
}
public function Response_directChildrenofTargetUser(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
$children = self::getDirectChildrenofTargetUser($target_user);
return PageController::PageResponse($children);
}
public static function getchildrenofTargetUser($hashkey)
{
$User = self::getUserbyHashkey($hashkey);
if (!$User) {
return false;
}
$children = $User;
$children = $User->getAllDescendants()->map(function ($child) {
$parentname = $child->parent->name . '(' . $child->parent->username . ')' . '---' . $child->parent->mobile_number;
return [
'mobile_number' => $child->mobile_number,
'total_balance' => $child->total_balance,
'acct_type' => $child->acct_type,
'active' => $child->active,
'parent' => $parentname,
'hashkey' => $child->hashkey,
];
});
return $children;
}
private static function isPermittedthenFindUserorFail(string $hashkey, bool|UserActions $permissionORUserAction)
{
if (!$hashkey || !is_string($hashkey)) {
throw new \Exception('Invalid target user');
}
if (is_bool($permissionORUserAction)) {
if ($permissionORUserAction === true) {
return true;
}
if ($permissionORUserAction === false) {
throw new \Exception('Permission Denied');
}
}
if (!UserPermissions::isActionPermitted($hashkey, $permissionORUserAction)) {
throw new \Exception('Permission Denied');
}
$user = User::where('hashkey', $hashkey)->first();
if (!$user) {
throw new \Exception('User not found');
}
return $user;
}
public static function ToggleUserActive(bool $active, $hashkey, bool $autologout = true)
{
if (!$hashkey || !is_string($hashkey)) {
return false;
}
if ($active) {
if (!UserPermissions::isUserSetActiveAllowed($hashkey)) {
return Response::json(['error' => 'Not Allowed'], 403);
}
} else {
if (!UserPermissions::isUserSetInactiveAllowed($hashkey)) {
return Response::json(['error' => 'Not Allowed'], 403);
}
}
try {
$targetUser = User::where('hashkey', $hashkey)->first();
if (!$targetUser) {
return Response::json(['error' => 'User not found'], 404);
}
// $targetUser->active = false;
$targetUser->active = $active;
$targetUser->save();
if (!$active && $autologout) {
self::LogoutUser($hashkey);
}
return Response::json(['success' => true], 200);
} catch (\Throwable $th) {
return Response::json(['error' => $th->getMessage()], 500);
}
}
public static function ViewNotes($hashkey)
{
try {
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isUserNotesViewingAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
return $target_user->notes;
} catch (\Throwable $th) {
throw new \Exception('Error retrieving notes: ' . $th->getMessage());
}
}
public static function ReplaceNotes(string $hashkey, string $note)
{
try {
if (!UserPermissions::isUserNotesUpdateAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
$target_user->notes = $note;
$target_user->save();
return true;
} catch (\Throwable $th) {
throw new \Exception('Error updating notes: ' . $th->getMessage());
}
}
public static function DeleteNotes(string $hashkey)
{
if (!UserPermissions::isUserNotesDeletionAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
return self::ReplaceNotes($hashkey, '');
}
public static function ViewExec($hashkey)
{
try {
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isUserExecViewingAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
return $target_user->exec_command;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function DeleteExec(string $hashkey)
{
if (!UserPermissions::isUserExecDeletionAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
return self::ReplaceExec($hashkey, '');
}
public static function ReplaceExec(string $hashkey, string $exec)
{
try {
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isUserExecChangeAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
$target_user->exec_command = $exec;
$target_user->save();
return true;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function UpdateUserDetails(string $hashkey, $details)
{
try {
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isUserModificationAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
if (isset($details['mobile_number'])) {
$target_user->mobile_number = LoginController::normalizePhMobile((string) $details['mobile_number']);
}
if (isset($details['nickname'])) {
$target_user->nickname = $details['nickname'];
}
if (isset($details['name'])) {
$target_user->name = $details['name'];
}
if (isset($details['username'])) {
$target_user->username = $details['username'];
}
if (isset($details['fullname'])) {
$target_user->fullname = $details['fullname'];
}
if (isset($details['type']) && $details['type'] !== '') {
$target_user->acct_type = $details['type'];
}
if (isset($details['parent']) && $details['parent'] !== '') {
$parentModel = User::where('hashkey', $details['parent'])->first();
if ($parentModel) {
$target_user->parentuid = $parentModel->id;
}
}
$target_user->save();
return true;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function ResetUserPassword(string $hashkey, string $newPassword)
{
try {
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isUserPasswordChangeAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
$target_user->password = Hash::make($newPassword);
$target_user->save();
return true;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function TransferMyCredit(string $hashkey, float $amount)
{
$currentuser = Auth::user();
if ($amount <= 0) {
throw new \Exception('Invalid amount');
}
try {
$target_user = User::where('hashkey', $hashkey)->first();
$currentUserBalance = $currentuser->total_balance;
if ($currentuser->acct_type !== UserTypes::ULTIMATE && $currentUserBalance < $amount) {
throw new \Exception('Insufficient balance');
}
if (!$target_user) {
throw new \Exception('User not found');
}
if (!UserPermissions::isDirectCreditTransfertoUserAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
$target_user->total_credit += $amount;
$target_user->save();
return true;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function LogoutUser(string $hashkey)
{
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::ForceLogoutUser);
if (!$user) {
throw new \Exception('Error Fetching User');
}
try {
return \App\Http\Controllers\RemoteLogoutController::remoteLogout($hashkey);
} catch (\Throwable $th) {
throw new \Exception($th->getMessage());
}
}
public static function ShowUserRoles(string $hashkey)
{
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::UserAllowedtoViewOtherUserRoles);
if (!$user) {
throw new \Exception('Error Fetching User');
}
$roles = UserPermissions::getUserRoles($user->id);
$formatted = [];
foreach ($roles as $role) {
// $role is already an instance of UserActions
if ($role instanceof UserActions) {
$formatted[] = [
'value' => $role->value,
'name' => $role->name
];
} else {
$formatted[] = [
'value' => (string) $role,
'name' => 'UNKNOWN'
];
}
}
return $formatted;
}
public static function ShowAllRoles()
{
$allowed = UserPermissions::isActionPermitted(Auth::id(), UserActions::UserAllowedtoViewAllRoles);
if (!$allowed) {
throw new \Exception('Not Allowed');
}
return array_map(function (UserActions $role) {
return [
'value' => $role->value,
'name' => $role->name
];
}, UserActions::cases());
}
public static function ChangeUserRoles(string $target_user, array $new_roles)
{
// 1) Permission + load
$user = self::isPermittedthenFindUserorFail(
$target_user,
permissionORUserAction: UserActions::UserAllowedtoChangeAnotherUserRoles
);
// 2) Normalize all incoming roles to enums (accept enum, backing value, or case name)
$new_roles = array_map(fn($r) => UserPermissions::normalizeRole($r), $new_roles);
// 3) Defaults for this user type (fix: acct_type, not type)
$default_roles_map = UserPermissions::roles();
$acctType = $user->acct_type; // cast to enum in your model
$default_roles = $default_roles_map[$acctType->value] ?? []; // array of UserActions
// 4) Remove any newly granted roles from denied_roles
$denied_roles = $user->denied_roles ?? []; // expect UserActions[] via your cast
$denied_roles = array_values(array_filter(
$denied_roles,
fn(UserActions $r) => !in_array($r, $new_roles, true)
));
$user->denied_roles = $denied_roles;
// 5) Clean additional_roles to only those present in new_roles
$additional_roles = $user->additional_roles ?? []; // expect UserActions[] via your cast
// use strict comparison instead of array_intersect (which is non-strict)
$additional_roles = array_values(array_filter(
$additional_roles,
fn(UserActions $r) => in_array($r, $new_roles, true)
));
// 6) Add roles that are in new_roles but NOT in defaults into additional_roles
foreach ($new_roles as $role) {
if (!in_array($role, $default_roles, true) && !in_array($role, $additional_roles, true)) {
$additional_roles[] = $role;
}
}
// 7) Save
$user->additional_roles = $additional_roles; // your cast will persist backing values
$user->save();
return $user;
}
public function ChangeUserParent(string $targetUser, string|int $parent)
{
$targetUserModel = self::isPermittedthenFindUserorFail(
$targetUser,
permissionORUserAction: UserActions::ChangeAnotherUsersParent
);
try {
// Resolve parent user
if (is_string($parent)) {
$parentModel = User::where('hashkey', $parent)->first();
if (empty($parentModel)) {
throw new \Exception("Parent user not found by hashkey.");
}
} else {
$parentModel = User::findOrFail($parent);
}
$targetUserModel->parentuid = $parentModel->id;
$targetUserModel->save();
return true;
} catch (\Throwable $th) {
throw new \Exception($th->getMessage(), 1);
}
}
public static function DeleteUser(string $hashkey)
{
try {
if (!UserPermissions::isUserDeletionAllowed($hashkey)) {
throw new \Exception('Permission Denied');
}
$target_user = User::where('hashkey', $hashkey)->first();
if (!$target_user) {
throw new \Exception('User not found');
}
// Optional: Logout the user before deleting
self::LogoutUser($hashkey);
$target_user->delete();
return true;
} catch (\Throwable $th) {
throw new \Exception('Error deleting user: ' . $th->getMessage());
}
}
public static function DetachStoreFromUser(string $userHash, string $storeHash)
{
try {
$user = User::where('hashkey', $userHash)->first();
$store = Store::where('hashkey', $storeHash)->first();
if (!$user || !$store) {
throw new \Exception('User or Store not found');
}
if (!UserPermissions::isUserModificationAllowed($userHash)) {
throw new \Exception('Permission Denied');
}
if ($store->owner_id === $user->id) {
$store->owner_id = null;
}
if ($store->manager_id === $user->id) {
$store->manager_id = null;
}
$store->save();
return true;
} catch (\Throwable $th) {
throw new \Exception('Error detaching store: ' . $th->getMessage());
}
}
public static function ExtendUserSessions(string $hashkey)
{
$user = self::isPermittedthenFindUserorFail($hashkey, UserActions::UserAllowedtoChangeAnotherUserRoles); // Reuse permission for now or add a new one
$sessions = Redis::smembers("user_sessions:{$hashkey}");
if (empty($sessions)) {
return false;
}
$results = [];
foreach ($sessions as $sessionId) {
$results[$sessionId] = \App\Http\Controllers\LoginController::setSessiontoKeepAlive($sessionId);
}
return $results;
}
}
trait PageResponses_UserModify
{
public function Response_UserDetails(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
$user_details = self::getDetailsbyHashkey($target_user);
return PageController::PageResponse($user_details);
}
public function Response_childrenofTargetUser(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
$user_details = self::getchildrenofTargetUser($target_user);
return PageController::PageResponse($user_details);
}
public function Response_EnableUser(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
return self::ToggleUserActive(true, $target_user);
}
public function Response_DisableUser(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
return self::ToggleUserActive(false, $target_user);
}
public function Response_ViewNotes(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$notes = self::ViewNotes($target_user);
} catch (\Throwable $th) {
//throw $th;
return response()->json($th->getMessage(), 500);
}
// if ($notes === false) {
// return response()->json(data: 'User not found', 404);
// }
return response()->raw($notes);
}
public function Response_ReplaceNotes(Request $request)
{
$target_user = $request->input('target_user');
$newnotecontent = $request->input('newnotecontent');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$success = self::ReplaceNotes($target_user, $newnotecontent);
} catch (\Throwable $th) {
//throw $th;
return response()->json($th->getMessage(), 500);
}
// if (!$success) {
// return response()->json('User not found or update failed', 400);
// }
return response()->json(true, 200);
}
public function Response_DeleteNotes(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$notes = self::DeleteNotes($target_user);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
if ($notes === false) {
return response()->json('Error', 404);
}
return response()->json(true, 200);
}
public function Response_ViewExec(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$exec = self::ViewExec($target_user);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
if ($exec === false) {
return response()->json('User not found', 404);
}
return response()->raw($exec);
}
public function Response_ReplaceExec(Request $request)
{
$target_user = $request->input('target_user');
$newexeccontent = $request->input('newexeccontent');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$success = self::ReplaceExec($target_user, $newexeccontent);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
if (!$success) {
return response()->json('User not found or update failed', 400);
}
return response()->json(true, 200);
}
public function Response_DeleteExec(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$notes = self::DeleteExec($target_user);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
return response()->json(true, 200);
}
public function Response_DetachStore(Request $request)
{
$target_user = $request->input('target_user');
$store_hash = $request->input('store_hash');
if (!$target_user || !$store_hash) {
return Response::json(['success' => false, 'message' => 'Missing parameters'], 400);
}
try {
$success = self::DetachStoreFromUser($target_user, $store_hash);
return Response::json(['success' => $success], 200);
} catch (\Throwable $th) {
return Response::json(['success' => false, 'message' => $th->getMessage()], 500);
}
}
public function Response_UpdateUserDetails(Request $request)
{
$target_user = $request->input('target_user');
$details = $request->input('details');
if (!$target_user || !is_string($target_user) || !is_array($details)) {
return Response::json(['success' => false], 404);
}
try {
$success = self::UpdateUserDetails($target_user, $details);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
if (!$success) {
return response()->json('User not found or update failed', 400);
}
return response()->json(true, 200);
}
public function Response_ResetUserPassword(Request $request)
{
$target_user = $request->input('target_user');
$newPassword = $request->input('user_new_password');
if (!$target_user || !is_string($target_user) || !$newPassword || !is_string($newPassword)) {
return Response::json(['success' => false], 404);
}
try {
$success = self::ResetUserPassword($target_user, $newPassword);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
if (!$success) {
return response()->json('User not found or update failed', 400);
}
return response()->json(true, 200);
}
public function Response_LogoutUser(Request $request)
{
$target_user = $request->input('target_user');
try {
$user = self::LogoutUser($target_user);
if (!$user) {
return response()->json('Unable to Logout User!', 400);
}
return response()->json(true, 200);
} catch (\Throwable $th) {
return response()->json('Unable to Logout User ' . $th->getMessage(), 400);
}
}
public function Response_UserRoles(Request $request)
{
$target_user = $request->input('target_user');
try {
$roles = self::ShowUserRoles($target_user);
return response()->json($roles, 200);
} catch (\Throwable $th) {
return response()->json('Unable fetch User Roles' . $th->getMessage(), 400);
}
}
public function Response_AllRoles()
{
try {
$roles = self::ShowAllRoles();
return response()->json($roles, 200);
} catch (\Throwable $th) {
return response()->json('Error' . $th->getMessage(), 400);
}
}
public function Response_ChangeUserRoles(Request $request)
{
$target_user = $request->input('target_user');
$new_roles = $request->input('roles');
try {
$success = self::ChangeUserRoles($target_user, $new_roles);
if (!$success) {
return response()->json('Error', 500);
}
return response()->json(true, 200);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
}
public function Response_ChangeUserParent(Request $request)
{
$target_user = $request->input('target_user');
$parent = $request->input('parent');
try {
$success = self::ChangeUserParent($target_user, $parent);
if (!$success) {
return response()->json('Error', 500);
}
return response()->json(true, 200);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
}
// public function Response_TransferMyCredit(Request $request)
// {
// $target_user = $request->input('target_user');
// $amount = $request->input('amount');
// if (!$target_user || !is_string($target_user) || !$amount || !is_numeric($amount)) {
// return Response::json(false, 404);
// }
// try {
// $success = self::TransferMyCredit($target_user, (float)$amount);
// } catch (\Throwable $th) {
// return response()->json($th->getMessage(), 500);
// }
// if (!$success) {
// return response()->json('User not found or transfer failed', 400);
// }
// return response()->json(true, 200);
// }
public function Response_DeleteUser(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(false, 404);
}
try {
$success = self::DeleteUser($target_user);
return response()->json($success, 200);
} catch (\Throwable $th) {
return response()->json($th->getMessage(), 500);
}
}
public function Response_ExtendUserSessions(Request $request)
{
$target_user = $request->input('target_user');
if (!$target_user || !is_string($target_user)) {
return Response::json(['success' => false], 404);
}
try {
$results = self::ExtendUserSessions($target_user);
if ($results === false) {
return Response::json(['success' => false, 'message' => 'No active sessions found for this user.'], 404);
}
return Response::json(['success' => true, 'data' => $results], 200);
} catch (\Throwable $th) {
return Response::json(['success' => false, 'message' => $th->getMessage()], 500);
}
}
}
//Add This Controls Later At User Modify Blade
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/disableuser', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_place_bet', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_set_notes', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_set_exec', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_last30DaysAmountPrizes_Report', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_request_credit', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/updateuserdetails', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/resetuserpassword', 'GET', $IsUserUltimate);
// redirecttofile('/UserdetailsControls', 'pages/slvl/adminpages/open_logout_user', 'GET', $IsUserUltimate);