From 8648f6f3f1a6b3a56b506b5473ba2d5fea4877b5 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 10 Jun 2021 10:21:20 +0000 Subject: [PATCH] Add dealer entity and PHP script to add dealers. #580 --- src/Entity/Dealer.php | 81 +++++++++++++++++++++ utils/load_dealers/load_dealers.php | 106 ++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 src/Entity/Dealer.php create mode 100644 utils/load_dealers/load_dealers.php diff --git a/src/Entity/Dealer.php b/src/Entity/Dealer.php new file mode 100644 index 00000000..b60fe20c --- /dev/null +++ b/src/Entity/Dealer.php @@ -0,0 +1,81 @@ +id; + } + + public function setName($name) + { + $this->name = $name; + return $this; + } + + public function getName() + { + return $this->name; + } + + public function setAddress($address) + { + $this->address = $address; + return $this; + } + + public function getAddress() + { + return $this->address; + } + + public function setBranchCode($branch_code) + { + $this->branch_code = $branch_code; + return $this; + } + + public function getBranchCode() + { + return $this->branch_code; + } +} diff --git a/utils/load_dealers/load_dealers.php b/utils/load_dealers/load_dealers.php new file mode 100644 index 00000000..efcc2eb5 --- /dev/null +++ b/utils/load_dealers/load_dealers.php @@ -0,0 +1,106 @@ +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); +?>