diff --git a/app/controllers/admin/AssetsController.php b/app/controllers/admin/AssetsController.php index e59c5cea78..f8bd9ae495 100644 --- a/app/controllers/admin/AssetsController.php +++ b/app/controllers/admin/AssetsController.php @@ -16,6 +16,7 @@ use Sentry; use Str; use Validator; use View; +use Response; class AssetsController extends AdminController { @@ -71,6 +72,63 @@ class AssetsController extends AdminController { return View::make('backend/reports/index', compact('assets')); } + public function exportReports() + { + // @todo - It may be worthwhile creating a separate controller for reporting + + // Grab all the assets + $assets = Asset::orderBy('created_at', 'DESC')->get(); + + $rows = array(); + + // Create the header row + $header = array( + Lang::get('admin/hardware/table.asset_tag'), + Lang::get('admin/hardware/table.title'), + Lang::get('admin/hardware/table.serial'), + Lang::get('admin/hardware/table.checkoutto'), + Lang::get('admin/hardware/table.location'), + Lang::get('admin/hardware/table.purchase_date'), + Lang::get('admin/hardware/table.purchase_cost'), + Lang::get('admin/hardware/table.book_value') + ); + $header = array_map('trim', $header); + $rows[] = implode($header, ','); + + // Create a row per asset + foreach ($assets as $asset) { + $row = array(); + $row[] = $asset->asset_tag; + $row[] = $asset->name; + $row[] = $asset->serial; + $row[] = $asset->assigned_to; + + if (($asset->assigned_to > 0) && ($asset->assigneduser->location_id > 0)) { + $location = Location::find($asset->assigneduser->location_id); + $row[] = $location->city . ', ' . $location->state; + } + else { + $row[] = ''; // Empty string if location is not set + } + + $depreciation = $asset->depreciate(); + + $row[] = $asset->purchase_date; + $row[] = number_format($asset->purchase_cost); + $row[] = number_format($depreciation); + $row[] = number_format(($asset->purchase_cost - $depreciation)); + $rows[] = implode($row, ','); + } + + // spit out a csv + $csv = implode($rows, "\n"); + $response = Response::make($csv, 200); + $response->header('Content-Type', 'text/csv'); + $response->header('Content-disposition', 'attachment;filename=report.csv'); + + return $response; + } + /** * Asset create. * diff --git a/app/routes.php b/app/routes.php index 71cebb3307..6427e0cce0 100755 --- a/app/routes.php +++ b/app/routes.php @@ -265,3 +265,4 @@ Route::get('/', function() }); Route::get('/', array('as' => 'home', 'uses' => 'Controllers\Admin\AssetsController@getIndex')); Route::get('reports', array('as' => 'reports', 'uses' => 'Controllers\Admin\AssetsController@getReports')); +Route::get('reports/export', array('as' => 'reports/export', 'uses' => 'Controllers\Admin\AssetsController@exportReports'));