265 lines
13 KiB
PHP
Executable File
265 lines
13 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\M3\Http\Controllers;
|
|
|
|
use Config;
|
|
use DB;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Modules\M3\Models\ICM428M;
|
|
use Modules\M3\Services\PostgresProgramBridge;
|
|
|
|
class UserControlController extends Controller
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
public static function index(Request $request)
|
|
{
|
|
$connection = config('m3.connection', 'pgsql');
|
|
$profile = null;
|
|
if (Schema::connection($connection)->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;
|
|
}
|
|
|
|
// 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 "<script>alert('Employee code entered does not exist, please try again');</script>";
|
|
// 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 "<script>alert('User profile $request->R428US was created on the system with default password.');</script>";
|
|
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<br>";
|
|
// $empcde=DB::connection(config('m3.connection', 'pgsql'))->select($sqlstmt);
|
|
// #dump($empcde);
|
|
// if($empcde[0]->COUNT=="0") {
|
|
// #echo "<script>alert('Employee code entered does not exist, please try again');</script>";
|
|
// 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 "<script>alert($pGMERRORS);</script>";
|
|
|
|
return 'error';
|
|
}
|
|
// Successful Call
|
|
else {
|
|
if ($request->ACTION == 'P') {
|
|
echo "<script>alert('The password has been reset to QAZ1WSX2 for '" . $request->USERID . "'. The user will need to enter a new password on next green screen connection.');</script>";
|
|
}
|
|
if ($request->ACTION == 'R') {
|
|
echo "<script>alert('User '" . $request->USERID . "' has been re-enabled successfully');</script>";
|
|
}
|
|
echo "<script>window.location.replace('.')</script>";
|
|
}
|
|
|
|
// 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<br>";
|
|
// 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 "<script>alert($pGMERRORS);</script>";
|
|
|
|
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',
|
|
};
|
|
}
|
|
}
|