hasTable('icm428m')) { $profile = DB::connection($connection)->table('icm428m')->where('R428US', strtoupper(m3User()))->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; } // Insert record to ICM428M // dump($request); // Validate user profile exists on the system $usrprf = [(object) ['COUNT' => 0]]; // PostgreSQL/Core owns M3 profiles; no QSYS2 lookup. // Validate employee code exists in LBPF file // if($request->R428EMPCDE>0) { // $empcde=DB::connection(config('m3.connection', 'pgsql'))->select("select count(*) as COUNT2 from LBPF where EMPNO='$request->R428EMPCDE'"); // if($empcde[0]->COUNT2=="0") { // #echo ""; // return "error empcd"; // } // } $icm428m = DB::connection(config('m3.connection', 'pgsql'))->select("select count(*) as COUNT1 from ICM428M where R428US='$request->R428US'"); if ($icm428m[0]->COUNT1 == '1') { return 'error exists'; } else { if ($usrprf[0]->COUNT == '1') { DB::connection(config('m3.connection', 'pgsql'))->insert("insert into ICM428M (R428CO, R428PL, R428WH, R428STS, R428US, R428FIRST, R428FAMILY, R428EMAIL, R428EMPCDE, R428ADMUSR, R428PWRUSR, MENU2OPT, MENU3OPT, MENU4OPT, MENU5OPT, MENU6OPT, R42811A) values ('$request->R428CO', '$request->R428PL', '$request->R428WH', '$request->R428STS', '$request->R428US', '$request->R428FIRST', '$request->R428FAMILY', '$request->R428EMAIL', $request->R428EMPCDE, '$request->R428ADMUSR', '$request->R428PWRUSR', 'NN" . $request->MENU2OPT3 . 'NNN' . $request->MENU2OPT7 . $request->MENU2OPT8 . "N', '" . $request->MENU3OPT1 . $request->MENU3OPT2 . "NNNNNNN', '" . $request->MENU4OPT1 . $request->MENU4OPT2 . $request->MENU4OPT3 . "NNNNNN', '" . $request->MENU5OPT1 . $request->MENU5OPT2 . $request->MENU5OPT3 . 'N' . $request->MENU5OPT5 . "NNNN','" . $request->MENU6OPT1 . $request->MENU6OPT2 . $request->MENU6OPT3 . "','" . $request->R42811A . "')"); return 'success'; } else { // CL program call here (ewobjtst.)ICMUSRPRF parms(R428US, R428FIRST, R428FAMILY) // 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); } $conn->setOptions(['persistent' => false, 'stateless' => true, 'debug' => true, 'debugLogFile' => '/www/sentm3test/htdocs/M3/storage/logs/toolkit_debug.log']); // Add LIB // $result = $conn->clCommand('ADDLIBLE LIB(MPDAT10)'); // define several input/output params $params = []; $params[] = $conn->addParameterChar('in', 10, 'User profile', 'E#iUsrPrf', $request->R428US); $params[] = $conn->addParameterChar('in', 20, 'First name', 'FIRST', $request->R428FIRST); $params[] = $conn->addParameterChar('in', 30, 'Family name', 'FAMILY', $request->R428FAMILY); // # $result = $conn->pgmCall(Config::get('eproconf.misc.PGM1'), Config::get('eproconf.misc.libname4'), $params, array(), array()); $result = $conn->pgmCall('ICMUSRPRF', 'EWOBJ', $params, [], []); if (! $result) { return 'error profile2'; } else { // Successful Call : User profile created with default password // dd($result); // echo ""; DB::connection(config('m3.connection', 'pgsql'))->insert("insert into ICM428M (R428CO, R428PL, R428WH, R428STS, R428US, R428FIRST, R428FAMILY, R428EMAIL, R428EMPCDE, R428ADMUSR, R428PWRUSR, MENU2OPT, MENU3OPT, MENU4OPT, MENU5OPT, MENU6OPT, R42811A,R42821A) values ('$request->R428CO', '$request->R428PL', '$request->R428WH', '$request->R428STS', '$request->R428US', '$request->R428FIRST', '$request->R428FAMILY', '$request->R428EMAIL', $request->R428EMPCDE, '$request->R428ADMUSR', '$request->R428PWRUSR', 'NN" . $request->MENU2OPT3 . 'NNN' . $request->MENU2OPT7 . $request->MENU2OPT8 . "N', '" . $request->MENU3OPT1 . $request->MENU3OPT2 . "NNNNNNN', '" . $request->MENU4OPT1 . $request->MENU4OPT2 . $request->MENU4OPT3 . "NNNNNN', '" . $request->MENU5OPT1 . $request->MENU5OPT2 . $request->MENU5OPT3 . 'N' . $request->MENU5OPT5 . "NNNN','" . $request->MENU6OPT1 . $request->MENU6OPT2 . $request->MENU6OPT3 . "','" . $request->R42811A . "','" . $request->R42821A . "')"); return 'success2'; } // #kd return "error profile"; } } } // // 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($pGMERRORS); 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', }; } }