' . $row->completion_percent . '%
';
})
->addColumn('completion_export', function ($row) {
return $row->completion_percent . '% ' . __('app.complete');
})
->addIndexColumn()
->setRowId(function ($row) {
return 'row-' . $row->id;
})
->rawColumns(['project_name', 'action', 'completion_percent', 'members', 'status', 'client_id', 'check'])
->removeColumn('project_summary')
->removeColumn('notes')
->removeColumn('category_id')
->removeColumn('feedback')
->removeColumn('start_date');
}
/**
* @param Project $model
* @return \Illuminate\Database\Eloquent\Builder
*/
public function query(Project $model)
{
$request = $this->request();
$model = $model
->with('members', 'members.user', 'client', 'client.clientDetails', 'currency', 'client.session')
->leftJoin('project_members', 'project_members.project_id', 'projects.id')
->leftJoin('users', 'project_members.user_id', 'users.id')
->leftJoin('users as client', 'projects.client_id', 'users.id')
->selectRaw('projects.id, projects.added_by, projects.project_name, projects.start_date, projects.deadline, projects.client_id,
projects.completion_percent, projects.project_budget, projects.currency_id,
projects.status, users.name, client.name as client_name,
( select count("id") from pinned where pinned.project_id = projects.id and pinned.user_id = ' . user()->id . ') as pinned_project');
if (!is_null($request->status) && $request->status != 'all') {
if ($request->status == 'not finished') {
$model->where('projects.completion_percent', '!=', 100);
}
else {
$model->where('projects.status', $request->status);
}
}
if ($request->progress) {
$model->where(function ($q) use ($request) {
foreach ($request->progress as $progress) {
$completionPercent = explode('-', $progress);
$q->orWhereBetween('projects.completion_percent', [$completionPercent[0], $completionPercent[1]]);
}
});
}
if (!is_null($request->client_id) && $request->client_id != 'all') {
$model->where('client_id', $request->client_id);
}
if (!is_null($request->team_id) && $request->team_id != 'all') {
$model->where('team_id', $request->team_id);
}
if (!is_null($request->category_id) && $request->category_id != 'all') {
$model->where('category_id', $request->category_id);
}
if (!is_null($request->employee_id) && $request->employee_id != 'all') {
$model->where('project_members.user_id', $request->employee_id);
}
if ($this->viewProjectPermission == 'added') {
$model->where('projects.added_by', user()->id);
}
if ($this->viewProjectPermission == 'owned' && in_array('employee', user_roles())) {
$model->where('project_members.user_id', user()->id);
}
if ($this->viewProjectPermission == 'both' && in_array('employee', user_roles())) {
$model->where(function ($query) {
return $query->where('projects.added_by', user()->id)
->orWhere('project_members.user_id', user()->id);
});
}
if ($request->searchText != '') {
$model->where(function ($query) {
$query->where('projects.project_name', 'like', '%' . request('searchText') . '%')
->orWhere('users.name', 'like', '%' . request('searchText') . '%');
});
}
$model->onlyTrashed()->groupBy('projects.id');
return $model;
}
/**
* Optional method if you want to use html builder.
*
* @return \Yajra\DataTables\Html\Builder
*/
public function html()
{
return $this->builder()
->setTableId('projects-table')
->columns($this->getColumns())
->minifiedAjax()
->orderBy(1)
->destroy(true)
->responsive(true)
->serverSide(true)
->processing(true)
->dom($this->domHtml)
->language(__('app.datatable'))
->parameters([
'initComplete' => 'function () {
window.LaravelDataTables["projects-table"].buttons().container()
.appendTo( "#table-actions")
}',
'fnDrawCallback' => 'function( oSettings ) {
$("body").tooltip({
selector: \'[data-toggle="tooltip"]\'
})
}',
])
->buttons(Button::make(['extend' => 'excel', 'text' => '