Importer rework (#3100)

* Step 1 of refactoring importer to use separate classes.

* Port web importer.  Fix an issue with validation where index 0 would be treated as false and cause weird results.

* Farewall, AssetImport.  You've served us well.
This commit is contained in:
Daniel Meltzer
2016-12-26 18:16:42 -05:00
committed by snipe
parent 8857faee65
commit 57374955a8
9 changed files with 1230 additions and 1453 deletions
+9 -25
View File
@@ -6,6 +6,7 @@ use App\Http\Requests\AssetCheckinRequest;
use App\Http\Requests\AssetCheckoutRequest;
use App\Http\Requests\AssetFileRequest;
use App\Http\Requests\AssetRequest;
use App\Http\Requests\ItemImportRequest;
use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\AssetMaintenance;
@@ -853,46 +854,29 @@ class AssetsController extends Controller
* @since [v2.0]
* @return Redirect
*/
public function postProcessImportFile()
public function postProcessImportFile(ItemImportRequest $request)
{
// php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname
$filename = config('app.private_uploads') . '/imports/assets/' . request('filename');
$this->authorize('create', Asset::class);
$importOptions = ['filename'=> $filename,
'--email_format'=>'firstname.lastname',
'--username_format'=>'firstname.lastname',
'--web-importer' => true,
'--user_id' => Auth::id(),
'--item-type' => request('import-type'),
];
if (request('import-update')) {
$importOptions['--update'] = true;
}
$errors = $request->import();
$return = Artisan::call('snipeit:import', $importOptions);
$display_output = Artisan::output();
$file = config('app.private_uploads').'/imports/assets/'.str_replace('.csv', '', $filename).'-output-'.date("Y-m-d-his").'.txt';
file_put_contents($file, $display_output);
// We use hardware instead of asset in the url
$redirectTo = "hardware";
switch(request('import-type')) {
case "asset":
$redirectTo = "hardware";
$redirectTo = "hardware.index";
break;
case "accessory":
$redirectTo = "accessories";
$redirectTo = "accessories.index";
break;
case "consumable":
$redirectTo = "consumables";
$redirectTo = "consumables.index";
break;
}
if ($return === 0) { //Success
return redirect()->to(route($redirectTo))->with('success', trans('admin/hardware/message.import.success'));
} elseif ($return === 1) { // Failure
return redirect()->back()->with('import_errors', json_decode($display_output))->with('error', trans('admin/hardware/message.import.error'));
if ($errors) { //Failure
return redirect()->back()->with('import_errors', json_decode(json_encode($errors)))->with('error', trans('admin/hardware/message.import.error'));
}
dd("Shouldn't be here");
return redirect()->to(route($redirectTo))->with('success', trans('admin/hardware/message.import.success'));
}