Implements first pass at csv exports of reports (#35)
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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'));
|
||||
|
||||
Reference in New Issue
Block a user