diff --git a/app/controllers/admin/AssetsController.php b/app/controllers/admin/AssetsController.php index b639ddb88f..5260e7c554 100755 --- a/app/controllers/admin/AssetsController.php +++ b/app/controllers/admin/AssetsController.php @@ -619,6 +619,57 @@ class AssetsController extends AdminController } + + public function getImport() { + + $path = app_path().'/private_uploads/imports/assets'; + $files = array(); + + if ($handle = opendir($path)) { + + /* This is the correct way to loop over the directory. */ + while (false !== ($entry = readdir($handle))) { + clearstatcache(); + if (substr(strrchr($entry,'.'),1)=='csv') { + $files[] = array( + 'filename' => $entry, + 'filesize' => Setting::fileSizeConvert(filesize($path.'/'.$entry)), + 'modified' => filemtime($path.'/'.$entry) + ); + } + + } + closedir($handle); + $files = array_reverse($files); + } + + return View::make('backend/hardware/import')->with('files',$files); + } + + public function apiPostImport() { + + $files = Input::file('files'); + $path = app_path().'/private_uploads/imports/assets'; + $results = array(); + + foreach ($files as $file) { + $file->move($path, $file->getClientOriginalName()); + $name = $file->getClientOriginalName(); + $results[] = compact('name'); + } + + return array( + 'files' => $results + ); + + } + + public function getProcessFile() { + // php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname + + Artisan::call('asset-import:csv', ['path/to/your/file.csv']); + } + /** * Asset clone. * diff --git a/app/routes.php b/app/routes.php index a5e340db3a..df3d59e0a0 100755 --- a/app/routes.php +++ b/app/routes.php @@ -10,6 +10,8 @@ Route::group( [ 'prefix' => 'hardware' ], function () { Route::get( 'list/{status?}', [ 'as' => 'api.hardware.list', 'uses' => 'AssetsController@getDatatable' ] ); + + Route::post('import', 'AssetsController@apiPostImport' ); } ); /*---Status Label API---*/ @@ -118,12 +120,6 @@ Route::group( [ 'prefix' => 'hardware', 'namespace' => 'Controllers\Admin', 'before' => 'admin-auth' ], function () { - Route::get( '/', [ - 'as' => 'hardware', - 'uses' => 'AssetsController@getIndex' - ] - ); - Route::get( 'create/{model?}', [ 'as' => 'create/hardware', 'uses' => 'AssetsController@getCreate' @@ -160,6 +156,15 @@ [ 'as' => 'delete/assetfile', 'uses' => 'AssetsController@getDeleteFile' ] ); Route::get( '{assetId}/showfile/{fileId}', [ 'as' => 'show/assetfile', 'uses' => 'AssetsController@displayFile' ] ); + + Route::get('import', 'AssetsController@getImport' ); + + Route::get( 'import/delete-import/{filename}', + [ 'as' => 'assets/import/delete-file', 'uses' => 'AssetsController@getDeleteImportFile' ] ); + + Route::get( 'import/process/{filename}', + [ 'as' => 'assets/import/process-file', 'uses' => 'AssetsController@getProcessImport' ] ); + Route::post( '{assetId}/edit', 'AssetsController@postEdit' ); Route::post( 'bulkedit', @@ -188,6 +193,12 @@ Route::get( '{modelID}/restore', [ 'as' => 'restore/model', 'uses' => 'ModelsController@getRestore' ] ); } ); + Route::get( '/', [ + 'as' => 'hardware', + 'uses' => 'AssetsController@getIndex' + ] + ); + } ); /* diff --git a/app/views/backend/hardware/import.blade.php b/app/views/backend/hardware/import.blade.php new file mode 100644 index 0000000000..8b298cac82 --- /dev/null +++ b/app/views/backend/hardware/import.blade.php @@ -0,0 +1,115 @@ +@extends('backend/layouts/default') + +{{-- Page title --}} +@section('title') + @lang('general.import') :: +@parent +@stop + +{{-- Page content --}} +@section('content') + +
| File | +Created | +Size | ++ + + @foreach ($files as $file) + | |
|---|---|---|---|---|
| {{{ $file['filename'] }}} | +{{{ date("M d, Y g:i A", $file['modified']) }}} | +{{{ $file['filesize'] }}} | +Process | ++ + + + | +