File: //home/cafsindia/uds.cafsinfotech.in/app/api_controller.php
<?php
$frm = "";
$today = date("Y-m-d");
$start = date("Y-m-d h:i:s");
$created_on = date("Y-m-d H:i:s");
//Module Initilization
if(isset($_REQUEST["frm"])){
$frm = $_REQUEST['frm'];
require("./api_model.php");
$api_model = new api_model;
}
$url_rslt = explode('/', $frm);
$frm = $url_rslt[0];
//PAYROLL PROCESS SCHEDUER
if($frm === "pay_process"){
$start = date("Y-m-d H:i:s");
$today = date("Y-m-d H:i");
$created_on = date("Y-m-d H:i:s");
$final_count = 0;
//CREATE CRON
$prime_cron_id = $api_model->insert_cron_status("Salary Process",$frm,$start,"Auto",$today);
if($today){
$pend_qry = 'select count(*) as pendcount from cw_trans_process_list where cw_trans_process_list.process_status = 2 and cw_trans_process_list.trans_status = 1';
$pend_rslt = $api_model->is_exit_data($pend_qry);
$pendcount = $pend_rslt[0]->pendcount;
if($pendcount){ // check previous scheduller exist
//UPDATE CRON
$api_model->update_cron_status($prime_cron_id,"0");
echo json_encode(array('success' => FALSE, 'sts' =>"Previous Schedulled Process still Inprogress. Please try Aftersometime..!"));
exit(0);
}
$exit_qry = 'select cw_trans_process_list.prime_trans_process_id,cw_trans_process_list.process_month,personal_code,cw_trans_process_list.process_month,cw_trans_process_list.personal_code,cw_trans_process_list.project_id,cw_trans_process_list.wbs_element,cw_trans_process_list.total,cw_trans_process_list.trans_created_by from cw_trans_process_list where date_format(cw_trans_process_list.trans_created_date, "%Y-%m-%d %H:%i") <= "'.$today.'" and cw_trans_process_list.process_status = 0 and cw_trans_process_list.trans_status = 1';
$exit_rslt = $api_model->is_exit_data($exit_qry);
$check_id = 0;
if(count($exit_rslt)){
/*$msg = $api_model->email_msg("Payroll Api has started");
$api_model->call_email($msg);*/
foreach($exit_rslt as $key => $val){
$prime_id = (int)$val->prime_trans_process_id;
$process_type = "Auto";
//CODE ONLY FOR FIRST INDEX OF LOOP
if($check_id === 0){
$check_id = $prime_id;
}
$process_month = $val->process_month;
$personal_code = $val->personal_code;
$project_id = $val->project_id;
$wbs_element = $val->wbs_element;
$created_id = $val->trans_created_by;
//---- UPDATE FUNCTION FOR TRANS SCHEDULER INPROGRESS STATUS HAVING UPDATE START-------
//UPDATE QRY FOR INPROGRESS STATUS UPDATE PRIME ID BASED START
$pro_upd_qry = 'UPDATE cw_trans_process_list SET process_status = "2" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1';
$pro_upd_rslt = (int)$api_model->pay_qry_process($pro_upd_qry);
//UPDATE QRY FOR INPROGRESS STATUS UPDATE PRIME ID BASED END
if($pro_upd_rslt){
//-------- PARAMETER PAYROLL PROCEDURE CALL FUNCTION START--------------
$rslt = $api_model->payroll_proced($project_id,$wbs_element,$process_month,$prime_id);
//-------- PARAMETER PAYROLL PROCEDURE CALL FUNCTION END----------------
$completed_count = 0;
$failed_count = 0;
if(count($rslt)){
$pay_rslt = (int)$rslt[0]['result'];
if($pay_rslt === 1){
$process_status = "1";
$sap_status = "1";
}else{
$process_status = "3";
$sap_status = "1";
}
//------- SELECT COUNT FROM MI FMS AND TRANS FMS TABLE START-------
//GROUP BY cw_transactions_fms.personal_code,cw_transactions_fms.project_id,cw_transactions_fms.wbs_element
$exit_trans_qry = 'select SUM(CASE WHEN check_status = 1 then 1 else 0 end) as total_count,SUM(CASE WHEN check_status = 1 and payroll_status = 1 then 1 else 0 end) as completed_count from cw_monthly_input_fms where cw_monthly_input_fms.process_month = "'.$process_month.'" and cw_monthly_input_fms.personal_code = "'.$personal_code.'" and cw_monthly_input_fms.project_id = "'.$project_id.'" and cw_monthly_input_fms.wbs_element = "'.$wbs_element.'" and cw_monthly_input_fms.trans_status = 1 and cw_monthly_input_fms.prime_trans_process_id = "'.$prime_id.'" ';
$exit_trans_rslt = $api_model->is_exit_data($exit_trans_qry);
if(!empty($exit_trans_rslt)){
$completed_count = $exit_trans_rslt[0]->completed_count;
$total_count = $exit_trans_rslt[0]->total_count;
$final_count = $final_count + $completed_count;
}
//FAILED COUNT CALCULATE
$failed_count = $total_count - $completed_count;
//--------- SELECT COUNT FROM MI FMS AND TRANS FMS TABLE END--------
//--------- TRANS PROCESS UPDATE START ----------------------------
$process_upd_qry = 'UPDATE cw_trans_process_list SET total = "'.$total_count.'",completed = "'.$completed_count.'",failed = "'.$failed_count.'",process_status = "'.$process_status.'",sap_trans_status = "'.$sap_status.'",trans_updated_by = "'.$created_id.'",trans_updated_date = "'.$created_on.'" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1';
$process_rslt = $api_model->pay_qry_process($process_upd_qry);
}else{
//UPDATE QRY REVERT to PENDING FROM INPROGRESS STATUS IF UPDATE FAILED
$pro_upd_qry = 'UPDATE cw_trans_process_list SET process_status = "0" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1 and process_status = "2"';
$pro_upd_rslt = (int)$api_model->pay_qry_process($pro_upd_qry);
}
}else{
//UPDATE QRY REVERT to PENDING FROM INPROGRESS STATUS IF UPDATE FAILED
$pro_upd_qry = 'UPDATE cw_trans_process_list SET process_status = "0" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1 and process_status = "2"';
$pro_upd_rslt = $api_model->pay_qry_process($pro_upd_qry);
}
}
/*$msg = $api_model->email_msg("Payroll Api has ended");
$api_model->call_email($msg);*/
}else{
//UPDATE CRON
$api_model->update_cron_status($prime_cron_id,"0");
echo json_encode(array('success' => FALSE, 'sts' =>"No Record found!"));
exit(0);
}
//UPDATE CRON
$api_model->update_cron_status($prime_cron_id,$final_count);
echo json_encode(array('success' => TRUE, 'sts' =>"Data are Processed!"));
}
}else
if($frm === "payslip_single"){
$module_name = "employees";
//CREATE CRON
$prime_cron_id = $api_model->insert_cron_status("Payslip Single",$frm,$start,"Auto",$today);
$single_qry = 'SELECT * FROM cw_trans_process_list INNER JOIN cw_sap_wbs ON cw_sap_wbs.wbs_id = cw_trans_process_list.wbs_element WHERE cw_trans_process_list.process_status = 1 AND cw_trans_process_list.payslip_status = 0 AND cw_sap_wbs.payslip_status = 1 AND cw_trans_process_list.trans_status = 1 AND cw_sap_wbs.trans_status = 1 ';
$single_rslt = $api_model->is_exit_data($single_qry);
if(!$single_rslt){
//UPDATE CRON
$api_model->update_cron_status($prime_cron_id,"0");
echo json_encode(array('success' => FALSE, 'sts' =>"No Data Available to process!"));
exit(0);
}else{
$data = $api_model->get_array_data($module_name);
// $msg = $api_model->email_msg("Payslip single sheet Api has started");
// $api_model->call_email($msg);
$final_count = 0;
foreach($single_rslt as $key => $value){
$process_month = $value->process_month;
$prime_id = $value->prime_trans_process_id;
$project_id = $value->project_id;
$wbs_element = $value->wbs_element;
$sap_sts = (int)$value->sap_trans_status;
$pdf_template = (int)$value->payslip_design;
# GET EMPLOYEE CODE
$emp_sel_query = 'SELECT employee_code FROM cw_transactions_fms WHERE sap_trans_status = 2 AND payslip_sts != 1 AND trans_status = 1 AND prime_trans_process_id = "'.$prime_id.'"';
$employee_rslt = $api_model->is_exit_data($emp_sel_query);
$employee_code = array_map(function($employee_rslt){
return $employee_rslt->employee_code;
}, $employee_rslt);
$final_count = $final_count + count($employee_code);
if($employee_code){
# UPDATE PAYSLIP STS TO INPROGRESS BASED ON PRIME ID
$upd_qry = 'UPDATE cw_trans_process_list SET payslip_status = "2" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1';
$upd_rslt = (int)$api_model->pay_qry_process($upd_qry);
$rslt = $api_model->pdf_generation_common($project_id,$wbs_element,$employee_code,$process_month,$pdf_template,$module_name,$data['db_name'],$data['print_table_result'],$data['where_result'],$data['form_result_array'],$data['form_set_rslt'],$data['design_arr'],$data['payslip_based_on'],$data['payslip_arr'],$prime_id);
# BASED ON SAP TRANS STS UPDATE PAYSLIP STS.
if($rslt['failed_count'] > 0){
$pro_upd_qry = 'UPDATE cw_trans_process_list SET payslip_status = "0",payslip_processed = "'.$rslt['processed_count'].'",payslip_failed = "'.$rslt['failed_count'].'" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1 ';
$pro_upd_rslt = $api_model->pay_qry_process($pro_upd_qry);
}else{ # UPDATE PAYSLIP STS TO [YET TO START] IF IT IS SUCCESS.
$pro_upd_qry = 'UPDATE cw_trans_process_list SET payslip_status = "1",payslip_processed = "'.$rslt['processed_count'].'",payslip_failed = "'.$rslt['failed_count'].'" WHERE prime_trans_process_id = "'.$prime_id.'" and trans_status = 1 ';
$pro_upd_rslt = $api_model->pay_qry_process($pro_upd_qry);
}
}
}
// $msg = $api_model->email_msg("Payslip single sheet Api has Ended");
// $api_model->call_email($msg);
//UPDATE CRON
$api_model->update_cron_status($prime_cron_id,$final_count);
echo json_encode(array('success' => TRUE,'sts' => 'Payslip Processed Successfully'));
}
}else
if($frm === 'onboard_success'){
$api_token = $api_model->get_token();
$prime_cron_id = $api_model->insert_cron_status("Onboard Success",$frm,$start,"Auto",$today);
$onboard_emp_qry = 'SELECT * FROM cw_onboard_success_list WHERE onboard_status = 0';
$onboard_emp_rslt = $api_model->is_exit_data($onboard_emp_qry);
if(!$onboard_emp_rslt){
echo json_encode(array('success' => FALSE,'sts' => 'No Data Available')); exit(0);
}
foreach($onboard_emp_rslt as $val){
$onboard_success_upd = $api_model->onboard_success_upd($val->aadhar_card_no,$val->employee_code,$api_token);
}
$api_model->update_cron_status($prime_cron_id,count($onboard_emp_rslt));
echo json_encode(array('success' => TRUE,'sts' => 'Updated Successfully'));
}else
if($frm === 'emp_inactive'){
$api_token = $api_model->get_token();
$prime_cron_id = $api_model->insert_cron_status("Onboard Inactive",$frm,$start,"Auto",$today);
$inactive_emp_qry = 'SELECT * FROM cw_emp_inactive_list WHERE inactive_status = 0';
$inactive_emp_rslt = $api_model->is_exit_data($inactive_emp_qry);
if(!$inactive_emp_rslt){
echo json_encode(array('success' => FALSE,'sts' => 'No Data Available')); exit(0);
}
foreach($inactive_emp_rslt as $val){
$inactive_upd = $api_model->emp_inactive_upd($val->aadhar_card_no,$val->employee_code,$val->dol,$api_token);
}
$api_model->update_cron_status($prime_cron_id,count($onboard_emp_rslt));
echo json_encode(array('success' => TRUE,'sts' => 'Updated Successfully'));
}else
if($frm === "update_password"){
$rslt = $api_model->update_password();
echo json_encode(array('success' => TRUE,'sts' => 'Updated Successfully'));
}else{
echo json_encode(array('Status' => 400,'success' => False,'data' => "Bad Request"));
}
?>