diff --git a/app/Http/Controllers/Api/ImportController.php b/app/Http/Controllers/Api/ImportController.php index 13f430121..8df9961cf 100644 --- a/app/Http/Controllers/Api/ImportController.php +++ b/app/Http/Controllers/Api/ImportController.php @@ -177,6 +177,9 @@ class ImportController extends Controller case 'asset': $redirectTo = 'hardware.index'; break; + case 'assetmodel': + $redirectTo = 'models.index'; + break; case 'accessory': $redirectTo = 'accessories.index'; break; diff --git a/app/Importer/AssetModelImporter.php b/app/Importer/AssetModelImporter.php index 888265a95..cdf18dab2 100644 --- a/app/Importer/AssetModelImporter.php +++ b/app/Importer/AssetModelImporter.php @@ -59,18 +59,22 @@ class AssetModelImporter extends ItemImporter $this->item['manufacturer'] = trim($this->findCsvMatch($row, 'manufacturer')); $this->item['min_amt'] = trim($this->findCsvMatch($row, 'min_amt')); $this->item['model_number'] = trim($this->findCsvMatch($row, 'model_number')); + $this->item['eol'] = trim($this->findCsvMatch($row, 'eol')); $this->item['notes'] = trim($this->findCsvMatch($row, 'notes')); - $this->item['user_id'] = auth()->id(); + $this->item['created_by'] = auth()->id(); + + $this->item['requestable'] = trim(($this->fetchHumanBoolean($this->findCsvMatch($row, 'requestable'))) == 1) ? '1' : 0; + $assetmodel->requestable = $this->item['requestable']; if (!empty($this->item['category'])) { - if ($category = $this->createOrFetchCategory($row, 'category')) { - $this->item['category_id'] = $category->id; + if ($category = $this->createOrFetchCategory($this->item['category'])) { + $this->item['category_id'] = $category; } } if (!empty($this->item['manufacturer'])) { - if ($manufacturer = $this->createOrFetchManufacturer($row, 'manufacturer')) { - $this->item['manufacturer_id'] = $manufacturer->id; + if ($manufacturer = $this->createOrFetchManufacturer($this->item['manufacturer'])) { + $this->item['manufacturer_id'] = $manufacturer; } } diff --git a/app/Importer/ItemImporter.php b/app/Importer/ItemImporter.php index 16ae494c1..6acca1ad2 100644 --- a/app/Importer/ItemImporter.php +++ b/app/Importer/ItemImporter.php @@ -287,6 +287,7 @@ class ItemImporter extends Importer $classname = class_basename(get_class($this)); $item_type = strtolower(substr($classname, 0, strpos($classname, 'Importer'))); + // If we're importing asset models only (without attached assets), override the category type to asset if ($item_type == 'assetmodel') { $item_type = 'asset'; } @@ -302,7 +303,7 @@ class ItemImporter extends Importer if ($category) { - $this->log('A matching category: '.$asset_category.' already exists'); + $this->log('A matching category: '.$category->name.' already exists'); return $category->id; } diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index 164b6411d..6ebf00ff8 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -346,7 +346,7 @@ class Importer extends Component 'notes' => trans('general.item_notes', ['item' => trans('admin/hardware/form.model')]), 'min_amt' => trans('mail.min_QTY'), 'fieldset' => trans('admin/models/general.fieldset'), - 'category_type' => 'category type', + 'eol' => 'eol', ]; @@ -570,15 +570,13 @@ class Importer extends Component $this->message_type = 'success'; unset($this->files); - return; } - $this->message = trans('admin/hardware/message.import.file_delete_error'); - $this->message_type = 'danger'; - } - } - } + $this->message = trans('admin/hardware/message.import.file_delete_error'); + $this->message_type = 'danger'; + + } public function clearMessage() diff --git a/database/factories/ImportFactory.php b/database/factories/ImportFactory.php index 0b0f79aa4..79435a640 100644 --- a/database/factories/ImportFactory.php +++ b/database/factories/ImportFactory.php @@ -143,4 +143,23 @@ class ImportFactory extends Factory return $attributes; }); } + + /** + * Create an asset model import type. + * + * @return static + */ + public function assetmodel() + { + return $this->state(function (array $attributes) { + $fileBuilder = Importing\AssetModelsImportFileBuilder::new(); + + $attributes['name'] = "{$attributes['name']} Asset Model"; + $attributes['import_type'] = 'assetmodel'; + $attributes['header_row'] = $fileBuilder->toCsv()[0]; + $attributes['first_row'] = $fileBuilder->firstRow(); + + return $attributes; + }); + } } diff --git a/resources/views/livewire/importer.blade.php b/resources/views/livewire/importer.blade.php index be590593b..1832e64d8 100644 --- a/resources/views/livewire/importer.blade.php +++ b/resources/views/livewire/importer.blade.php @@ -177,7 +177,7 @@

@endif - @if ($activeFile->import_type != 'location' && $activeFile->import_type == 'assetmodel' && $update) + @if ($this->activeFile->import_type != 'location' && $this->activeFile->import_type == 'assetmodel' && $update)