2,
"CompanyCode" => null,
"CompanyName" => "M&R MANUFACTURING SDN BHD"
],
[
"CompanyID" => 4,
"CompanyCode" => null,
"CompanyName" => "M&R MANUFACTURING SDN BHD (ISKANDAR)"
],
[
"CompanyID" => 5,
"CompanyCode" => null,
"CompanyName" => "M&R INTEGRATED SOLUTION SDN BHD"
],
[
"CompanyID" => 6,
"CompanyCode" => null,
"CompanyName" => "ASA MULTIPLATE (M) SDN BHD"
],
[
"CompanyID" => 7,
"CompanyCode" => null,
"CompanyName" => "M & R INTEGRATED SYNERGY SDN BHD"
]
] ;
$infotech_authorization = 'ASp8qEBeQpu/Y3FfoagKElhJgvi4A1hH0aTwcvIko1jPsHYm2x1rdEW+rqwZ/QY4YpBmmZhgvLiOZrx73yuQoQ==' ;
$infotech_api = 'https://malhrmsgateway.azurewebsites.net' ;
$infotech_clientid = 'dceb24cd-9965-404c-9988-8b8da4f6bd19' ;
$infotech_secretkey = 'WoXOHQfBAsUR3gTBu91uh5tcWxqR6e' ;
$infotech_key = '1234567890030188';
$infotech_iv = 'Info-TechGateWay' ;
foreach ( $companys as $kcompany => $vcompany ){
$infotech_companyid = $vcompany['CompanyID'] ;
$call_token = call( 'curl', $infotech_api.'/Authenticate', 'POST', [ "Authorization:".$infotech_clientid.':'.$infotech_secretkey, "customkey:".$infotech_authorization ], [ "Grant_type" => "password" ]
) ;
if ( $call_token['access_token'] != null ){
// get all current staff
$staffs = [] ;
$select_staff = $mysqli->query("SELECT staff_id, staff_idno, group_id FROM staff
WHERE deleted_at IS NULL AND staff_idno != '' ORDER BY group_id") ;
if ( $select_staff->num_rows > 0 ){
while ( $row_staff = $select_staff->fetch_assoc() ){
$staffs[$row_staff['staff_idno']] = $row_staff ;
}
}
// get all working code
$workingids = [] ;
$workingnames = [] ;
$select_working = $mysqli->query("SELECT group_id, group_name FROM setting_working_group
WHERE deleted_at IS NULL ORDER BY group_id") ;
if ( $select_working->num_rows > 0 ){
while ( $row_working = $select_working->fetch_assoc() ){
$workingids[$row_working['group_id']] = $row_working['group_name'] ;
$workingnames[$row_working['group_name']] = $row_working['group_id'] ;
}
}
// get staff details
$call_parameter = [
"CompanyID" => $infotech_companyid,
"IsActive" => "1"
] ;
$plaintext = json_encode( $call_parameter ) ;
$ciphertext = openssl_encrypt( $plaintext, 'aes-128-cbc', $infotech_key, OPENSSL_RAW_DATA, $infotech_iv ) ;
$get_str = base64_encode( $ciphertext ) ;
$call_staff = call( 'curl-json', $infotech_api.'/Api/GetEmployeeDetails', 'GET', [ "Authorization:Bearer ".$call_token['access_token'] ], [ "str" => $get_str ]
) ;
// check staff shiftcode same with system or not
$update_staffs = [] ;
if ( count($call_staff) > 0 ){
foreach ( $call_staff as $k => $v ){
$get_staff = $staffs[$v['EmployeeCode']] ;
$get_group_id = $get_staff['group_id'] ;
if ( $v['ShiftCode'] != '' && $v['ShiftCode'] != $workingids[$get_group_id] ){
$update_staffs[$get_staff['staff_id']] = $workingnames[$v['ShiftCode']] ;
}
}
}
// update all staff latest shift
if ( count($update_staffs) > 0 ){
$staff_ids = [] ;
$case_ids = [] ;
foreach ( $update_staffs as $k => $v ){
$case_ids[] = " WHEN staff_id = '".$k."' THEN '".$v."'" ;
$staff_ids[] = $k ;
}
$update_query = "
UPDATE staff
SET group_id = CASE
".implode( '', $case_ids )."
ELSE group_id
END
WHERE staff_id IN ( ".implode( ', ', $staff_ids )." )
" ;
$mysqli->query( $update_query ) ;
}
// get leave details
$call_parameter = [
"CompanyID" => $infotech_companyid,
"EmpCode" => "",
// "FromDate" => '22/07/2023',
// "ToDate" => '22/07/2023',
"FromDate" => date( "d/m/Y", time() ),
"ToDate" => date( "d/m/Y", time() )
] ;
$plaintext = json_encode( $call_parameter ) ;
$ciphertext = openssl_encrypt( $plaintext, 'aes-128-cbc', $infotech_key, OPENSSL_RAW_DATA, $infotech_iv ) ;
$get_str = base64_encode( $ciphertext ) ;
$call_leave = call( 'curl-json', $infotech_api.'/Api/GetLeaveDetails', 'GET', [ "Authorization:Bearer ".$call_token['access_token'] ], [ "str" => $get_str ]
) ;
$leaves = [] ;
if ( count($call_leave) > 0 ){
foreach ( $call_leave as $k => $v ){
if ( $v['LeaveStatus'] == 'APPROVED' ){
$get_staff = $staffs[$v['EmpCodeC']] ;
$v['staff_id'] = $get_staff['staff_id'] ;
$leaves[] = $v ;
$kkk[$v['LeaveType']] = $v['LeaveType'] ;
}
}
}
foreach ( $leaves as $kleave => $vleave ){
$leave_type_mode = 'working' ;
$leave_date = date( 'Y-m-d', strtotime( $vleave['LvDateD'] ) ) ;
$leave_work_day = '0' ;
$leave_type = 'unpaid' ;
$leave_work_direct = 'yes' ;
switch ( $vleave['LeaveType'] ){
case 'HOURLY LEAVE UNPAID' :
$leave_type = 'unpaid' ;
$leave_work_day = 'hourly' ;
break ;
case 'UNPAID LEAVE' :
$leave_type = 'unpaid' ;
$leave_work_day = 'full' ;
break ;
case 'UNPAID LEAVE FIRST HALF' :
$leave_type = 'unpaid' ;
$leave_work_day = 'firsthalf' ;
break ;
case 'UNPAID LEAVE SECOND HALF' :
$leave_type = 'unpaid' ;
$leave_work_day = 'secondhalf' ;
break ;
case 'ANNUAL LEAVE' :
case 'REPLACEMENT LEAVE' :
case 'MATRIMONIAL LEAVE' :
case 'COMPASSIONATE LEAVE' :
case 'EMERGENCY LEAVE' :
$leave_type = 'annual' ;
$leave_work_day = 'full' ;
break ;
case 'ANNUAL LEAVE FIRST HALF' :
case 'EMERGENCY LEAVE FIRST HALF' :
$leave_type = 'annual' ;
$leave_work_day = 'firsthalf' ;
break ;
case 'ANNUAL LEAVE SECOND HALF' :
case 'EMERGENCY LEAVE SECOND HALF' :
$leave_type = 'annual' ;
$leave_work_day = 'secondhalf' ;
break ;
case 'MEDICAL LEAVE' :
case 'HOSPITALIZATION LEAVE' :
case 'MATERNITY LEAVE' :
case 'PATERNITY LEAVE' :
$leave_type = 'sick' ;
$leave_work_day = 'full' ;
break ;
}
$select_leave = $mysqli->query( "SELECT * FROM staff_leave_date
WHERE deleted_at IS NULL AND staff_id = '".$vleave['staff_id']."' AND leave_type = '".$leave_type."' AND leave_type_mode = '".$leave_type_mode."' AND leave_date = '".$leave_date."'" ) ;
if ( $select_leave->num_rows == 0 ){
$mysqli->query( "INSERT INTO staff_leave_date
( staff_id, leave_type, leave_type_mode, leave_date, leave_work_direct, leave_work_day ) VALUES
( '".$vleave['staff_id']."', '".$leave_type."', '".$leave_type_mode."', '".$leave_date."', '".$leave_work_direct."', '".$leave_work_day."' )" ) ;
}
}
// print_r($leaves) ;
// print_r("
") ;
// print_r("
") ;
// print_r("
") ;
}
}
?>