Added Import for Large CSV

This commit is contained in:
James Richie
2026-05-21 19:16:27 -04:00
parent 3c5401f82b
commit 8a3cb15e55
22 changed files with 1571 additions and 317 deletions
+67 -149
View File
@@ -2,12 +2,12 @@
class Consolidation extends Base {
// Variables.
// Variables
private $current_user_serial = 0;
private $current_user_id = "";
private $current_user_name = "";
private $current_user_email = "";
private $current_user_id = "";
private $current_user_name = "";
private $current_user_email = "";
// =================
// Class Constructor
@@ -20,9 +20,9 @@ class Consolidation extends Base {
date_default_timezone_set(self::TIMEZONE);
$this->current_user_serial = $_SESSION[self::USER_SERIAL] ?? 0;
$this->current_user_id = $_SESSION[self::USER_ID] ?? "";
$this->current_user_name = $_SESSION[self::USER_NAME] ?? "";
$this->current_user_email = $_SESSION[self::USER_EMAIL] ?? "";
$this->current_user_id = $_SESSION[self::USER_ID] ?? "";
$this->current_user_name = $_SESSION[self::USER_NAME] ?? "";
$this->current_user_email = $_SESSION[self::USER_EMAIL] ?? "";
}
// ======================
@@ -47,6 +47,11 @@ class Consolidation extends Base {
case "run":
$XSLParms = array();
$permit_record_count = 0;
$processed_record_count = 0;
$connection = null;
$sql_insert = "insert into rdiconsolidations
( rdiconsolidation_permit_facts_id,
@@ -85,150 +90,73 @@ class Consolidation extends Base {
rdiconsolidation_ytd_value,
rdiconsolidation_12mth_prev_permits,
rdiconsolidation_date )
values ( :rdiconsolidation_permit_facts_id,
:rdiconsolidation_entry_date_str,
:rdiconsolidation_entry_date,
:rdiconsolidation_permit_number,
:rdiconsolidation_permit_date_str,
:rdiconsolidation_permit_date,
:rdiconsolidation_project_addr,
:rdiconsolidation_sub_div_name,
:rdiconsolidation_project_type,
:rdiconsolidation_company,
:rdiconsolidation_address,
:rdiconsolidation_city,
:rdiconsolidation_state,
:rdiconsolidation_zip,
:rdiconsolidation_phone,
:rdiconsolidation_project_city,
:rdiconsolidation_project_state,
:rdiconsolidation_size,
:rdiconsolidation_units,
:rdiconsolidation_building_type,
:rdiconsolidation_value,
:rdiconsolidation_work_type,
:rdiconsolidation_county,
:rdiconsolidation_lot,
:rdiconsolidation_dist_ll,
:rdiconsolidation_ct1,
:rdiconsolidation_owner_name,
:rdiconsolidation_owner_address,
:rdiconsolidation_owner_city,
:rdiconsolidation_owner_state,
:rdiconsolidation_owner_zip,
:rdiconsolidation_owner_phone,
:rdiconsolidation_ytd_permits,
:rdiconsolidation_ytd_value,
:rdiconsolidation_12mth_prev_permits,
:rdiconsolidation_date ) ";
$connection = $this->connect();
select coalesce(permit_permit_facts_id, 0),
coalesce(permit_entry_date_str, ''),
coalesce(permit_entry_date, '0000-00-00'),
coalesce(permit_permit_number, ''),
coalesce(permit_permit_date_str, ''),
coalesce(permit_permit_date, '0000-00-00'),
coalesce(permit_project_addr, ''),
coalesce(permit_sub_div_name, ''),
coalesce(permit_project_type, ''),
coalesce(permit_company, ''),
coalesce(permit_address, ''),
coalesce(permit_city, ''),
coalesce(permit_state, ''),
coalesce(permit_zip, ''),
coalesce(permit_phone, ''),
coalesce(permit_project_city, ''),
coalesce(permit_project_state, ''),
coalesce(permit_size, 0),
coalesce(permit_units, 0),
coalesce(permit_building_type, 0),
coalesce(permit_value, 0),
coalesce(permit_work_type, 0),
coalesce(permit_county, ''),
coalesce(permit_lot, ''),
coalesce(permit_dist_ll, ''),
coalesce(permit_ct1, 0),
coalesce(permit_owner_name, ''),
coalesce(permit_owner_address, ''),
coalesce(permit_owner_city, ''),
coalesce(permit_owner_state, ''),
coalesce(permit_owner_zip, ''),
coalesce(permit_owner_phone, ''),
coalesce(permit_ytd_permits, 0),
coalesce(permit_ytd_value, 0),
coalesce(permit_12mth_prev_permits, 0),
current_date()
from permits";
$connection->beginTransaction();
$statement = $connection->prepare($sql_insert);
try {
$rdi_records = $this->getRdiTable();
$rdi_record_count = $rdi_records->count();
$connection = $this->connect();
$processed_record_count = 0;
$connection->beginTransaction();
foreach ($rdi_records as $record) {
$permit_record_count = (integer) $connection->query("select count(*) from permits")->fetchColumn();
$processed_record_count = (integer) $connection->exec($sql_insert);
$rdiconsolidation_permit_facts_id = (integer) $record->permit_facts_id ?: 0;
$rdiconsolidation_entry_date_str = (integer) $record->entry_date_str ?: "";
$rdiconsolidation_entry_date = (string) $record->entry_date ?: "0000-00-00";
$rdiconsolidation_permit_number = (string) $record->permit_number ?: "";
$rdiconsolidation_permit_date_str = (string) $record->permit_date_str ?: "";
$rdiconsolidation_permit_date = (string) $record->permit_date ?: "0000-00-00";
$rdiconsolidation_project_addr = (string) $record->project_addr ?: "";
$rdiconsolidation_sub_div_name = (string) $record->sub_div_name ?: "";
$rdiconsolidation_project_type = (string) $record->project_type ?: "";
$rdiconsolidation_company = (string) $record->company ?: "";
$rdiconsolidation_address = (string) $record->address ?: "";
$rdiconsolidation_city = (string) $record->city ?: "";
$rdiconsolidation_state = (string) $record->state ?: "";
$rdiconsolidation_zip = (string) $record->zip ?: "";
$rdiconsolidation_phone = (string) $record->phone ?: "";
$rdiconsolidation_project_city = (string) $record->project_city ?: "";
$rdiconsolidation_project_state = (string) $record->project_state ?: "";
$rdiconsolidation_size = (integer) $record->size ?: 0;
$rdiconsolidation_units = (integer) $record->units ?: 0;
$rdiconsolidation_building_type = (integer) $record->building_type ?: 0;
$rdiconsolidation_value = (integer) $record->value ?: 0;
$rdiconsolidation_work_type = (integer) $record->work_type ?: 0;
$rdiconsolidation_county = (string) $record->county ?: "";
$rdiconsolidation_lot = (string) $record->lot ?: "";
$rdiconsolidation_dist_ll = (string) $record->dist_ll ?: "";
$rdiconsolidation_ct1 = (integer) $record->ct1 ?: 0;
$rdiconsolidation_owner_name = (string) $record->owner_name ?: "";
$rdiconsolidation_owner_address = (string) $record->owner_address ?: "";
$rdiconsolidation_owner_city = (string) $record->owner_city ?: "";
$rdiconsolidation_owner_state = (string) $record->owner_state ?: "";
$rdiconsolidation_owner_zip = (string) $record->owner_zip ?: "";
$rdiconsolidation_owner_phone = (string) $record->owner_phone ?: "";
$rdiconsolidation_ytd_permits = (integer) $record->ytd_permits ?: 0;
$rdiconsolidation_ytd_value = (integer) $record->ytd_value ?: 0;
$rdiconsolidation_12mth_prev_permits = (integer) $record->{"12mth_prev_permits"} ?: 0;
$rdiconsolidation_date = date("Y-m-d");
$statement->bindValue(":rdiconsolidation_permit_facts_id", $rdiconsolidation_permit_facts_id);
$statement->bindValue(":rdiconsolidation_entry_date_str", $rdiconsolidation_entry_date_str);
$statement->bindValue(":rdiconsolidation_entry_date", $rdiconsolidation_entry_date);
$statement->bindValue(":rdiconsolidation_permit_number", $rdiconsolidation_permit_number);
$statement->bindValue(":rdiconsolidation_permit_date_str", $rdiconsolidation_permit_date_str);
$statement->bindValue(":rdiconsolidation_permit_date", $rdiconsolidation_permit_date);
$statement->bindValue(":rdiconsolidation_project_addr", $rdiconsolidation_project_addr);
$statement->bindValue(":rdiconsolidation_sub_div_name", $rdiconsolidation_sub_div_name);
$statement->bindValue(":rdiconsolidation_project_type", $rdiconsolidation_project_type);
$statement->bindValue(":rdiconsolidation_company", $rdiconsolidation_company);
$statement->bindValue(":rdiconsolidation_address", $rdiconsolidation_address);
$statement->bindValue(":rdiconsolidation_city", $rdiconsolidation_city);
$statement->bindValue(":rdiconsolidation_state", $rdiconsolidation_state);
$statement->bindValue(":rdiconsolidation_zip", $rdiconsolidation_zip);
$statement->bindValue(":rdiconsolidation_phone", $rdiconsolidation_phone);
$statement->bindValue(":rdiconsolidation_project_city", $rdiconsolidation_project_city);
$statement->bindValue(":rdiconsolidation_project_state", $rdiconsolidation_project_state);
$statement->bindValue(":rdiconsolidation_size", $rdiconsolidation_size);
$statement->bindValue(":rdiconsolidation_units", $rdiconsolidation_units);
$statement->bindValue(":rdiconsolidation_building_type", $rdiconsolidation_building_type);
$statement->bindValue(":rdiconsolidation_value", $rdiconsolidation_value);
$statement->bindValue(":rdiconsolidation_work_type", $rdiconsolidation_work_type);
$statement->bindValue(":rdiconsolidation_county", $rdiconsolidation_county);
$statement->bindValue(":rdiconsolidation_lot", $rdiconsolidation_lot);
$statement->bindValue(":rdiconsolidation_dist_ll", $rdiconsolidation_dist_ll);
$statement->bindValue(":rdiconsolidation_ct1", $rdiconsolidation_ct1);
$statement->bindValue(":rdiconsolidation_owner_name", $rdiconsolidation_owner_name);
$statement->bindValue(":rdiconsolidation_owner_address", $rdiconsolidation_owner_address);
$statement->bindValue(":rdiconsolidation_owner_city", $rdiconsolidation_owner_city);
$statement->bindValue(":rdiconsolidation_owner_state", $rdiconsolidation_owner_state);
$statement->bindValue(":rdiconsolidation_owner_zip", $rdiconsolidation_owner_zip);
$statement->bindValue(":rdiconsolidation_owner_phone", $rdiconsolidation_owner_phone);
$statement->bindValue(":rdiconsolidation_ytd_permits", $rdiconsolidation_ytd_permits);
$statement->bindValue(":rdiconsolidation_ytd_value", $rdiconsolidation_ytd_value);
$statement->bindValue(":rdiconsolidation_12mth_prev_permits", $rdiconsolidation_12mth_prev_permits);
$statement->bindValue(":rdiconsolidation_date", $rdiconsolidation_date);
if (!$statement->execute()) {
$connection->rollBack();
$this->debug($connection->errorInfo()[2]);
if ($processed_record_count !== $permit_record_count) {
throw new RuntimeException("Record counts did not match. Rolling back database. Contact Support.");
}
$processed_record_count++;
}
if ($processed_record_count !== $rdi_record_count) {
$connection->rollBack();
$XSLParms["CONSOLIDATION_ERROR"] = "Record Counts Did not match. Rolling Back Database. Contact Support.";
} else {
$connection->commit();
$this->executeSQL("truncate rdis");
$connection->exec("truncate permits");
} catch (Exception $e) {
if (($connection instanceof PDO) && $connection->inTransaction()) {
$connection->rollBack();
}
$XSLParms["CONSOLIDATION-ERROR"] = $e->getMessage();
}
$XSLParms["RDI-RECORD-COUNT"] = $rdi_record_count;
$XSLParms["RDI-RECORD-COUNT"] = $permit_record_count;
$XSLParms["PROCESSED-RECORD-COUNT"] = $processed_record_count;
$content = $this->applyXSL("", $this->getXSL("consolidationResults"), $XSLParms);
$content = $this->applyXSL("", $this->getXSL("consolidationResults"), $XSLParms);
$this->displayContent($content);
break;
@@ -239,16 +167,6 @@ class Consolidation extends Base {
}
}
// ====================
// Return an RDI Object
// ====================
public function getRdiTable() {
$SQL = "SELECT * FROM permits";
return $this->getTable("rdis", $SQL);
}
}
?>