Improved error checking in locations importer

This commit is contained in:
snipe 2019-06-10 18:50:41 -07:00
parent 27231d49ea
commit cbff66c9db

View file

@ -53,16 +53,19 @@ class ImportLocations extends Command
// Import parent location names first if they don't exist // Import parent location names first if they don't exist
foreach ($results as $parent_index => $parent_row) { foreach ($results as $parent_index => $parent_row) {
$parent_name = trim($parent_row['Parent Name']);
$this->info('- Parent: '.$parent_name.' in row as: '.trim($parent_row['Parent Name']));
// First create any parents if they don't exist
if ($parent_name!='') { if (array_key_exists('Parent Name', $parent_row)) {
$parent_name = trim($parent_row['Parent Name']);
if (array_key_exists('Name', $parent_row)) {
$this->info('- Parent: ' . $parent_name . ' in row as: ' . trim($parent_row['Parent Name']));
}
// Save parent location name // Save parent location name
// This creates a sort of name-stub that we'll update later on in this script // This creates a sort of name-stub that we'll update later on in this script
$parent_location = Location::firstOrCreate(array('name' => $parent_name)); $parent_location = Location::firstOrCreate(array('name' => $parent_name));
$this->info('Parent for '.$parent_row['Name'].' is '.$parent_name.'. Attempting to save '.$parent_name.'.'); if (array_key_exists('Name', $parent_row)) {
$this->info('Parent for ' . $parent_row['Name'] . ' is ' . $parent_name . '. Attempting to save ' . $parent_name . '.');
}
// Check if the record was updated or created. // Check if the record was updated or created.
// This is mostly for clearer debugging. // This is mostly for clearer debugging.
@ -73,7 +76,7 @@ class ImportLocations extends Command
} }
} else { } else {
$this->info('- No parent location for '.$parent_row['Name'].' provided.'); $this->info('- No Parent Name provided, so no parent location will be created.');
} }
} }
@ -83,25 +86,49 @@ class ImportLocations extends Command
// besides name // besides name
foreach ($results as $index => $row) { foreach ($results as $index => $row) {
if (array_key_exists('Parent Name', $row)) {
$parent_name = trim($row['Parent Name']); $parent_name = trim($row['Parent Name']);
}
// Set the location attributes to save // Set the location attributes to save
if (array_key_exists('Name', $row)) {
$location = Location::firstOrNew(array('name' => trim($row['Name']))); $location = Location::firstOrNew(array('name' => trim($row['Name'])));
$location->name = trim($row['Name']); $location->name = trim($row['Name']);
$location->currency = trim($row['Currency']);
$location->address = trim($row['Address 1']);
$location->address2 = trim($row['Address 2']);
$location->city = trim($row['City']);
$location->state = trim($row['State']);
$location->zip = trim($row['Zip']);
$location->country = trim($row['Country']);
$location->ldap_ou = trim($row['OU']);
$this->info('Checking location: '.$location->name); $this->info('Checking location: '.$location->name);
} else {
$this->error('Location name is required and is missing from at least one row in this dataset. Check your CSV for extra trailing rows and try again.');
return false;
}
if (array_key_exists('Currency', $row)) {
$location->currency = trim($row['Currency']);
}
if (array_key_exists('Address 1', $row)) {
$location->address = trim($row['Address 1']);
}
if (array_key_exists('Address 2', $row)) {
$location->address2 = trim($row['Address 2']);
}
if (array_key_exists('City', $row)) {
$location->city = trim($row['City']);
}
if (array_key_exists('State', $row)) {
$location->state = trim($row['State']);
}
if (array_key_exists('Zip', $row)) {
$location->zip = trim($row['Zip']);
}
if (array_key_exists('Country', $row)) {
$location->country = trim($row['Country']);
}
if (array_key_exists('Country', $row)) {
$location->ldap_ou = trim($row['OU']);
}
// If a parent name is provided, we created it earlier in the script, // If a parent name is provided, we created it earlier in the script,
// so let's grab that ID // so let's grab that ID
if ($parent_name) { if ($parent_name) {
$this->info('-- Searching for Parent Name: '.$parent_name.' - '.$row['Parent Name']); $this->info('-- Searching for Parent Name: '.$parent_name);
$parent = Location::where('name', '=', $parent_name)->first(); $parent = Location::where('name', '=', $parent_name)->first();
$location->parent_id = $parent->id; $location->parent_id = $parent->id;
$this->info('Parent: '.$parent_name.' - ID: '.$parent->id); $this->info('Parent: '.$parent_name.' - ID: '.$parent->id);