hasTable('icm428m')) { $profile = DB::connection($connection)->table('icm428m')->where('R428US', strtoupper(m3_user()))->first(); } $co = $profile->R428CO ?? ''; $whs = $profile->R428WH ?? ''; $iCM428M = Schema::connection($connection)->hasTable('icm428m') ? DB::connection($connection)->table('icm428m')->where('R428CO', $co)->where('R428WH', $whs)->get() : collect(); $uSER_INFO = Schema::connection($connection)->hasTable('icm428m') ? DB::connection($connection)->table('icm428m')->selectRaw('R428US as USERPRF, R428STS as STATUS, NULL as DATE_EXPIRED, NULL as EXPIRED')->get()->all() : []; $power_user = [(object) ['R428PWRUSR' => $profile->R428PWRUSR ?? 'N', 'R428CO' => $co, 'R428PL' => $profile->R428PL ?? '', 'R428WH' => $whs]]; $iC670M = Schema::connection($connection)->hasTable('ic670m') ? DB::connection($connection)->table('ic670m')->get() : collect(); return view('m3::liberty-theme.pages.userControl', ['ICM428M' => $iCM428M, 'IC670M' => $iC670M, 'power_user' => $power_user, 'USER_INFO' => $uSER_INFO]); } // // Process data from Add modal // public static function saveUserAdd(Request $request) { if ($request->R428EMPCDE == '') { $request->R428EMPCDE = 0; } $connection = DB::connection(config('m3.connection', 'pgsql')); $existing = $connection->select("select count(*) as COUNT1 from ICM428M where R428US='$request->R428US'"); if (($existing[0]->COUNT1 ?? 0) == '1') { return 'error exists'; } // PostgreSQL/Core owns M3 profiles; no QSYS2 lookup is currently available. $profileExists = false; if ($profileExists) { self::insertUser($request, false); return 'success'; } return self::createSystemProfileAndUser($request); } private static function createSystemProfileAndUser(Request $request): string { try { $conn = app(PostgresProgramBridge::class); } catch (\Throwable $e) { return self::programBridgeConnectionError($e); } $conn->setOptions([ 'persistent' => false, 'stateless' => true, 'debug' => true, 'debugLogFile' => '/www/sentm3test/htdocs/M3/storage/logs/toolkit_debug.log', ]); $params = [ $conn->AddParameterChar('in', 10, 'User profile', 'E#iUsrPrf', $request->R428US), $conn->AddParameterChar('in', 20, 'First name', 'FIRST', $request->R428FIRST), $conn->AddParameterChar('in', 30, 'Family name', 'FAMILY', $request->R428FAMILY), ]; if (! $conn->PgmCall('ICMUSRPRF', 'EWOBJ', $params, [], [])) { return 'error profile2'; } self::insertUser($request, true); return 'success2'; } private static function insertUser(Request $request, bool $includeR42821A): void { $values = [ 'R428CO' => $request->R428CO, 'R428PL' => $request->R428PL, 'R428WH' => $request->R428WH, 'R428STS' => $request->R428STS, 'R428US' => $request->R428US, 'R428FIRST' => $request->R428FIRST, 'R428FAMILY' => $request->R428FAMILY, 'R428EMAIL' => $request->R428EMAIL, 'R428EMPCDE' => $request->R428EMPCDE, 'R428ADMUSR' => $request->R428ADMUSR, 'R428PWRUSR' => $request->R428PWRUSR, 'MENU2OPT' => 'NN' . $request->MENU2OPT3 . 'NNN' . $request->MENU2OPT7 . $request->MENU2OPT8 . 'N', 'MENU3OPT' => $request->MENU3OPT1 . $request->MENU3OPT2 . 'NNNNNNN', 'MENU4OPT' => $request->MENU4OPT1 . $request->MENU4OPT2 . $request->MENU4OPT3 . 'NNNNNN', 'MENU5OPT' => $request->MENU5OPT1 . $request->MENU5OPT2 . $request->MENU5OPT3 . 'N' . $request->MENU5OPT5 . 'NNNN', 'MENU6OPT' => $request->MENU6OPT1 . $request->MENU6OPT2 . $request->MENU6OPT3, 'R42811A' => $request->R42811A, ]; if ($includeR42821A) { $values['R42821A'] = $request->R42821A; } DB::connection(config('m3.connection', 'pgsql'))->table('icm428m')->insert($values); } // // Process data from Edit modal // public static function saveUserEdit(Request $request) { if ($request->R428EMPCDE == '') { $request->R428EMPCDE = 0; } // Validate employee code exists in LBPF file // dump($request->R428EMPCDE); // if($request->R428EMPCDE>0) { // $sqlstmt="select count(*) as COUNT from LBPF where EMPNO='$request->R428EMPCDE'"; // #echo "$sqlstmt
"; // $empcde=DB::connection(config('m3.connection', 'pgsql'))->select($sqlstmt); // #dump($empcde); // if($empcde[0]->COUNT=="0") { // #echo ""; // return "error empcd"; // } // } // Update record to ICM428M $iCM428M = DB::connection(config('m3.connection', 'pgsql'))->select("select * from ICM428M where R428US='$request->R428US'"); DB::connection(config('m3.connection', 'pgsql'))->update("update ICM428M set R428CO='$request->R428CO', R428PL='$request->R428PL', R428WH='$request->R428WH', R428STS='$request->R428STS', R428FIRST='$request->R428FIRST', R428FAMILY='$request->R428FAMILY', R428EMAIL='$request->R428EMAIL', R428EMPCDE=$request->R428EMPCDE, R428ADMUSR='$request->R428ADMUSR', R428PWRUSR='$request->R428PWRUSR', MENU2OPT='" . substr($iCM428M[0]->MENU2OPT, 0, 2) . $request->MENU2OPT3 . substr($iCM428M[0]->MENU2OPT, 3, 3) . $request->MENU2OPT7 . $request->MENU2OPT8 . "', MENU3OPT='" . $request->MENU3OPT1 . $request->MENU3OPT2 . substr($iCM428M[0]->MENU3OPT, 2, -1) . "', MENU4OPT='" . $request->MENU4OPT1 . $request->MENU4OPT2 . $request->MENU4OPT3 . substr($iCM428M[0]->MENU4OPT, 3, -1) . "', MENU5OPT='" . $request->MENU5OPT1 . $request->MENU5OPT2 . $request->MENU5OPT3 . substr($iCM428M[0]->MENU5OPT, 3, 1) . $request->MENU5OPT5 . substr($iCM428M[0]->MENU5OPT, 5, -1) . "', MENU6OPT='" . $request->MENU6OPT1 . $request->MENU6OPT2 . $request->MENU6OPT3 . substr($iCM428M[0]->MENU6OPT, 3, -1) . "', R42811A='" . $request->R42811A . "',R42821A='" . $request->R42821A . "' where R428US='$request->R428US'"); return 'success'; } // 590 public static function callCL(Request $request) { // connect to toolkit using DB2 credentials (can also leave blank for default authority) try { $conn = app(PostgresProgramBridge::class); } catch (\Throwable $e) { // Determine reason for failure. // Probably database authentication error or invalid or unreachable database. return self::programBridgeConnectionError($e); } // Add LIB // $result = $conn->CLCommand('ADDLIBLE LIB(MPDAT10)'); // define several input/output params $params = []; // AddParameterChar($io, $size, $comment, $varName, $value, $varying, $dimension) // Add Warehouse Param $params[] = $conn->AddParameterChar('in', 10, 'userid', 'USERID', $request->USERID); $params[] = $conn->AddParameterChar('in', 1, 'action', 'ACTION', $request->ACTION); // AddParameterPackDec($io, $length, $scale, $comment, $varName, $value,$dimension) // Add Delivery Note Param // Start Time Tracking // $start = microtime(true); // Config::get('eproconf.misc.PGM1'), Config::get('eproconf.misc.libname4') // ICM700C EWOBJTST ICM700C ICM700CSBM $result = $conn->PgmCall('ICMCHGPRF', 'EWOBJ', $params, [], []); if (! $result) { echo ""; return 'error'; } // Successful Call else { if ($request->ACTION == 'P') { echo ""; } if ($request->ACTION == 'R') { echo ""; } echo ""; } // if ($pGMERRORS!="") { // // return back()->withMessage('Can not Create PR: '.$pGMERRORS); // dump($pGMERRORS); // } // else{ // // return $AWREQN; // } } // 765 public static function savePassword(Request $request) { ini_set('max_execution_time', Config::get('arrays.PHPTimeOut')); ini_set('max_input_time', Config::get('arrays.PHPTimeOut')); ini_set('default_socket_timeout', Config::get('arrays.PHPTimeOut')); // echo "B3
"; // connect to toolkit using DB2 credentials (can also leave blank for default authority) try { $conn = app(PostgresProgramBridge::class); } catch (\Throwable $e) { return self::programBridgeConnectionError($e); } $result = $conn->CLCommand('QSYS/CHGUSRPRF USRPRF(' . $request->R428US_PWD . ') PASSWORD(' . $request->NEW_PASSWORD . ') STATUS(*ENABLED) PWDEXP(*NO)'); if (! $result) { dump($conn->getErrorMsg()); echo ""; return 'error pwd'; } // Successful Call else { return 'success'; } } private static function programBridgeConnectionError(\Throwable $exception): string { $code = (int) $exception->getCode(); return match ($code) { 8001 => 'error profile3', 42705 => 'error profile4', default => 'error profile5', }; } }