sparqapi/api/application/helpers/readexceldata_helper.php
2020-11-07 12:44:02 +05:30

229 lines
6.5 KiB
PHP

<?php
class readexceldata
{
public static function getExcelSectionData($file_path_withname,$section_id = null,$pd_id = null)
{
$CI =&get_instance();
$CI->load->library('myspreadsheet');
// 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();
switch($section_id)
{
case is_numeric($section_id):
$return_data = SELF::getIndividualSectionData($sheetData,$section_ref_data);
if($section_id == 2) //get pd initialted address as custom function
{
$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']; }
}
break;
default:
$return_data = SELF::getTriggerData($sheetData,$section_ref_data);
}
return ($return_data);
}
static function getIndividualSectionData($sheetData,$section_ref_data)
{
//$start_letter = 'B';$i = 1;
$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);
$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);
// print_r($return_data);
// die();
return ($return_data);
}
static function getTriggerData($sheetData,$section_ref_data)
{
// echo 'worked';die();
$return_data = array();
unset($sheetData[1]);
foreach ($sheetData as $key => $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);
$temp['key_name'] = 'applicant_name';
$temp['value'] = $value['C'];
$return_data[] = $temp;
}
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;
}
}
return $return_data;
}
static function transformRowColumsForMultipleData($return_data,$keys)
{
$final_data = array();
// 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++)
{
$temp[$j][ $arr[$i] ] = isset($data_to_be_transform[ $arr[$i] ][$j]) ? $data_to_be_transform[ $arr[$i] ][$j] : 'DNA';
}
}
$return_data[$current_key] = $temp;
}
}
return $return_data;
}
}
?>