isNotEmpty($_FILES['file']['name'])){
$return_arr["status"]=0;
$return_arr["message"]=" Error has occured.";
exit;
}
// Getting file name
$filename = $_FILES['file']['name'];
//Valid extension
$valid_ext = array('xls', 'csv', 'xlsx');
// file extension
$file_extension = pathinfo($filename, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
$location = "files/".$filename = $_FILES['file']['name'];
// Check extension
if(!in_array($file_extension,$valid_ext)){
$return_arr["status"]=0;
$return_arr["message"]=" Invalid file type.";
exit;
}
$maxsize = 50097152;
$minsize = 1;
if($_FILES['file']['size'] >= $maxsize || $_FILES['file']['size'] == 0 ){
$return_arr["status"]=0;
$return_arr["message"]=" File too large. Image must less than ".round(($maxsize/1000000), 0)." megabytes.";
echo json_encode($return_arr);
exit;
}
//VALIDATIONS SUCCESS CONTINUE BELOW
//GLOBALS
//COUNTINGS
$GLOBALS['total_data_count'] = 0;
$GLOBALS['inserted_count'] = 0;
$GLOBALS['inserted_vehicle_count'] = 0;
$GLOBALS['inserted_sales_count'] = 0;
$GLOBALS['not_inserted_count'] = 0;
$GLOBALS['no_dms_count']= 0;
$GLOBALS['no_brand_count']= 0;
$GLOBALS['no_model_count']= 0;
$GLOBALS['no_company_count']= 0;
$GLOBALS['no_dealer_count']= 0;
$GLOBALS['no_name_count']= 0;
$GLOBALS['no_mobile_count']= 0;
$GLOBALS['invalid_gm_count']=0;
$GLOBALS['invalid_sc_count']= 0;
$GLOBALS['invalid_mobile_count']= 0;
$GLOBALS['no_cs_count']= 0;
$GLOBALS['duplicate_plate_count']= 0;
$GLOBALS['duplicate_cs_count']= 0;
$GLOBALS['duplicate_customer_count']= 0;
$GLOBALS['duplicate_mobile_count']= 0;
$GLOBALS['duplicate_email_count']= 0;
$GLOBALS['no_date_count']= 0;
$GLOBALS['invalid_date_count']= 0;
$GLOBALS['under_age_count']= 0;
//ARRAYS
$GLOBALS['row_dms_headers'] = array();
$GLOBALS['not_inserted_list_v2'] = array();
//ERROR MESSAGES
$GLOBALS['no_brand'] = "Brand not found.";
$GLOBALS['no_model'] = "Model not found.";
$GLOBALS['no_dms'] = "DMS not found.";
$GLOBALS['no_company'] = "Company not found.";
$GLOBALS['no_dealer'] = "Dealer not found.";
$GLOBALS['no_name']= "Customer name not found.";
$GLOBALS['no_mobile']= "Mobile not found.";
$GLOBALS['invalid_mobile']= "Invalid mobile.";
$GLOBALS['invalid_gm']= "Group manager not found.";
$GLOBALS['invalid_sc']= "Sales consultant not found.";
$GLOBALS['no_cs']= "Conduction sticker not found.";
$GLOBALS['duplicate_plate']= "Duplicate plate.";
$GLOBALS['duplicate_cs']= "Duplicate conduction sticker.";
$GLOBALS['duplicate_customer']= "Duplicate customer record.";
$GLOBALS['duplicate_mobile']= "Duplicate mobile.";
$GLOBALS['duplicate_email']= "Duplicate email.";
$GLOBALS['no_date']= "Invalid date format.";
$GLOBALS['invalid_date']= "Invalid date.";
$GLOBALS['under_age']= "Invalid age (must be 17 and above).";
//ARRAY TO BE INSERTED
$GLOBALS['user_id']= $_SESSION['user']['id'];
$GLOBALS['customer_affiliation'] = array();
$GLOBALS['vehicle_data'] = array();
$GLOBALS['vehicle_data_plate'] = array();
$GLOBALS['vehicle_data_cs'] = array();
$GLOBALS['sales_data'] = array();
$GLOBALS['vehicle_offered'] = array();
//REPORTING
$GLOBALS['data_count_list'] = "";
$GLOBALS['data_count_list_v2'] = array();
//process excel file
move_uploaded_file($_FILES['file']['tmp_name'], $location);
$file_type = \PhpOffice\PhpSpreadsheet\IOFactory::identify($location);
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($file_type);
try {
$spreadsheet = $reader->load($location);
//remove excel after store to phpspreadsheet
unlink($location);
$data = $spreadsheet->getActiveSheet()->toArray();
} catch (\Exception $e) {
$return_arr["status"]=2;
$return_arr["header_column_not_found_message"] = array(array('message'=>'Invalid spreadsheet file. Contact your system administrator.
Error: '.$e));
echo json_encode($return_arr);
exit;
}
$data = array_map(array($utility, 'upperCaseNestedArray'), $data);
$data = array_map(array($db, 'escape'), $data);
$highestRow = $spreadsheet->getActiveSheet()->getHighestRow();
$highestColumn = $spreadsheet->getActiveSheet()->getHighestColumn();
$ColumnNumber = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
// print_r($data);exit;
// echo count($data);exit;
// echo $highestRow.' '.$highestColumn.' '.$ColumnNumber;exit;
//get available fieldnames from database
$array_dms = $import->getArrayFields(1,$db);
$array_company = $import->getArrayFields(2,$db);
$array_dealer = $import->getArrayFields(3,$db);
$array_customer_no = $import->getArrayFields(4,$db);
$array_corporation_name = $import->getArrayFields(5,$db);
$array_first_name = $import->getArrayFields(6,$db);
$array_middle_name = $import->getArrayFields(7,$db);
$array_last_name = $import->getArrayFields(8,$db);
$array_suffix = $import->getArrayFields(9,$db);
$array_profession = $import->getArrayFields(10,$db);
$array_position = $import->getArrayFields(11,$db);
$array_business_company = $import->getArrayFields(12,$db);
$array_nature_of_business = $import->getArrayFields(13,$db);
$array_affiliation = $import->getArrayFields(14,$db);
$array_facebook = $import->getArrayFields(15,$db);
$array_address_1 = $import->getArrayFields(16,$db);
$array_address_2 = $import->getArrayFields(17,$db);
$array_email = $import->getArrayFields(18,$db);
$array_mobile = $import->getArrayFields(19,$db);
$array_business_phone = $import->getArrayFields(20,$db);
$array_birthday = $import->getArrayFields(21,$db);
$array_gender = $import->getArrayFields(22,$db);
$array_brand = $import->getArrayFields(23,$db);
$array_model = $import->getArrayFields(24,$db);
$array_model_variant = $import->getArrayFields(25,$db);
$array_color = $import->getArrayFields(26,$db);
$array_conduction_sticker = $import->getArrayFields(27,$db);
$array_plate_number = $import->getArrayFields(28,$db);
$array_vin = $import->getArrayFields(29,$db);
$array_registration_no = $import->getArrayFields(30,$db);
$array_date = $import->getArrayFields(31,$db);
$array_release_no = $import->getArrayFields(32,$db);
$array_mode_of_sale = $import->getArrayFields(33,$db);
$array_type_of_payment = $import->getArrayFields(34,$db);
$array_insurance = $import->getArrayFields(35,$db);
$array_source = $import->getArrayFields(36,$db);
$array_offered_vehicle = $import->getArrayFields(37,$db);
$array_sales_manager = $import->getArrayFields(38,$db);
$array_sales_consultant = $import->getArrayFields(39,$db);
$array_model_year = $import->getArrayFields(40,$db);
$array_end_user = $import->getArrayFields(41,$db);
$array_car_club = $import->getArrayFields(42,$db);
$array_city = $import -> getArrayFields(43,$db);
$array_aha_status = $import -> getArrayFields(44,$db);
$header_column_found = false;
foreach($data as $row){
// print_r($row);
if(!$header_column_found){
$issue_summary_index = $import->getIssueSummaryField('ISSUE SUMMARY',$ColumnNumber,$row);
//get matched field from database and excel globals
$GLOBALS['dms']= $import->getFieldFromExcel($row,$ColumnNumber,$array_dms);
$GLOBALS['company']= $import->getFieldFromExcel($row,$ColumnNumber,$array_company);
$GLOBALS['dealer']= $import->getFieldFromExcel($row,$ColumnNumber,$array_dealer);
$GLOBALS['customer_no']= $import->getFieldFromExcel($row,$ColumnNumber,$array_customer_no);
$GLOBALS['corporation_name']= $import->getFieldFromExcel($row,$ColumnNumber,$array_corporation_name);
$GLOBALS['first_name']= $import->getFieldFromExcel($row,$ColumnNumber,$array_first_name);
$GLOBALS['middle_name']= $import->getFieldFromExcel($row,$ColumnNumber,$array_middle_name);
$GLOBALS['last_name']= $import->getFieldFromExcel($row,$ColumnNumber,$array_last_name);
$GLOBALS['suffix']= $import->getFieldFromExcel($row,$ColumnNumber,$array_suffix);
$GLOBALS['profession']= $import->getFieldFromExcel($row,$ColumnNumber,$array_profession);
$GLOBALS['position']= $import->getFieldFromExcel($row,$ColumnNumber,$array_position);
$GLOBALS['business_company']= $import->getFieldFromExcel($row,$ColumnNumber,$array_business_company);
$GLOBALS['nature_of_business']= $import->getFieldFromExcel($row,$ColumnNumber,$array_nature_of_business);
$GLOBALS['affiliation']= $import->getFieldFromExcel($row,$ColumnNumber,$array_affiliation);
$GLOBALS['facebook']= $import->getFieldFromExcel($row,$ColumnNumber,$array_facebook);
$GLOBALS['address_1']= $import->getFieldFromExcel($row,$ColumnNumber,$array_address_1);
$GLOBALS['address_2']= $import->getFieldFromExcel($row,$ColumnNumber,$array_address_2);
$GLOBALS['email']= $import->getFieldFromExcel($row,$ColumnNumber,$array_email);
$GLOBALS['mobile']= $import->getFieldFromExcel($row,$ColumnNumber,$array_mobile);
$GLOBALS['business_phone']= $import->getFieldFromExcel($row,$ColumnNumber,$array_business_phone);
$GLOBALS['birthday']= $import->getFieldFromExcel($row,$ColumnNumber,$array_birthday);
$GLOBALS['gender']= $import->getFieldFromExcel($row,$ColumnNumber,$array_gender);
$GLOBALS['brand']= $import->getFieldFromExcel($row,$ColumnNumber,$array_brand);
$GLOBALS['model']= $import->getFieldFromExcel($row,$ColumnNumber,$array_model);
$GLOBALS['model_variant']= $import->getFieldFromExcel($row,$ColumnNumber,$array_model_variant);
$GLOBALS['color']= $import->getFieldFromExcel($row,$ColumnNumber,$array_color);
$GLOBALS['conduction_sticker']= $import->getFieldFromExcel($row,$ColumnNumber,$array_conduction_sticker);
$GLOBALS['plate_number']= $import->getFieldFromExcel($row,$ColumnNumber,$array_plate_number);
$GLOBALS['vin']= $import->getFieldFromExcel($row,$ColumnNumber,$array_vin);
$GLOBALS['registration_no']= $import->getFieldFromExcel($row,$ColumnNumber,$array_registration_no);
$GLOBALS['date']= $import->getFieldFromExcel($row,$ColumnNumber,$array_date);
$GLOBALS['release_no']= $import->getFieldFromExcel($row,$ColumnNumber,$array_release_no);
$GLOBALS['mode_of_sale']= $import->getFieldFromExcel($row,$ColumnNumber,$array_mode_of_sale);
$GLOBALS['type_of_payment']= $import->getFieldFromExcel($row,$ColumnNumber,$array_type_of_payment);
$GLOBALS['insurance']= $import->getFieldFromExcel($row,$ColumnNumber,$array_insurance);
$GLOBALS['source']= $import->getFieldFromExcel($row,$ColumnNumber,$array_source);
$GLOBALS['offered_vehicle']= $import->getFieldFromExcel($row,$ColumnNumber,$array_offered_vehicle);
$GLOBALS['sales_manager']= $import->getFieldFromExcel($row,$ColumnNumber,$array_sales_manager);
$GLOBALS['sales_consultant']= $import->getFieldFromExcel($row,$ColumnNumber,$array_sales_consultant);
$GLOBALS['model_year']= $import->getFieldFromExcel($row,$ColumnNumber,$array_model_year);
$GLOBALS['end_user']= $import->getFieldFromExcel($row,$ColumnNumber,$array_end_user);
$GLOBALS['car_club']= $import->getFieldFromExcel($row,$ColumnNumber,$array_car_club);
$GLOBALS['city'] = $import->getFieldFromExcel($row,$ColumnNumber,$array_city);
$GLOBALS['aha_status'] = $import->getFieldFromExcel($row,$ColumnNumber,$array_aha_status);
//check required fields
if(
// $utility->isNotEmpty($GLOBALS['dms']) &&
// $utility->isNotEmpty($GLOBALS['company']) &&
$utility->isNotEmpty($GLOBALS['dealer']) &&
// $utility->isNotEmpty($GLOBALS['customer_no']) &&
$utility->isNotEmpty($GLOBALS['corporation_name']) &&
$utility->isNotEmpty($GLOBALS['first_name']) &&
$utility->isNotEmpty($GLOBALS['middle_name']) &&
$utility->isNotEmpty($GLOBALS['last_name']) &&
// $utility->isNotEmpty($GLOBALS['suffix']) &&
$utility->isNotEmpty($GLOBALS['profession']) &&
$utility->isNotEmpty($GLOBALS['position']) &&
// $utility->isNotEmpty($GLOBALS['business_company']) &&
$utility->isNotEmpty($GLOBALS['nature_of_business']) &&
$utility->isNotEmpty($GLOBALS['affiliation']) &&
$utility->isNotEmpty($GLOBALS['facebook']) &&
$utility->isNotEmpty($GLOBALS['address_1']) &&
$utility->isNotEmpty($GLOBALS['address_2']) &&
$utility->isNotEmpty($GLOBALS['email']) &&
$utility->isNotEmpty($GLOBALS['mobile']) &&
$utility->isNotEmpty($GLOBALS['business_phone']) &&
$utility->isNotEmpty($GLOBALS['birthday']) &&
$utility->isNotEmpty($GLOBALS['gender']) &&
$utility->isNotEmpty($GLOBALS['brand']) &&
$utility->isNotEmpty($GLOBALS['model']) &&
$utility->isNotEmpty($GLOBALS['model_variant']) &&
$utility->isNotEmpty($GLOBALS['color']) &&
$utility->isNotEmpty($GLOBALS['conduction_sticker']) &&
$utility->isNotEmpty($GLOBALS['plate_number']) &&
$utility->isNotEmpty($GLOBALS['vin']) &&
// $utility->isNotEmpty($GLOBALS['registration_no']) &&
$utility->isNotEmpty($GLOBALS['date']) &&
$utility->isNotEmpty($GLOBALS['release_no']) &&
$utility->isNotEmpty($GLOBALS['mode_of_sale']) &&
$utility->isNotEmpty($GLOBALS['type_of_payment']) &&
$utility->isNotEmpty($GLOBALS['insurance']) &&
$utility->isNotEmpty($GLOBALS['source']) &&
$utility->isNotEmpty($GLOBALS['offered_vehicle']) &&
$utility->isNotEmpty($GLOBALS['sales_manager']) &&
$utility->isNotEmpty($GLOBALS['sales_consultant']) &&
$utility->isNotEmpty($GLOBALS['model_year']) &&
$utility->isNotEmpty($GLOBALS['end_user']) &&
$utility->isNotEmpty($GLOBALS['car_club']) &&
$utility->isNotEmpty($GLOBALS['city'])
){
$header_column_found = true;
$GLOBALS['row_dms_headers'] = $row;
continue;
}
}else{
$GLOBALS['total_data_count']++; //start counting of data if header is found
$import->start_import($row,$customer_class,$utility,$db);
}
}
if(!$header_column_found){
$return_arr["status"]=2;
$return_arr["header_column_not_found_message"] = array(array('message'=>'Invalid spreadsheet file. Required field not found, download the template or contact your system administrator.'));
echo json_encode($return_arr);
exit;
}else{
if(count($GLOBALS['customer_affiliation']) > 0){
$customer_affiliation_query = 'INSERT INTO `customer_affiliations_list` (`affiliations_content_id`, `customer_id`, `status`)
VALUES '.implode(",",$GLOBALS['customer_affiliation']).' ';
$db -> sql_query($customer_affiliation_query);
}
if(count($GLOBALS['vehicle_data']) > 0){
$vehicle_data_query = 'INSERT IGNORE INTO vehicle (id,customer_id, customer_record_id,color_id,brand_id,engine_type,gas_type,insurance_company_id,insurance_type_id,insurance_expiration_date,finance_company_id,model_id,model_no,model_variant_description,plate_number,chassis_number,serial_number, vin_number, conduction_sticker, who_drives, purchase_car_as_id, delivery_date, date_created, time_created, vehicle_release_year, description, transmission, service_advisor, company_dealer_id, upload_by, sales_person, registration_number, status)
VALUES '.implode(",",$GLOBALS['vehicle_data']).' ';
$GLOBALS['inserted_vehicle_count'] = $db -> sql_query_num_inserted($vehicle_data_query);
}
if(count($GLOBALS['sales_data']) > 0){
$sales_data_query = 'INSERT IGNORE INTO `sales`(id,`vehicle_id`,`plate_number`,`customer_id`,`conduction_sticker`, `order_number`, `serial_number`, `engine_number`, `po_number`, `floor_plan_amount`, `activity_date`, `sales_cost`, `sale_price`, `insurance_company_id`, `insurance_type_id`, `insurance_expiration_date`, `finance_company_id`, `source_id`, `mode_of_contact_id`, `warehouse`, `stock_number`, `age_of_unit`, `body_size_code`, `claim_number`, `claim_amount`, `deal_number`, `deal_date`, `sales_person`, `delivery_date`, `company_dealer_id`, `upload_by`, `status`,brand_id,model_id,`mode_of_sale_id`,`type_of_payment_id`,`group_manager_id`,`sale_discount`,`end_user`,`driver`,`finance_expiration_date`) VALUES '.implode(",",$GLOBALS['sales_data']).' ';
$GLOBALS['inserted_sales_count'] = $db -> sql_query_num_inserted($sales_data_query);
}
if(count($GLOBALS['vehicle_offered']) > 0){
$vehicle_offered_query = 'INSERT INTO `sales_brands_offered`( `sales_id`, `brand_id`, `model_id`, `description`, `status`) VALUES '.implode(",",$GLOBALS['vehicle_offered']).' ';
$db -> sql_query($vehicle_offered_query);
}
$db -> sql_query("DELETE cd FROM customer_dms cd
LEFT OUTER JOIN customer_contact cc
ON cd.customer_record_id = cc.customer_id
WHERE cc.id IS NULL");
$db -> sql_query("DELETE cd FROM customer_dms cd
LEFT OUTER JOIN customer c
ON cd.customer_record_id = c.id
WHERE c.id IS NULL");
$db -> sql_query("DELETE c FROM customer c
LEFT OUTER JOIN customer_contact cc
ON c.id = cc.customer_id
WHERE cc.id IS NULL");
$db -> sql_query("DELETE c FROM customer c
LEFT OUTER JOIN customer_dms cd
ON c.id = cd.customer_record_id
WHERE c.id IS NULL");
$db -> sql_query("DELETE cc FROM customer_contact cc
LEFT OUTER JOIN customer c
ON cc.customer_id = c.id
WHERE c.id IS NULL");
$db -> sql_query("DELETE cc FROM customer_contact cc
LEFT OUTER JOIN customer_dms cd
ON cc.customer_id = cd.customer_record_id
WHERE cd.id IS NULL");
$db -> sql_query("DELETE cb FROM customer_affiliations_list cb
LEFT OUTER JOIN customer_contact cc
ON cb.customer_id = cc.customer_id
WHERE cc.id IS NULL");
// $db -> sql_query("DELETE v FROM vehicle v
// LEFT OUTER JOIN customer_contact cc
// ON v.customer_record_id = cc.customer_id
// WHERE cc.id IS NULL");
$db -> sql_query("DELETE s FROM sales s
LEFT OUTER JOIN vehicle v
ON s.vehicle_id = v.id
WHERE v.id IS NULL");
$db -> sql_query("DELETE sbo FROM `sales_brands_offered` sbo
LEFT OUTER JOIN sales s ON sbo.`sales_id`= s.id
WHERE `s`.`id` is NULL");
if(intval($GLOBALS['no_dms_count']) > 0){
$count_record = max(0,$GLOBALS['no_dms_count']);
$GLOBALS['data_count_list'] = $GLOBALS['data_count_list']."