resq/utils/load_dealers/load_dealers.php

106 lines
2.6 KiB
PHP

<?php
require_once(__DIR__ . '/../../vendor/autoload.php');
use Symfony\Component\Dotenv\Dotenv;
// get database information from .env
function getDatabaseInfo()
{
$dotenv = new Dotenv();
$dotenv->loadEnv(__DIR__.'/../../.env');
$db_info = $_ENV['DATABASE_URL'];
// sample format of db_info: mysql://db_user:db_password@127.0.0.1:3306/resq?charset=utf8
// dsn for PDO needs to be: mysql:host=127.0.0.1:3306;dbname=resq;charset=UTF8
preg_match('/^mysql:\/\/(.*):(.*)@(.*):(.*)\/(.*)\?(.*)/', $db_info, $result);
$db_type = 'mysql:host=';
$user = $result[1];
$pass = $result[2];
$ip_port = $result[3] . ':' . $result[4] . ';';
$db_name = 'dbname=' . $result[5] . ';';
$charset = $result[6];
$dsn = $db_type . $ip_port . $db_name . $charset;
$db_data = array($dsn, $user, $pass);
return $db_data;
}
// load csv
$csv = fopen($argv[1], 'r');
$output_file = $argv[2];
$output_fh = fopen($output_file, "w");
if (!file_exists($argv[1]))
{
$err_message = "No csv input file found." . "\n";
fwrite($output_fh, $err_message);
fclose($output_fh);
exit();
}
list($dsn, $user, $pass) = getDatabaseInfo();
// error_log($dsn);
// error_log($user);
// error_log($pass);
// connect to db
$db = new PDO($dsn, $user, $pass);
// prepared statement
$sth = $db->prepare('insert into dealer (name, address, branch_code) values (:name, :address, :branch_code)');
$rownum = 0;
while (($row = fgetcsv($csv)) !== false)
{
// dealer csv file has a header
if ($rownum < 1)
{
// skip header
$rownum++;
continue;
}
// sample of line in csv file
// columns are name, address, branch code
// BATPARTS Marcos Branch,"Km. 16 Marcos Hi-way corner Mahogany Street, Santolan, Pasig",ZN03576282
$dealer_name = trim(strtoupper($row[0]));
$dealer_address = trim(strtoupper($row[1]));
$dealer_branch_code = trim(strtoupper($row[2]));
// error_log('name ' . $dealer_name . ' address ' . $dealer_address . ' branch code ' . $dealer_branch_code);
error_log('Processing ' . $dealer_name);
$res = $sth->execute([
':name' => $dealer_name,
':address' => $dealer_address,
':branch_code' => $dealer_branch_code,
]);
if (!$res)
{
// log error
$err = $sth->errorInfo();
$log_message = "$dealer_name - ERROR - " . $err[2] . "\n";
}
else
{
// log successful adding of dealer
$log_message = "$dealer_name - SUCCESS - " . "\n";
}
fwrite($output_fh, $log_message);
$rownum++;
}
// close file
fclose($csv);
fclose($output_fh);
?>