Added cleaning of contact numbers. #572
This commit is contained in:
parent
079c8a033a
commit
be48ecdb82
1 changed files with 112 additions and 21 deletions
|
|
@ -18,7 +18,7 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
// field index in csv file
|
||||
const F_TIMESTAMP = 0;
|
||||
const F_DPA = 1;
|
||||
const F_FIRST_NAM = 2;
|
||||
const F_FIRST_NAME = 2;
|
||||
const F_MIDDLE_NAME = 3;
|
||||
const F_LAST_NAME = 4;
|
||||
const F_BIRTHDATE = 5;
|
||||
|
|
@ -31,11 +31,13 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
const F_VEHICLE = 12;
|
||||
const F_VEHICLE_EXCEL = 13;
|
||||
const F_BATT_SIZE = 14;
|
||||
const F_CONTACT_NUM = 15;
|
||||
const F_BWI_LOCATION = 16;
|
||||
const F_SAP_CODE = 17;
|
||||
const F_SKU = 18;
|
||||
const F_QTY = 19;
|
||||
const F_REPLACE_SKED = 15;
|
||||
const F_DEALER_VISIT = 16;
|
||||
const F_CONTACT_NUM = 17;
|
||||
const F_BWI_LOCATION = 18;
|
||||
const F_SAP_CODE = 19;
|
||||
const F_SKU = 20;
|
||||
const F_QTY = 21;
|
||||
|
||||
protected $em;
|
||||
|
||||
|
|
@ -51,17 +53,19 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
$this->setName('customer:createfromcarclub')
|
||||
->setDescription('Create customers from car club file.')
|
||||
->setHelp('Creates customers from car club file.')
|
||||
->addArgument('file', InputArgument::REQUIRED, 'Path to the output CSV file with the car club info.');
|
||||
->addArgument('input_file', InputArgument::REQUIRED, 'Path to the output CSV file with the car club info.')
|
||||
->addArgument('output_file', InputArgument::REQUIRED, 'Output filename');
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
$csv_file = $input->getArgument('file');
|
||||
$csv_file = $input->getArgument('input_file');
|
||||
$output_file = $input->getArgument('output_file');
|
||||
|
||||
// attempt to open file
|
||||
try
|
||||
{
|
||||
$fh = fopen($csv_file, "w");
|
||||
$fh = fopen($csv_file, "r");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
|
|
@ -69,6 +73,7 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
}
|
||||
|
||||
$row_num = 1;
|
||||
$output_info = [];
|
||||
while (($fields = fgetcsv($fh)) !== false)
|
||||
{
|
||||
// ignore first row
|
||||
|
|
@ -78,6 +83,24 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
continue;
|
||||
}
|
||||
|
||||
$timestamp = trim($fields[self::F_TIMESTAMP]);
|
||||
$mname = trim($fields[self::F_MIDDLE_NAME]);
|
||||
$birthdate = trim($fields[self::F_BIRTHDATE]);
|
||||
$address = trim($fields[self::F_ADDRESS]);
|
||||
$city = trim($fields[self::F_CITY]);
|
||||
$region = trim($fields[self::F_REGION]);
|
||||
$car_club = trim($fields[self::F_CAR_CLUB]);
|
||||
$position = trim($fields[self::F_POSITION]);
|
||||
$member_number = trim($fields[self::F_MEMBER_NUM]);
|
||||
$vehicle = trim($fields[self::F_VEHICLE]);
|
||||
$vehicle_excel = trim($fields[self::F_VEHICLE_EXCEL]);
|
||||
$batt_size = trim($fields[self::F_BATT_SIZE]);
|
||||
$replace_sked = trim($fields[self::F_REPLACE_SKED]);
|
||||
$dealer_visit = trim($fields[self::F_DEALER_VISIT]);
|
||||
$bwi_location = trim($fields[self::F_BWI_LOCATION]);
|
||||
$sap_code = trim($fields[self::F_SAP_CODE]);
|
||||
$sku = trim($fields[self::F_SKU]);
|
||||
$qty = trim($fields[self::F_QTY]);
|
||||
$fname = trim($fields[self::F_FIRST_NAME]);
|
||||
$lname = trim($fields[self::F_LAST_NAME]);
|
||||
$dpa = trim($fields[self::F_DPA]);
|
||||
|
|
@ -86,9 +109,8 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
// check in case of multiple numbers
|
||||
// check contact number if mobile or not
|
||||
// check for spaces, slash, and forward slash
|
||||
// mobile has length 10 if no 63, 12 if has 63
|
||||
// landline has 8 if no area code, 10 if with area code
|
||||
$contact_num_array = [];
|
||||
$cust_id = '';
|
||||
if (preg_match('/[\\\s\/]/', $contact_number))
|
||||
{
|
||||
$contact_num_array = preg_split('/[\\\s\/]/', $contact_number);
|
||||
|
|
@ -96,7 +118,7 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
else
|
||||
{
|
||||
// only one mobile number
|
||||
$contact_number_array[] = $contact_number;
|
||||
$contact_num_array[] = $contact_number;
|
||||
}
|
||||
|
||||
foreach ($contact_num_array as $contact_num)
|
||||
|
|
@ -104,19 +126,41 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
$c_num = trim($contact_num);
|
||||
|
||||
if (empty($c_num))
|
||||
{
|
||||
// add info to output array
|
||||
$output_info[] = $this->addCustomerInfoEntry($timestamp, $dpa, $fname, $mname, $lname, $birthdate, $address, $city,
|
||||
$region, $car_club, $position, $member_number, $vehicle, $vehicle_excel, $batt_size, $replace_sked,
|
||||
$dealer_visit, $contact_number, $bwi_location, $sap_code, $sku, $qty, 'NOT CREATED', 'Missing contact number', $cust_id);
|
||||
continue;
|
||||
}
|
||||
|
||||
// remove any non digit character from string
|
||||
$clean_number = preg_replace('~\D~', '', $c_num);
|
||||
error_log('cleaned ' . $clean_number);
|
||||
|
||||
// does it fit our 09XXXXXXXXX pattern?
|
||||
if (preg_match('/^09[0-9]{9}$/', $c_num))
|
||||
if (preg_match('/^09[0-9]{9}$/', $clean_number))
|
||||
{
|
||||
// remove first '0'
|
||||
$c_num = substr($c_num, 1);
|
||||
error_log("CONVERTED TO $c_num");
|
||||
$clean_number = substr($clean_number, 1);
|
||||
error_log("CONVERTED TO $clean_number");
|
||||
}
|
||||
|
||||
// does it fit our 63XXXXXXXXXX pattern?
|
||||
if (preg_match('/^63[0-9]{10}$/', $clean_number))
|
||||
{
|
||||
// remove the 63
|
||||
$clean_number = substr($clean_number, 2);
|
||||
error_log("CONVERTED TO $clean_number");
|
||||
}
|
||||
|
||||
// does it fit our 9XXXXXXXXX pattern?
|
||||
if (!preg_match('/^9[0-9]{9}$/', $c_num))
|
||||
continue;
|
||||
if (!preg_match('/^9[0-9]{9}$/', $clean_number))
|
||||
{
|
||||
error_log('not a mobile number');
|
||||
// set clean_number to blank since we don't save a non-mobile number
|
||||
$clean_number = '';
|
||||
}
|
||||
|
||||
$customers = $this->findCustomerByNumber($c_num);
|
||||
|
||||
|
|
@ -131,17 +175,24 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
$new_cust = new Customer();
|
||||
$new_cust->setFirstName($fname)
|
||||
->setLastName($lname)
|
||||
->setPhoneMobile($c_num)
|
||||
->setPhoneMobile($clean_number)
|
||||
->setDpaConsent($is_dpa)
|
||||
->setCreateSource('car_club_file');
|
||||
|
||||
$this->em->persist($new_cust);
|
||||
$this->em->flush();
|
||||
// get customer id of new customer here
|
||||
$cust_id = $new_cust->getId();
|
||||
$this->em->clear();
|
||||
|
||||
// output to file
|
||||
}
|
||||
else
|
||||
{
|
||||
// update customer
|
||||
}
|
||||
}
|
||||
|
||||
$this->em->flush();
|
||||
$this->em->clear();
|
||||
|
||||
$row_num++;
|
||||
}
|
||||
fclose($fh);
|
||||
|
|
@ -153,4 +204,44 @@ class ImportCarClubCustomerDataCommand extends Command
|
|||
$customers = $this->em->getRepository(Customer::class)->findBy(['phone_mobile' => $number]);
|
||||
return $customers;
|
||||
}
|
||||
|
||||
protected function outputCustomerInfo($output_file)
|
||||
{
|
||||
try
|
||||
{
|
||||
$fh = fopen($output_file, "w");
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
throw new Exception('The file "' . $report_file . '" could be opened.');
|
||||
}
|
||||
|
||||
// write the headers
|
||||
fputcsv($fh, [
|
||||
'Timestamp',
|
||||
'I have read and understood and agreed to the confidentiality of this form request',
|
||||
'First Name',
|
||||
'Middle Name',
|
||||
'Last Name',
|
||||
'Birth date',
|
||||
'Address',
|
||||
'City',
|
||||
'Region',
|
||||
'Car Club/Organization',
|
||||
'Position in the organization',
|
||||
'Official Member Number (type NA if not applicable)',
|
||||
'Vehicles you own? Year - Make -Model - Plate/Conduction number (ex 2017 NISSAN NAVARA ABC 1234) you can indicate all your vehicles',
|
||||
'If your were given a chance to EXperience the New Motolite Excel, Choose 1 vehicle and it\'s plate/conduction number',
|
||||
'What is the Battery size of the vehicle you with to EXperience the New Motolite Excel',
|
||||
'Given a specific date, when can you schedule your replacement?',
|
||||
'Will you be able to visit our dealer that we will assign nearest to you?',
|
||||
'Contact Number',
|
||||
'BWI LOCATION',
|
||||
'SAP CODE',
|
||||
'SKU',
|
||||
'QTY',
|
||||
]);
|
||||
|
||||
fclose($fh);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue