M3 Integration fixes
This commit is contained in:
@@ -41,81 +41,80 @@ class UserControlController extends Controller
|
||||
//
|
||||
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') {
|
||||
$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';
|
||||
} 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";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user