Asset maintenances for #1266
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v2.0-280',
|
||||
'hash_version' => 'v2.0-280-g7a306cd',
|
||||
'app_version' => 'v2.0-282',
|
||||
'hash_version' => 'v2.0-282-g7087e86',
|
||||
);
|
||||
@@ -45,71 +45,63 @@
|
||||
* @author Vincent Sposato <vincent.sposato@gmail.com>
|
||||
* @version v1.0
|
||||
*/
|
||||
public function getDatatable()
|
||||
{
|
||||
|
||||
$assetMaintenances = AssetMaintenance::orderBy( 'created_at', 'DESC' )
|
||||
->get();
|
||||
public function getDatatable()
|
||||
{
|
||||
$maintenances = AssetMaintenance::with('asset','supplier')
|
||||
->whereNull('deleted_at');
|
||||
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn( 'actions', function ( $assetMaintenances ) {
|
||||
if (Input::has('search')) {
|
||||
$maintenances = $maintenances->TextSearch(e(Input::get('search')));
|
||||
}
|
||||
|
||||
return '<a href="' . route( 'update/asset_maintenance', $assetMaintenances->id )
|
||||
. '" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'
|
||||
. route( 'delete/asset_maintenance', $assetMaintenances->id ) . '" data-content="'
|
||||
. Lang::get( 'admin/asset_maintenances/message.delete.confirm' ) . '" data-title="'
|
||||
. Lang::get( 'general.delete' ) . ' ' . htmlspecialchars( $assetMaintenances->title )
|
||||
. '?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
|
||||
} );
|
||||
if (Input::has('offset')) {
|
||||
$offset = e(Input::get('offset'));
|
||||
} else {
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
return Datatable::collection( $assetMaintenances )
|
||||
->addColumn( 'asset', function ( $assetMaintenances ) {
|
||||
if (Input::has('limit')) {
|
||||
$limit = e(Input::get('limit'));
|
||||
} else {
|
||||
$limit = 50;
|
||||
}
|
||||
|
||||
return link_to( '/hardware/' . $assetMaintenances->asset_id . '/view',
|
||||
mb_strimwidth( $assetMaintenances->asset->name, 0, 50, "..." ) );
|
||||
} )
|
||||
->addColumn( 'supplier', function ( $assetMaintenances ) {
|
||||
$allowed_columns = ['id','title','asset_maintenance_time','asset_maintenance_type','cost','start_date','completion_date','notes'];
|
||||
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
|
||||
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
|
||||
|
||||
return link_to( '/admin/settings/suppliers/' . $assetMaintenances->supplier_id
|
||||
. '/view',
|
||||
mb_strimwidth( $assetMaintenances->supplier->name, 0, 50, "..." ) );
|
||||
} )
|
||||
->addColumn( 'asset_maintenance_type', function ( $assetMaintenances ) {
|
||||
$maintenances->orderBy($sort, $order);
|
||||
|
||||
return $assetMaintenances->asset_maintenance_type;
|
||||
} )
|
||||
->addColumn( 'title', function ( $assetMaintenances ) {
|
||||
$maintenancesCount = $maintenances->count();
|
||||
$maintenances = $maintenances->skip($offset)->take($limit)->get();
|
||||
|
||||
return link_to( '/admin/asset_maintenances/' . $assetMaintenances->id . '/view',
|
||||
mb_strimwidth( $assetMaintenances->title, 0, 50, "..." ) );
|
||||
} )
|
||||
->addColumn( 'start_date', function ( $assetMaintenances ) {
|
||||
$rows = array();
|
||||
|
||||
return $assetMaintenances->start_date;
|
||||
} )
|
||||
->addColumn( 'completion_date', function ( $assetMaintenances ) {
|
||||
foreach($maintenances as $maintenance) {
|
||||
|
||||
return $assetMaintenances->completion_date;
|
||||
} )
|
||||
->addColumn( 'asset_maintenance_time', function ( $assetMaintenances ) {
|
||||
$actions = '<a href="'.route('update/location', $maintenance->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/statuslabel', $maintenance->id).'" data-content="'.Lang::get('admin/asset_maintenances/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
|
||||
|
||||
if (is_null( $assetMaintenances->asset_maintenance_time )) {
|
||||
$assetMaintenances->asset_maintenance_time = Carbon::now()
|
||||
->diffInDays( Carbon::parse( $assetMaintenances->start_date ) );
|
||||
}
|
||||
$rows[] = array(
|
||||
'id' => $maintenance->id,
|
||||
'asset_name' => $maintenance->asset->showAssetName(),
|
||||
'title' => $maintenance->title,
|
||||
'notes' => $maintenance->notes,
|
||||
'supplier' => $maintenance->supplier->name,
|
||||
'cost' => ($maintenance->cost) ? $maintenance->asset->assetloc->currency.''.$maintenance->cost : $maintenance->cost ,
|
||||
'asset_maintenance_type' => e($maintenance->asset_maintenance_type),
|
||||
'start_date' => $maintenance->start_date,
|
||||
'time' => $maintenance->asset_maintenance_time,
|
||||
'completion_date' => $maintenance->completion_date,
|
||||
'actions' => $actions
|
||||
);
|
||||
}
|
||||
|
||||
return intval( $assetMaintenances->asset_maintenance_time );
|
||||
} )
|
||||
->addColumn( 'cost', function ( $assetMaintenances ) {
|
||||
$data = array('total' => $maintenancesCount, 'rows' => $rows);
|
||||
|
||||
return sprintf( Lang::get( 'general.currency' ) . '%01.2f', $assetMaintenances->cost );
|
||||
} )
|
||||
->addColumn( $actions )
|
||||
->searchColumns( 'asset', 'supplier', 'asset_maintenance_type', 'title', 'start_date',
|
||||
'completion_date', 'asset_maintenance_time', 'cost', 'actions' )
|
||||
->orderColumns( 'asset', 'supplier', 'asset_maintenance_type', 'title', 'start_date',
|
||||
'completion_date', 'asset_maintenance_time', 'cost', 'actions' )
|
||||
->make();
|
||||
}
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* getCreate
|
||||
@@ -461,4 +453,4 @@
|
||||
return View::make( 'backend/asset_maintenances/view')->with('assetMaintenance', $assetMaintenance);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Asset Maintenance Type',
|
||||
'asset_maintenance_type' => 'Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Start Date',
|
||||
'completion_date' => 'Completion Date',
|
||||
'start_date' => 'Started',
|
||||
'completion_date' => 'Completed',
|
||||
'cost' => 'Cost',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
|
||||
'asset_maintenance_time' => 'Days',
|
||||
'notes' => 'Notes',
|
||||
'update' => 'Update Asset Maintenance',
|
||||
'create' => 'Create Asset Maintenance'
|
||||
'update' => 'Update',
|
||||
'create' => 'Create'
|
||||
];
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Asset Name',
|
||||
'supplier_name' => 'Supplier Name',
|
||||
'asset_name' => 'Asset',
|
||||
'supplier_name' => 'Supplier',
|
||||
'is_warranty' => 'Warranty',
|
||||
'dl_csv' => 'Download CSV'
|
||||
];
|
||||
];
|
||||
|
||||
@@ -81,4 +81,26 @@
|
||||
|
||||
return $query->whereNotNull( 'deleted_at' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Query builder scope to search on text
|
||||
*
|
||||
* @param Illuminate\Database\Query\Builder $query Query builder instance
|
||||
* @param text $search Search term
|
||||
*
|
||||
* @return Illuminate\Database\Query\Builder Modified query builder
|
||||
*/
|
||||
public function scopeTextSearch($query, $search)
|
||||
{
|
||||
|
||||
return $query->where(function($query) use ($search)
|
||||
{
|
||||
$query->where('title', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('notes', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('asset_maintenance_type', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('cost', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('start_date', 'LIKE', '%'.$search.'%')
|
||||
->orWhere('completion_date', 'LIKE', '%'.$search.'%');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,49 +20,70 @@
|
||||
</div>
|
||||
|
||||
<div class="row form-wrapper">
|
||||
{{ Datatable::table()
|
||||
->addColumn(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'),
|
||||
Lang::get('table.actions'))
|
||||
->setOptions(
|
||||
[
|
||||
'language' => [
|
||||
'search' => Lang::get('general.search'),
|
||||
'lengthMenu' => Lang::get('general.page_menu'),
|
||||
'loadingRecords' => Lang::get('general.loading'),
|
||||
'zeroRecords' => Lang::get('general.no_results'),
|
||||
'info' => Lang::get('general.pagination_info'),
|
||||
'processing' => Lang::get('general.processing'),
|
||||
'paginate'=> [
|
||||
'first'=>Lang::get('general.first'),
|
||||
'previous'=>Lang::get('general.previous'),
|
||||
'next'=>Lang::get('general.next'),
|
||||
'last'=>Lang::get('general.last'),
|
||||
],
|
||||
],
|
||||
'sAjaxSource'=>route('api.asset_maintenances.list'),
|
||||
'dom' =>'CT<"clear">lfrtip',
|
||||
'colVis'=> ['showAll'=>'Show All','restore'=>'Restore','activate'=>'mouseover'],
|
||||
'columnDefs'=> [
|
||||
['bSortable'=>false,'targets'=>[8]],
|
||||
['width'=>'12%','targets'=>[8]],
|
||||
],
|
||||
'order'=>[[0,'asc']],
|
||||
]
|
||||
)
|
||||
->render() }}
|
||||
<table
|
||||
name="maintenances"
|
||||
id="table"
|
||||
data-url="{{route('api.asset_maintenances.list')}}"
|
||||
data-cookie="true"
|
||||
data-click-to-select="true"
|
||||
data-cookie-id-table="maintenancesTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th data-sortable="true" data-field="id" data-visible="false">@lang('general.id')</th>
|
||||
<th data-sortable="false" data-field="asset_name">@lang('admin/asset_maintenances/table.asset_name')</th>
|
||||
<th data-sortable="false" data-field="supplier">@lang('admin/asset_maintenances/table.supplier_name')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="asset_maintenance_type">@lang('admin/asset_maintenances/form.asset_maintenance_type')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="title">@lang('admin/asset_maintenances/form.title')</th>
|
||||
<th data-searchable="true" data-sortable="false" data-field="start_date">@lang('admin/asset_maintenances/form.start_date')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="completion_date">@lang('admin/asset_maintenances/form.completion_date')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="asset_maintenance_time">@lang('admin/asset_maintenances/form.asset_maintenance_time')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="cost" class="text-right">@lang('admin/asset_maintenances/form.cost')</th>
|
||||
<th data-searchable="true" data-sortable="true" data-field="notes" data-visible="false">@lang('admin/asset_maintenances/form.notes')</th>
|
||||
<th data-switchable="false" data-searchable="false" data-sortable="false" data-field="actions">{{ Lang::get('table.actions') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@section('moar_scripts')
|
||||
<script src="https://demo.snipeitapp.com/assets/js/jquery.dataTables.min.js"></script>
|
||||
<script src="https://demo.snipeitapp.com/assets/js/dataTables.colVis.js"></script>
|
||||
<script src="https://demo.snipeitapp.com/assets/js/dataTables.tableTools.js"></script>
|
||||
<script src="{{ asset('assets/js/bootstrap-table.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/cookie/bootstrap-table-cookie.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/mobile/bootstrap-table-mobile.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/export/bootstrap-table-export.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/export/tableExport.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/extensions/export/jquery.base64.js') }}"></script>
|
||||
<script type="text/javascript">
|
||||
$('#table').bootstrapTable({
|
||||
classes: 'table table-responsive table-no-bordered',
|
||||
undefinedText: '',
|
||||
iconsPrefix: 'fa',
|
||||
showRefresh: true,
|
||||
search: true,
|
||||
pageSize: {{{ Setting::getSettings()->per_page }}},
|
||||
pagination: true,
|
||||
sidePagination: 'server',
|
||||
sortable: true,
|
||||
cookie: true,
|
||||
mobileResponsive: true,
|
||||
showExport: true,
|
||||
showColumns: true,
|
||||
exportDataType: 'all',
|
||||
exportTypes: ['csv', 'txt','json', 'xml'],
|
||||
maintainSelected: true,
|
||||
paginationFirstText: "@lang('general.first')",
|
||||
paginationLastText: "@lang('general.last')",
|
||||
paginationPreText: "@lang('general.previous')",
|
||||
paginationNextText: "@lang('general.next')",
|
||||
pageList: ['10','25','50','100','150','200'],
|
||||
icons: {
|
||||
paginationSwitchDown: 'fa-caret-square-o-down',
|
||||
paginationSwitchUp: 'fa-caret-square-o-up',
|
||||
columns: 'fa-columns',
|
||||
refresh: 'fa-refresh'
|
||||
},
|
||||
|
||||
});
|
||||
</script>
|
||||
@stop
|
||||
|
||||
@stop
|
||||
@stop
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="user-profile">
|
||||
<div class="row profile">
|
||||
<div class="col-md-9 bio">
|
||||
<table
|
||||
<table
|
||||
name="categories"
|
||||
id="table"
|
||||
data-url="{{route('api.categories.list')}}"
|
||||
|
||||
Reference in New Issue
Block a user