orderBy( 'created_at', 'DESC' ) ->get(); return View::make( 'backend/reports/asset', compact( 'assets' ) ); } /** * Export Asset Report as CSV * * @return file download */ public function exportAssetReport() { // Grab all the assets $assets = Asset::orderBy( 'created_at', 'DESC' ) ->get(); $rows = [ ]; // Create the header row $header = [ Lang::get( 'admin/hardware/table.asset_tag' ), Lang::get( 'admin/hardware/form.manufacturer' ), Lang::get( 'admin/hardware/form.model' ), Lang::get( 'general.model_no' ), Lang::get( 'general.name' ), Lang::get( 'admin/hardware/table.serial' ), Lang::get( 'general.status' ), Lang::get( 'admin/hardware/table.purchase_date' ), Lang::get( 'admin/hardware/table.purchase_cost' ), Lang::get( 'admin/hardware/form.order' ), Lang::get( 'admin/hardware/form.supplier' ), Lang::get( 'admin/hardware/table.checkoutto' ), Lang::get( 'admin/hardware/table.location' ), Lang::get( 'general.notes' ), ]; $header = array_map( 'trim', $header ); $rows[] = implode( $header, ',' ); // Create a row per asset foreach ($assets as $asset) { $row = [ ]; $row[] = $asset->asset_tag; if ($asset->model->manufacturer) { $row[] = $asset->model->manufacturer->name; } else { $row[] = ''; } $row[] = '"' . $asset->model->name . '"'; $row[] = '"' . $asset->model->modelno . '"'; $row[] = $asset->name; $row[] = $asset->serial; if ($asset->assetstatus) { $row[] = $asset->assetstatus->name; } else { $row[] = ''; } $row[] = $asset->purchase_date; $row[] = '"' . number_format( $asset->purchase_cost ) . '"'; if ($asset->order_number) { $row[] = $asset->order_number; } else { $row[] = ''; } if ($asset->supplier_id) { $row[] = $asset->supplier->name; } else { $row[] = ''; } if ($asset->assigned_to > 0) { $user = User::find( $asset->assigned_to ); $row[] = $user->fullName(); } else { $row[] = ''; // Empty string if unassigned } if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) { $location = Location::find( $asset->assigneduser->location_id ); if ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } elseif ($asset->rtd_location_id) { $location = Location::find( $asset->rtd_location_id ); if ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } else { $row[] = ''; // Empty string if location is not set } if ($asset->notes) { $row[] = '"' . $asset->notes . '"'; } else { $row[] = ''; } $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; } /** * Show Depreciation Report for Assets * * @return View */ public function getDeprecationReport() { // Grab all the assets $assets = Asset::with( 'model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog' ) ->orderBy( 'created_at', 'DESC' ) ->get(); return View::make( 'backend/reports/depreciation', compact( 'assets' ) ); } /** * Export Depreciation Report as CSV * * @return file download */ public function exportDeprecationReport() { // Grab all the assets $assets = Asset::with( 'model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog' ) ->orderBy( 'created_at', 'DESC' ) ->get(); $csv = \League\Csv\Writer::createFromFileObject( new \SplTempFileObject() ); $csv->setOutputBOM( Reader::BOM_UTF16_BE ); $rows = [ ]; // Create the header row $header = [ 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' ), Lang::get( 'admin/hardware/table.diff' ) ]; //we insert the CSV header $csv->insertOne( $header ); // Create a row per asset foreach ($assets as $asset) { $row = [ ]; $row[] = $asset->asset_tag; $row[] = $asset->name; $row[] = $asset->serial; if ($asset->assigned_to > 0) { $user = User::find( $asset->assigned_to ); $row[] = $user->fullName(); } else { $row[] = ''; // Empty string if unassigned } if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) { $location = Location::find( $asset->assigneduser->location_id ); if ($location->city) { $row[] = $location->city . ', ' . $location->state; } elseif ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } else { $row[] = ''; // Empty string if location is not set } if ($asset->assetloc) { $currency = $asset->assetloc->currency; } else { $currency = Setting::first()->default_currency; } $row[] = $asset->purchase_date; $row[] = $currency . number_format( $asset->purchase_cost ); $row[] = $currency . number_format( $asset->getDepreciatedValue() ); $row[] = $currency . number_format( ( $asset->purchase_cost - $asset->getDepreciatedValue() ) ); $csv->insertOne( $row ); } $csv->output( 'depreciation-report-' . date( 'Y-m-d' ) . '.csv' ); die; } /** * Show Report for Activity * * @return View */ public function getActivityReport() { $log_actions = Actionlog::orderBy( 'created_at', 'DESC' ) ->with( 'adminlog' ) ->with( 'accessorylog' ) ->with( 'assetlog' ) ->with( 'licenselog' ) ->with( 'userlog' ) ->orderBy( 'created_at', 'DESC' ) ->get(); return View::make( 'backend/reports/activity', compact( 'log_actions' ) ); } /** * Show Report for Licenses * * @return View */ public function getLicenseReport() { $licenses = License::orderBy( 'created_at', 'DESC' ) ->get(); return View::make( 'backend/reports/licenses', compact( 'licenses' ) ); } /** * Export License Report as CSV * * @return file download */ public function exportLicenseReport() { $licenses = License::orderBy( 'created_at', 'DESC' ) ->get(); $rows = [ ]; $header = [ Lang::get( 'admin/licenses/table.title' ), Lang::get( 'admin/licenses/table.serial' ), Lang::get( 'admin/licenses/form.seats' ), Lang::get( 'admin/licenses/form.remaining_seats' ), Lang::get( 'admin/licenses/form.expiration' ), Lang::get( 'admin/licenses/form.date' ), Lang::get( 'admin/licenses/form.cost' ) ]; $header = array_map( 'trim', $header ); $rows[] = implode( $header, ', ' ); // Row per license foreach ($licenses as $license) { $row = [ ]; $row[] = $license->name; $row[] = $license->serial; $row[] = $license->seats; $row[] = $license->remaincount(); $row[] = $license->expiration_date; $row[] = $license->purchase_date; $row[] = '"' . number_format( $license->purchase_cost ) . '"'; $rows[] = implode( $row, ',' ); } $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; } public function getCustomReport() { return View::make( 'backend/reports/custom' ); } public function postCustom() { $assets = Asset::orderBy( 'created_at', 'DESC' ) ->get(); $rows = [ ]; $header = [ ]; if (e( Input::get( 'asset_name' ) ) == '1') { $header[] = 'Asset Name'; } if (e( Input::get( 'asset_tag' ) ) == '1') { $header[] = 'Asset Tag'; } if (e( Input::get( 'manufacturer' ) ) == '1') { $header[] = 'Manufacturer'; } if (e( Input::get( 'model' ) ) == '1') { $header[] = 'Model'; $header[] = 'Model Number'; } if (e( Input::get( 'serial' ) ) == '1') { $header[] = 'Serial'; } if (e( Input::get( 'purchase_date' ) ) == '1') { $header[] = 'Purchase Date'; } if (( e( Input::get( 'purchase_cost' ) ) == '1' ) && ( e( Input::get( 'depreciation' ) ) == '0' )) { $header[] = 'Purchase Cost'; } if (e( Input::get( 'order' ) ) == '1') { $header[] = 'Order Number'; } if (e( Input::get( 'supplier' ) ) == '1') { $header[] = 'Supplier'; } if (e( Input::get( 'location' ) ) == '1') { $header[] = 'Location'; } if (e( Input::get( 'assigned_to' ) ) == '1') { $header[] = 'Assigned To'; } if (e( Input::get( 'status' ) ) == '1') { $header[] = 'Status'; } if (e( Input::get( 'warranty' ) ) == '1') { $header[] = 'Warranty'; $header[] = 'Warranty Expires'; } if (e( Input::get( 'depreciation' ) ) == '1') { $header[] = 'Purchase Cost'; $header[] = 'Value'; $header[] = 'Diff'; } $header = array_map( 'trim', $header ); $rows[] = implode( $header, ',' ); foreach ($assets as $asset) { $row = [ ]; if (e( Input::get( 'asset_name' ) ) == '1') { $row[] = $asset->name; } if (e( Input::get( 'asset_tag' ) ) == '1') { $row[] = $asset->asset_tag; } if (e( Input::get( 'manufacturer' ) ) == '1') { if ($asset->model->manufacturer) { $row[] = $asset->model->manufacturer->name; } else { $row[] = ''; } } if (e( Input::get( 'model' ) ) == '1') { $row[] = '"' . $asset->model->name . '"'; $row[] = '"' . $asset->model->modelno . '"'; } if (e( Input::get( 'serial' ) ) == '1') { $row[] = $asset->serial; } if (e( Input::get( 'purchase_date' ) ) == '1') { $row[] = $asset->purchase_date; } if (e( Input::get( 'purchase_cost' ) ) == '1') { $row[] = '"' . number_format( $asset->purchase_cost ) . '"'; } if (e( Input::get( 'order' ) ) == '1') { if ($asset->order_number) { $row[] = $asset->order_number; } else { $row[] = ''; } } if (e( Input::get( 'supplier' ) ) == '1') { if ($asset->supplier_id) { $row[] = $asset->supplier->name; } else { $row[] = ''; } } if (e( Input::get( 'location' ) ) == '1') { if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) { $location = Location::find( $asset->assigneduser->location_id ); if ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } elseif ($asset->rtd_location_id) { $location = Location::find( $asset->rtd_location_id ); if ($location->name) { $row[] = $location->name; } else { $row[] = ''; } } else { $row[] = ''; // Empty string if location is not set } } if (e( Input::get( 'assigned_to' ) ) == '1') { if ($asset->assigned_to > 0) { $user = User::find( $asset->assigned_to ); $row[] = $user->fullName(); } else { $row[] = ''; // Empty string if unassigned } } if (e( Input::get( 'status' ) ) == '1') { if (( $asset->status_id == '0' ) && ( $asset->assigned_to == '0' )) { $row[] = Lang::get( 'general.ready_to_deploy' ); } elseif (( $asset->status_id == '' ) && ( $asset->assigned_to == '0' )) { $row[] = Lang::get( 'general.pending' ); } elseif ($asset->assetstatus) { $row[] = $asset->assetstatus->name; } else { $row[] = ''; } } if (e( Input::get( 'warranty' ) ) == '1') { if ($asset->warranty_months) { $row[] = $asset->warranty_months; $row[] = $asset->warrantee_expires(); } else { $row[] = ''; $row[] = ''; } } if (e( Input::get( 'depreciation' ) ) == '1') { $depreciation = $asset->getDepreciatedValue(); $row[] = '"' . number_format( $asset->purchase_cost ) . '"'; $row[] = '"' . number_format( $depreciation ) . '"'; $row[] = '"' . number_format( $asset->purchase_cost - $depreciation ) . '"'; } $rows[] = implode( $row, ',' ); } // spit out a csv if (array_filter( $rows )) { $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; } else { return Redirect::to( "reports/custom" ) ->with( 'error', Lang::get( 'admin/reports/message.error' ) ); } } /** * getImprovementsReport * * @return mixed * @author Vincent Sposato * @version v1.0 */ public function getAssetMaintenancesReport() { // Grab all the improvements $assetMaintenances = \AssetMaintenance::with( 'asset', 'supplier' ) ->orderBy( 'created_at', 'DESC' ) ->get(); return View::make( 'backend/reports/asset_maintenances', compact( 'assetMaintenances' ) ); } /** * exportImprovementsReport * * @return \Illuminate\Http\Response * @author Vincent Sposato * @version v1.0 */ public function exportAssetMaintenancesReport() { // Grab all the improvements $assetMaintenances = AssetMaintenance::with( 'asset', 'supplier' ) ->orderBy( 'created_at', 'DESC' ) ->get(); $rows = [ ]; $header = [ Lang::get( 'admin/asset_maintenances/table.asset_name' ), Lang::get( 'admin/asset_maintenances/table.supplier_name' ), Lang::get( 'admin/asset_maintenances/form.asset_maintenance_type' ), Lang::get( 'admin/asset_maintenances/form.title' ), Lang::get( 'admin/asset_maintenances/form.start_date' ), Lang::get( 'admin/asset_maintenances/form.completion_date' ), Lang::get( 'admin/asset_maintenances/form.asset_maintenance_time' ), Lang::get( 'admin/asset_maintenances/form.cost' ) ]; $header = array_map( 'trim', $header ); $rows[] = implode( $header, ',' ); foreach ($assetMaintenances as $assetMaintenance) { $row = [ ]; $row[] = str_replace( ',', '', $assetMaintenance->asset->name ); $row[] = str_replace( ',', '', $assetMaintenance->supplier->name ); $row[] = $assetMaintenance->improvement_type; $row[] = $assetMaintenance->title; $row[] = $assetMaintenance->start_date; $row[] = $assetMaintenance->completion_date; if (is_null( $assetMaintenance->asset_maintenance_time )) { $improvementTime = intval( Carbon::now() ->diffInDays( Carbon::parse( $assetMaintenance->start_date ) ) ); } else { $improvementTime = intval( $assetMaintenance->asset_maintenance_time ); } $row[] = $improvementTime; $row[] = Lang::get( 'general.currency' ) . number_format( $assetMaintenance->cost, 2 ); $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; } public function getAssetAcceptanceReport() { if (count($this->getAssetsNotAcceptedYet()) > 0) { $assetsForReport = Actionlog::whereIn( 'id', $this->getAssetsNotAcceptedYet())->get(); } else { $assetsForReport = null; } return View::make( 'backend/reports/unaccepted_assets', compact( 'assetsForReport' ) ); } public function exportAssetAcceptanceReport() { // Grab all the improvements $assetsForReport = Actionlog::whereIn( 'id', $this->getAssetsNotAcceptedYet() ) ->get(); $rows = [ ]; $header = [ Lang::get( 'general.category' ), Lang::get( 'admin/hardware/form.model' ), Lang::get( 'admin/hardware/form.name' ), Lang::get( 'admin/hardware/table.asset_tag' ), Lang::get( 'admin/hardware/table.checkout_date' ), Lang::get( 'admin/hardware/table.checkoutto' ), Lang::get( 'admin/hardware/table.days_without_acceptance' ), ]; $header = array_map( 'trim', $header ); $rows[] = implode( $header, ',' ); foreach ($assetsForReport as $assetItem) { $row = [ ]; $row[] = str_replace( ',', '', $assetItem->assetlog->model->category->name ); $row[] = str_replace( ',', '', $assetItem->assetlog->model->name ); $row[] = str_replace( ',', '', $assetItem->assetlog->showAssetName() ); $row[] = str_replace( ',', '', $assetItem->assetlog->asset_tag ); $row[] = $assetItem->created_at->format( 'Y-m-d' ); $row[] = str_replace( ',', '', $assetItem->assetlog->assigneduser->fullName() ); $row[] = $assetItem->created_at->diffInDays( Carbon::now() ); $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; } /** * getCheckedOutAssetsRequiringAcceptance * * @param $modelsInCategoriesThatRequireAcceptance * * @return array * @author Vincent Sposato * @version v1.0 */ protected function getCheckedOutAssetsRequiringAcceptance( $modelsInCategoriesThatRequireAcceptance ) { return array_pluck( Asset::deployed() ->inModelList( $modelsInCategoriesThatRequireAcceptance ) ->select( 'id' ) ->get() ->toArray(), 'id' ); } /** * getModelsInCategoriesThatRequireAcceptance * * @param $assetCategoriesRequiringAcceptance * * @return array * @author Vincent Sposato * @version v1.0 */ protected function getModelsInCategoriesThatRequireAcceptance( $assetCategoriesRequiringAcceptance ) { return array_pluck( Model::inCategory( $assetCategoriesRequiringAcceptance ) ->select( 'id' ) ->get() ->toArray(), 'id' ); } /** * getCategoriesThatRequireAcceptance * * @return array * @author Vincent Sposato * @version v1.0 */ protected function getCategoriesThatRequireAcceptance() { return array_pluck( Category::requiresAcceptance() ->select( 'id' ) ->get() ->toArray(), 'id' ); } /** * getAssetsCheckedOutRequiringAcceptance * * @return array * @author Vincent Sposato * @version v1.0 */ protected function getAssetsCheckedOutRequiringAcceptance() { return $this->getCheckedOutAssetsRequiringAcceptance( $this->getModelsInCategoriesThatRequireAcceptance( $this->getCategoriesThatRequireAcceptance() ) ); } /** * getAssetsNotAcceptedYet * * @return array * @author Vincent Sposato * @version v1.0 */ protected function getAssetsNotAcceptedYet() { if (count($this->getAssetsCheckedOutRequiringAcceptance()) > 0) { return array_pluck( Actionlog::getUnacceptedAssets( $this->getAssetsCheckedOutRequiringAcceptance() ), 'id' ); } else { return null; } } }