mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-13 17:14:10 -08:00
First shot
Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
48903b1402
commit
7658f7c41d
|
@ -71,8 +71,10 @@ class AssetImporter extends ItemImporter
|
||||||
$asset = Asset::where(['asset_tag'=> (string) $asset_tag])->first();
|
$asset = Asset::where(['asset_tag'=> (string) $asset_tag])->first();
|
||||||
if ($asset) {
|
if ($asset) {
|
||||||
if (! $this->updating) {
|
if (! $this->updating) {
|
||||||
$this->log('A matching Asset '.$asset_tag.' already exists');
|
$exists_error = 'A matching Asset '.$asset_tag.' already exists';
|
||||||
return;
|
$this->log($exists_error);
|
||||||
|
$this->addErrorToBag($asset, 'asset_tag', $exists_error);
|
||||||
|
return $exists_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log('Updating Asset');
|
$this->log('Updating Asset');
|
||||||
|
|
|
@ -281,6 +281,13 @@ abstract class Importer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function addErrorToBag($item, $field, $error_message)
|
||||||
|
{
|
||||||
|
if ($this->errorCallback) {
|
||||||
|
call_user_func($this->errorCallback, $item, $field, [$field => [$error_message]]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the user matching given data, or creates a new one if there is no match.
|
* Finds the user matching given data, or creates a new one if there is no match.
|
||||||
* This is NOT used by the User Import, only for Asset/Accessory/etc where
|
* This is NOT used by the User Import, only for Asset/Accessory/etc where
|
||||||
|
|
|
@ -196,33 +196,46 @@ class ItemImporter extends Importer
|
||||||
{
|
{
|
||||||
$condition = array();
|
$condition = array();
|
||||||
$asset_model_name = $this->findCsvMatch($row, 'asset_model');
|
$asset_model_name = $this->findCsvMatch($row, 'asset_model');
|
||||||
|
$asset_model_category = $this->findCsvMatch($row, 'category');
|
||||||
$asset_modelNumber = $this->findCsvMatch($row, 'model_number');
|
$asset_modelNumber = $this->findCsvMatch($row, 'model_number');
|
||||||
|
|
||||||
// TODO: At the moment, this means we can't update the model number if the model name stays the same.
|
// TODO: At the moment, this means we can't update the model number if the model name stays the same.
|
||||||
if (! $this->shouldUpdateField($asset_model_name)) {
|
if (! $this->shouldUpdateField($asset_model_name)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((empty($asset_model_name)) && (! empty($asset_modelNumber))) {
|
if ((empty($asset_model_name)) && (! empty($asset_modelNumber))) {
|
||||||
$asset_model_name = $asset_modelNumber;
|
$asset_model_name = $asset_modelNumber;
|
||||||
} elseif ((empty($asset_model_name)) && (empty($asset_modelNumber))) {
|
} elseif ((empty($asset_model_name)) && (empty($asset_modelNumber))) {
|
||||||
$asset_model_name = 'Unknown';
|
$asset_model_name = 'Unknown';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((!empty($asset_model_name)) && (empty($asset_modelNumber))) {
|
$asset_model = AssetModel::select('id');
|
||||||
$condition[] = ['name', '=', $asset_model_name];
|
|
||||||
} elseif ((!empty($asset_model_name)) && (!empty($asset_modelNumber))) {
|
if (!empty($asset_model_name)) {
|
||||||
$condition[] = ['name', '=', $asset_model_name];
|
$asset_model = $asset_model->where('name', '=', $asset_model_name);
|
||||||
$condition[] = ['model_number', '=', $asset_modelNumber];
|
|
||||||
|
if (!empty($asset_modelNumber)) {
|
||||||
|
$asset_model = $asset_model->where('model_number', '=', $asset_modelNumber);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$editingModel = $this->updating;
|
$editingModel = $this->updating;
|
||||||
$asset_model = AssetModel::where($condition)->first();
|
$this->log('SQL: '.$asset_model->toSql());
|
||||||
|
$asset_model = $asset_model->first();
|
||||||
|
|
||||||
|
$this->log('Name: '.$asset_model_name);
|
||||||
|
$this->log('Number: '.$asset_modelNumber);
|
||||||
|
$this->log('Category: '.$asset_model_category);
|
||||||
|
$this->log('Model Info: '.print_r($asset_model, true));
|
||||||
|
|
||||||
if ($asset_model) {
|
if ($asset_model) {
|
||||||
|
|
||||||
if (! $this->updating) {
|
if (! $this->updating) {
|
||||||
$this->log('A matching model already exists, returning it.');
|
$this->log('A matching model already exists, returning it.');
|
||||||
|
|
||||||
return $asset_model->id;
|
return $asset_model->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log('Matching Model found, updating it.');
|
$this->log('Matching Model found, updating it.');
|
||||||
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
||||||
$item['name'] = $asset_model_name;
|
$item['name'] = $asset_model_name;
|
||||||
|
@ -237,14 +250,16 @@ class ItemImporter extends Importer
|
||||||
$this->log('Asset Model Updated');
|
$this->log('Asset Model Updated');
|
||||||
|
|
||||||
return $asset_model->id;
|
return $asset_model->id;
|
||||||
}
|
|
||||||
$this->log('No Matching Model, Creating a new one');
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->log('No Matching Model, Creating a new one');
|
||||||
$asset_model = new AssetModel();
|
$asset_model = new AssetModel();
|
||||||
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
$item = $this->sanitizeItemForStoring($asset_model, $editingModel);
|
||||||
$item['name'] = $asset_model_name;
|
$item['name'] = $asset_model_name;
|
||||||
$item['model_number'] = $asset_modelNumber;
|
$item['model_number'] = $asset_modelNumber;
|
||||||
$item['notes'] = $this->findCsvMatch($row, 'model_notes');
|
$item['notes'] = $this->findCsvMatch($row, 'model_notes');
|
||||||
|
$item['category_id'] = $this->createOrFetchCategory($asset_model_category);
|
||||||
|
|
||||||
$asset_model->fill($item);
|
$asset_model->fill($item);
|
||||||
$item = null;
|
$item = null;
|
||||||
|
@ -254,6 +269,7 @@ class ItemImporter extends Importer
|
||||||
|
|
||||||
return $asset_model->id;
|
return $asset_model->id;
|
||||||
}
|
}
|
||||||
|
$this->log('Asset Model Errors: '.$asset_model->getErrors());
|
||||||
$this->logError($asset_model, 'Asset Model "'.$asset_model_name.'"');
|
$this->logError($asset_model, 'Asset Model "'.$asset_model_name.'"');
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -374,6 +374,12 @@ class Importer extends Component
|
||||||
'model name',
|
'model name',
|
||||||
'model',
|
'model',
|
||||||
],
|
],
|
||||||
|
'eol_date' =>
|
||||||
|
[
|
||||||
|
'eol',
|
||||||
|
'eol date',
|
||||||
|
'asset eol date',
|
||||||
|
],
|
||||||
'gravatar' =>
|
'gravatar' =>
|
||||||
[
|
[
|
||||||
'gravatar',
|
'gravatar',
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
<table class="table table-striped table-bordered" id="errors-table">
|
<table class="table table-striped table-bordered" id="errors-table">
|
||||||
<thead>
|
<thead>
|
||||||
<th>{{ trans('general.item') }}</th>
|
<th>{{ trans('general.item') }}</th>
|
||||||
|
<th>Field</th>
|
||||||
<th>{{ trans('general.error') }}</th>
|
<th>{{ trans('general.error') }}</th>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
@ -41,8 +42,8 @@
|
||||||
@foreach($error_bag as $field => $error_list)
|
@foreach($error_bag as $field => $error_list)
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>{{ $key }}</b></td>
|
<td><b>{{ $key }}</b></td>
|
||||||
|
<td><b>{{ $field }}</b></td>
|
||||||
<td>
|
<td>
|
||||||
<b>{{ $field }}:</b>
|
|
||||||
<span>{{ implode(", ",$error_list) }}</span>
|
<span>{{ implode(", ",$error_list) }}</span>
|
||||||
<br />
|
<br />
|
||||||
</td>
|
</td>
|
||||||
|
|
Loading…
Reference in a new issue