sparqapi/api/application/helpers/readexceldata_helper.php
2020-11-27 18:11:04 +05:30

320 lines
9.8 KiB
PHP

<?php
class readexceldata
{
private static $current_section_id = null;
public static function getExcelSectionData($file_path_withname,$section_id = null,$pd_id = null)
{
$CI =&get_instance();
$CI->load->library('myspreadsheet');
SELF::$current_section_id = $section_id;
// echo is_numeric($section_id);
// var_dump($section_id);die();
//echo $file_path_withname;echo file_exists($file_path_withname); die();
// $file_path_withname = 'C:/xampp/htdocs/ssa_external_data/testing/tmp/mySMCPD.xlsx';
// $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$spreadsheet_io_fact = $CI->myspreadsheet->getIOFactory($file_path_withname);
//$curr_spreadshett = $spreadsheet_io_fact::load($file_path_withname);
//echo $spreadsheet_io_fact->getSheetCount();
//$spreadsheet_io_fact->setReadDataOnly(true);
$spreadsheet_io_fact->setActiveSheetIndex(0);
$sheetData = $spreadsheet_io_fact->getActiveSheet()->toArray(null, true, false, true);
//print_r($sheetData);die();
return
SELF::seperateSectionData($section_id,$sheetData,$pd_id);
// print_r(SELF::seperateSectionData($section_id,$sheetData,$pd_id));die();
// $CI->load->model('PD_Model');
//return ( $CI->PD_Model->selectCustomRecords(array('pd_co_applicant_id','applicant_name'),array('fk_pd_id' => $pd_id),PDAPPLICANTSDETAILS));
// return array('sam'=>'dsnlskdnm');
// print_r(array('sam'=>'dsnlskdnm'));
}
static function seperateSectionData($section_id,$sheetData,$pd_id)
{
// echo 's-worked';die();
$CI =&get_instance();
$CI->load->model('PD_Model');
$where_condition_array = array('isactive' => 1,'section_id' => $section_id);
//if($section_id == null){ $where_condition_array = array('isactive' => 1,'section_id in ' => '(null,1)'); }
$section_ref_data = $CI->PD_Model->selectCustomRecords(array('*'),$where_condition_array,EXCEL_COLUMN_REF_NAME);
// print_r($section_ref_data);die();
$return_data = array();
// $section_id = is_null($section_id) ? '' : $section_id;
if($section_id)
{
$return_data = SELF::getIndividualSectionData($sheetData,$section_ref_data);
if($section_id == 2 || $section_id == 8) //get pd initialted address as custom function
{
if($section_id == 8)
{
$address_section = $CI->PD_Model->selectCustomRecords(array('*'),array('isactive' => 1,'fk_form_id' => 2,'fk_pd_id' => $pd_id),SMC_CREDIT_PD_SECTION_DATA);
// print_r($address_section);die();
if(is_array($address_section) && count($address_section))
{
$jsn = json_decode($address_section[0]['json'],true);
// echo strtolower($jsn['is_pd_done_on_initiated_address']);die();
if(strtolower($jsn['is_pd_done_on_initiated_address']) == 'no')
{
$return_data['initiated_address'] = $jsn['alternative_address'];
}
else
{
$return_data['initiated_address'] = $jsn['initiated_address'];
}
}
}
else if($section_id == 2 || (!isset($return_data['initiated_address'])))
{
$pd_address = $CI->PD_Model->getPDAddress($pd_id);
if(count($pd_address)){ $return_data['initiated_address'] = $pd_address[0]['addressline1'].', '.$pd_address[0]['city_name'].', '.$pd_address[0]['state_name'].' - '.$pd_address[0]['pincode']; }
}
}
if($section_id == 3) //get sub product as custom func tion
{
$pd_master = $CI->PD_Model->getPDMasterDetails($pd_id);
if(count($pd_master)){ $return_data['sub_product'] = $pd_master[0]['fk_subproduct_id']; }
}
}
else
{
$return_data = SELF::getTriggerData($sheetData,$section_ref_data);
}
return ($return_data);
}
static function getIndividualSectionData($sheetData,$section_ref_data)
{
$return_data = array();
$keys = array();
foreach ($sheetData as $key => $value)
{
// print_r($value);
// die();
$tmp = SELF::returnMatchedData($section_ref_data,$value);//print_r($tmp);
if(is_array($tmp))
{
if(isset($tmp['parent_key']))
{
$trimedData = SELF::trimExcelEmptyCells($value);
// $trimedData = ($value);
$temp[$tmp['parent_key']][$tmp['key_name']] = SELF::getMultipleCellValues($trimedData,$tmp['key_name']);
$keys[$tmp['parent_key']][] = $tmp['key_name'];
$return_data = $temp;
}
else
{
$temp[$tmp['key_name']] = $value['C'];
$return_data = $temp;
}
}
}
// print_r($keys);
//print_r($return_data);//die();
$return_data = SELF::transformRowColumsForMultipleData($return_data,$keys);
if(SELF::$current_section_id == 10)
{
$return_data['financial_info'] = array_reverse($return_data['financial_info']);
$return_data['broken_period_turnover_percent'] = SELF::getNumFormat($return_data['broken_period_turnover_percent'],'per');
// $return_data['net_profit_to_sales_percent'] = SELF::getNumFormat($return_data['net_profit_to_sales_percent'],'per');
// $return_data['net_profit_rs'] = SELF::getNumFormat($return_data['net_profit_rs']);
// $return_data['sales_amount'] = SELF::getNumFormat($return_data['sales_amount']);
$return_data['broken_period_turnover_cy'] = SELF::getNumFormat($return_data['broken_period_turnover_cy']);
$return_data['broken_period_turnover_py'] = SELF::getNumFormat($return_data['broken_period_turnover_py']);
$return_data['broken_period_from_month'] = SELF::getExcel2DateFormat($return_data['broken_period_from_month']);
$return_data['broken_period_to_month'] = SELF::getExcel2DateFormat($return_data['broken_period_to_month']);
}
// print_r($return_data);
// die();
return ($return_data);
}
static function getTriggerData($sheetData,$section_ref_data)
{
// echo 'worked';die();
$return_data = array();
unset($sheetData[1]);
$main_applicant_column_name = '';
foreach ($sheetData as $key => $value)
{
$value = SELF::trimExcelEmptyCells($value);
//print_r($value);//die();
$tmp = SELF::returnMatchedData($section_ref_data,$value);
if(is_array($tmp) && isset($tmp['key_name']))
{
$temp[$tmp['key_name']] = $value['C'];
//$temp['value'] = $value['C'];
$return_data = $temp;
}
if($key == 8)
{
//print_r($value);
$value = (array_splice(($value),3));$value = array_reverse($value);
foreach ($value as $val)
{
$return_data['co_applicants'][] = array('applicant_name' => $val);
}
}
if($key == 9)
{break;}
}
return ($return_data);
}
static function returnMatchedData($arr,$val)
{
foreach ($arr as $key => $value)
{
if(!$value['parent_key'] && ($val['A'] == $value['ref']))
{
return array('key_name' => $value['key_name']);
}
else if($value['parent_key'] && ($val['A'] == $value['ref']))
{
return array('key_name' => $value['key_name'],'parent_key' => $value['parent_key']);
}
}
}
public static function getApplicantsNameById($id,$latest_applicants_names,$type = 1) //$type i for return name only, 2 for return title only, and 3 for return both
{
foreach ($latest_applicants_names as $key => $value) {
if($id == $value['pd_co_applicant_id'])
{
return $type == 1 ? $value['applicant_name'] : ($type == 2 ? $value['title'] : ($value['title'].' '.$value['applicant_name']));
}
}
}
static function trimExcelEmptyCells($arr)
{
$return_data = array();
foreach ($arr as $key => $value)
{
if($value)
{
$return_data[$key] = $value;
}
}
return $return_data;
}
static function getMultipleCellValues($trimedData,$key_name)
{
$return_data = array();
foreach ($trimedData as $key => $value)
{
if($key != 'A' && $key != 'B')
{
// $return_data[] = array($key_name => $value);
$return_data[] = $value;
}
}
// if(SELF::$current_section_id == 5)
// {
// print_r($return_data);
// }
return $return_data;
}
static function transformRowColumsForMultipleData($return_data,$keys)
{
$final_data = array();
$keys_to_be_decimal = array('sales_revenue','net_profit');
$keys_to_be_per = array('share_holding');
// print_r($return_data);
// print_r($keys);die();
foreach ($keys as $current_key => $arr)
{
if(array_key_exists($current_key, $return_data))
{
$data_to_be_transform = $return_data[$current_key];
// print_r($data_to_be_transform);
$total_no_of_fields = count($data_to_be_transform);
$total_no_of_data = count( (reset($data_to_be_transform)) );
// echo $total_no_of_fields.'-'.$total_no_of_data;die();
$temp = array();
for($i = 0;$i<$total_no_of_fields;$i++)
{
for($j=0;$j<$total_no_of_data;$j++)
{
if(in_array($arr[$i],$keys_to_be_decimal))
{
$temp[$j][ $arr[$i] ] = isset($data_to_be_transform[ $arr[$i] ][$j]) ? (SELF::getNumFormat($data_to_be_transform[ $arr[$i] ][$j])) : '';
}
else if(in_array($arr[$i],$keys_to_be_per))
{
$temp[$j][ $arr[$i] ] = isset($data_to_be_transform[ $arr[$i] ][$j]) ? (SELF::getNumFormat($data_to_be_transform[ $arr[$i] ][$j],'per')) : '';
}
else
{
$temp[$j][ $arr[$i] ] = isset($data_to_be_transform[ $arr[$i] ][$j]) ? $data_to_be_transform[ $arr[$i] ][$j] : '';
}
}
}
$return_data[$current_key] = $temp;
}
}
return $return_data;
}
static function getNumFormat($field,$field_type = '')
{
if(isset($field) && $field != '')
{
if($field_type == 'per')
{
$field = $field * 100;
}
$field = number_format($field,2,'.','');
}
return $field;
}
static function getExcel2DateFormat($excel_date)
{
// $excel_date = 39994;
return gmdate('d-m-Y',$UNIX_DATE = (($excel_date) - 25569) * 86400);
// return date('m/d/Y',mktime(0,0,0,1,($excel_date-1),1900));
//gmdate("d-m-Y H:i:s", $UNIX_DATE);
}
}
?>