MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
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"));
	}
?>