env('ENDPOINTURLSSO').env('URLTOKEN'), CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => 'grant_type='.env('GRANT_TYPE').'&password='.env('PASSWORD').'&username='.env('USERNAME').'&client_secret='.env('CLIENT_SECRET'). '&client_id='.env('CLIENT_ID'), CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'charset:UTF-8', 'Accept: application/json' ), )); $response = curl_exec($curl); // dd($response); $responseJ = json_decode($response); if($response === false ){ return response()->json([ 'code' =>'400', 'status' =>'Failed', 'message' =>'Token Verification Error...'.curl_error($curl) ]); } else if(isset($responseJ->access_token) ){ $IonToken = $responseJ->access_token; // Log::info("New Token: " . $IonToken); Cache::put('token', $IonToken, now()->addMinutes(59)); } else{ // dd($response); return response()->json([ 'code' =>'400', 'status' =>'Failed', 'message' =>'Token Verification Error...M3 response:'.$response ]); } curl_close($curl); } return $IonToken; // return response()->json([ // 'code' => '200', // 'token' => $IonToken // ]); } # Check M3 API Token V2 public static function checkReceiveTokenV2(){ ini_set('max_execution_time', Config::get('arrays.PHPTimeOut')); ini_set('default_socket_timeout', Config::get('arrays.PHPTimeOut')); # Clear Cache // Cache::forget('token'); # Check if cached Token is still Valid $token = Cache::get('token'); if (isset($token)) { $IonToken = $token; // Log::info("Cached Token: ".$IonToken); } else{ ### CURL ### Generate Token $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => env('ENDPOINTURLSSO').env('URLTOKEN'), CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => 'grant_type='.env('GRANT_TYPE').'&password='.env('PASSWORD').'&username='.env('USERNAME').'&client_secret='.env('CLIENT_SECRET'). '&client_id='.env('CLIENT_ID'), CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'charset:UTF-8', 'Accept: application/json' ), )); $response = curl_exec($curl); // dd($response); $responseJ = json_decode($response); curl_close($curl); if($response === false ){ # Clear Cache Cache::forget('token'); # Return Error return response()->json([ 'code' =>'400', 'status' =>'Failed', 'message' =>'Token Verification Error...'.curl_error($curl) ]); } else if(isset($responseJ->access_token) ){ $IonToken = $responseJ->access_token; // Log::info("New Token: " . $IonToken); Cache::put('token', $IonToken, now()->addMinutes(59)); } else{ # Clear Cache Cache::forget('token'); return response()->json([ 'code' =>'400', 'status' =>'Failed', 'message' =>'Token Verification Error...M3 response:'.$response ]); } } // return $IonToken; return response()->json([ 'code' => '200', 'token' => $IonToken ]); } # Read M3 JSON and Analyse it for Errors public static function checkM3Errors($responseResult){ // dd($responseResult); # M3 Response Types $M3TypesResponse = ['CloseShipment','Move','COCharge','Replenish','MoveDock']; # CloseShipment Types And Contents $M3CloseShipmentResp = ['AddPackage','PickingListClose','TrailerNo','TrackingNo','ContentLabel', 'DeliveryNote','ShipLabel']; // 'ContentLabel', 'DeliveryNote','ShipLabel' $ErrorMessages = ''; $typesErrors =0; foreach ($M3TypesResponse as $key => $Type) { // dump($responseResult->$Type); if ($Type=='CloseShipment') { // dump($Type); $CloseShipmentErr = 0; $M3RespClose = $responseResult->$Type; foreach ($M3CloseShipmentResp as $key => $closeType) { $ErrorMessage = $M3RespClose->$closeType->ErrorMessage; $ErrorMessage = $ErrorMessage=="" ? "" : $ErrorMessage; $Result = $M3RespClose->$closeType->Result; $ResultT = $M3RespClose->$closeType->Result; $Result = $Result=="N/A" || $Result=="OK" ? "" : $Result; if ($ErrorMessage!='' || $Result!='') { $ErrorMessages .= $closeType.'-'.$Result.'-'.$ErrorMessage.' '; } // dump($closeType);// dump($ErrorMessage);// dump($Result); if ($ResultT=="N/A") { $CloseShipmentErr++; } } } else if($Type=='MoveDock'){ $MoveDockRes = isset($responseResult->$Type->Move) ? $responseResult->$Type->Move : ''; $ErrorMessage = isset($MoveDockRes->ErrorMessage) ? $MoveDockRes->ErrorMessage :''; $ErrorMessage = $ErrorMessage=="" ? "" : $ErrorMessage; $Result = isset($MoveDockRes->Result) ? $MoveDockRes->Result : ""; $ResultT = $Result; $Result = $Result=="N/A" || $Result=="OK" ? "" : $Result; if ($ErrorMessage!='' || $Result!='') { $ErrorMessages .= $Type.'-'.$Result.'-'.$ErrorMessage.' '; } // dump($Type);// dump($ErrorMessage);// dump($Result);// dump($responseResult->$Type); if ($ResultT=="N/A") { $typesErrors++; } } else{ $ErrorMessage = isset($responseResult->$Type->ErrorMessage) ? $responseResult->$Type->ErrorMessage :''; $ErrorMessage = $ErrorMessage=="" ? "" : $ErrorMessage; $Result = isset($responseResult->$Type->Result) ? $responseResult->$Type->Result : ""; $ResultT = $Result; $Result = $Result=="N/A" || $Result=="OK" ? "" : $Result; if ($ErrorMessage!='' || $Result!='') { $ErrorMessages .= $Type.'-'.$Result.'-'.$ErrorMessage.' '; } // dump($Type); // dump($ErrorMessage); // dump($Result); // dump($responseResult->$Type); if ($ResultT=="N/A") { $typesErrors++; } } } // dd($ErrorMessages); if ($CloseShipmentErr == count($M3CloseShipmentResp) && $typesErrors == count($M3TypesResponse)-1) { $ErrorMessages .= '-M3 did not call any method or type '; } return $ErrorMessages; } # Log All Success And Error to ICM699M public static function logToICM699M($data){ ini_set('max_execution_time', Config::get('arrays.PHPTimeOut')); $insertSQL = DB::connection(config('m3.connection', 'pgsql'))->table('ICM699M')->insert($data); // dump($data); // dump($insertSQL); } # Get Substring in string between 2 Substrings public static function getSubstringBetween($string, $start, $end) { $startPos = strpos($string, $start); if ($startPos === false) { return ''; } $endPos = strpos($string, $end, $startPos + strlen($start)); if ($endPos === false) { return ''; } $substring = substr($string, $startPos + strlen($start), $endPos - ($startPos + strlen($start))); return $substring; } public static function checkLength($JSONL,$DBL,$TYPE) { # Check type $JSONType = gettype($JSONL); switch ($JSONType) { case 'string': $JSONTypeConv = 'string'; break; case 'double': $JSONTypeConv = 'number'; break; case 'integer': $JSONTypeConv = 'number'; break; default: $JSONTypeConv = 'null'; break; } $TYPE = $TYPE == 'integer' || $TYPE == 'DEC' ? 'number' : $TYPE; // Log::info( $JSONL .' L: '. strlen($JSONL) .' DBL: '. $DBL .' Type:'.$JSONType.':'.$TYPE ); // Check Json Field should be < DB Field $LengthOK[413] = ( strlen($JSONL) <= $DBL ) ? true : false ; // Empty Fields $LengthOK[411] = true; //!empty($JSONL) ? true : false ; // Wrong Types $LengthOK[417] = true; //$JSONTypeConv == $TYPE ? true : false ; // Log::info($LengthOK); return $LengthOK; } public static function sanityzeString($StrTosanityze) { $badChars = Config::get('arrays.BadChars'); $goodString = trim($StrTosanityze); $goodString = str_replace("'", "",$goodString); $goodString = preg_replace('/\x{f0e0}/u', '', $goodString); $goodString = preg_replace('/\\\\u201[0-9A-F]+/i', '', $goodString); $goodString = str_replace($badChars, '',$goodString); $goodString = iconv("UTF-8", "ISO-8859-1//IGNORE", $goodString); $goodString = iconv("ISO-8859-1", "UTF-8", $goodString); # MAK : New Automatic Detection for encoding and conversion # Detect the encoding // $encoding = mb_detect_encoding($goodString, mb_list_encodings(), true); // Log::info($goodString); # If encoding is detected, convert the string // if ($encoding !== false) { // // Log::info($encoding); // // Log::info($goodString); // $goodString = mb_convert_encoding($goodString, "UTF-8", $encoding); // } else { // $goodString = ""; // } // dump($goodString); return $goodString; } # Remove Duplicate SubString public static function removeDuplicateSubstrings($str) { $result = ''; $seenPhrases = []; $phrases = explode(' ', $str); foreach ($phrases as $phrase) { if (!in_array($phrase, $seenPhrases)) { $result .= $phrase . ' '; $seenPhrases[] = $phrase; } } return trim($result); } public static function getUserCOWHSPLT(){ # Get Current USER $loggedUser = strtoUpper(m3_user()); // dump($loggedUser); $getUsers = DB::connection(config('m3.connection', 'pgsql'))->select("select R428US, R428ADMUSR, R428PWRUSR, R428CO, R428PL, R428WH, R42811A,R42821A from ICM428M where R428US='".$loggedUser."'"); foreach ($getUsers as $key=>$user) { if(trim($user->R428ADMUSR)=="Y") { # Different logic from Qinclude version : this not an Array $admin_users=trim($user->R428ADMUSR); } if(trim($user->R428PWRUSR)=="Y") { # Different logic from Qinclude version : this not an Array $power_users=trim($user->R428PWRUSR); } if(trim($user->R42811A)=="C") { $csr="Y"; } if(trim($user->R42821A)=="Y") { $execUser="Y"; } $UserCO = $user->R428CO; $UserWHS = $user->R428WH; $UserPL = $user->R428PL; $currentUser = [ 'UserCO' => $UserCO, 'UserWHS' => $UserWHS, 'UserPL' => $UserPL, ]; return $currentUser; } } }