|
@@ -10,6 +10,7 @@ use App\Models\StatTree;
|
|
|
use App\Models\StatTreeLine;
|
|
|
use App\Models\Client;
|
|
|
use App\Models\Pro;
|
|
|
+use Illuminate\Pagination\LengthAwarePaginator;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Ramsey\Uuid\Uuid;
|
|
|
|
|
@@ -86,9 +87,11 @@ class StatTreeLineController extends Controller
|
|
|
}
|
|
|
|
|
|
public function viewData(Request $request, StatTreeLine $line) {
|
|
|
+ $total = 0;
|
|
|
$rows = [];
|
|
|
$columns = [];
|
|
|
$selectColumns = [];
|
|
|
+ $paginator = null;
|
|
|
foreach ($line->reportColumns as $reportColumn) {
|
|
|
$columns[] = [
|
|
|
"label" => $reportColumn->label,
|
|
@@ -98,9 +101,13 @@ class StatTreeLineController extends Controller
|
|
|
$selectColumns[] = "{$reportColumn->display_key} as v_{$reportColumn->id}";
|
|
|
}
|
|
|
if(count($line->reportColumns)) {
|
|
|
- $rows = $this->queryStatTreeLineData($line, $selectColumns);
|
|
|
+ $result = $this->queryStatTreeLineData($line, $selectColumns, $request);
|
|
|
+ $total = $result[0];
|
|
|
+ $rows = $result[1];
|
|
|
+ $paginator = new LengthAwarePaginator($rows, $total, $request->input('per_page') ?: 20, $request->input('page') ?: 1);
|
|
|
+ $paginator->setPath(route('practice-management.statTreeLines.view-data', compact('line')));
|
|
|
}
|
|
|
- return view('app.stat-tree.stat-tree-lines.view-data', compact('line', 'rows', 'columns'));
|
|
|
+ return view('app.stat-tree.stat-tree-lines.view-data', compact('line', 'total', 'rows', 'columns', 'paginator'));
|
|
|
}
|
|
|
|
|
|
public function refreshCountQuery(Request $request)
|
|
@@ -150,7 +157,7 @@ class StatTreeLineController extends Controller
|
|
|
return DB::select($query);
|
|
|
}
|
|
|
|
|
|
- protected function queryStatTreeLineData(StatTreeLine $statTreeLine, $selectColumns)
|
|
|
+ protected function queryStatTreeLineData(StatTreeLine $statTreeLine, $selectColumns, Request $request)
|
|
|
{
|
|
|
|
|
|
$model = $statTreeLine->statTree->model;
|
|
@@ -188,10 +195,24 @@ class StatTreeLineController extends Controller
|
|
|
$clauses[] = str_replace('@PRO_ID', $statTreeLine->statTree->pro->id, $statTreeLine->statTree->pro_scope_clause);
|
|
|
}
|
|
|
|
|
|
- $query = 'SELECT ' . implode(", ", $selectColumns) . ' FROM '.$model.' WHERE '. implode(" AND ", $clauses);
|
|
|
+ $result = null;
|
|
|
|
|
|
+ // get count for paginator
|
|
|
try {
|
|
|
+ $query = 'SELECT COUNT(*) FROM '.$model.' WHERE '. implode(" AND ", $clauses);
|
|
|
$result = DB::select($query);
|
|
|
+ $total = $result[0]->count;
|
|
|
+
|
|
|
+ $page = $request->input('page') ?: 1;
|
|
|
+ $perPage = $request->input('per_page') ?: 20;
|
|
|
+ $offset = ($page - 1) * $perPage;
|
|
|
+ $sort = '';
|
|
|
+ if($request->input('sort_by') && $request->input('sort_by')) {
|
|
|
+ $sort = "ORDER BY " . $request->input('sort_by') . " " . $request->input('sort_dir') . " NULLS LAST";
|
|
|
+ }
|
|
|
+ $query = 'SELECT ' . implode(", ", $selectColumns) . ' FROM '.$model.' WHERE '. implode(" AND ", $clauses) . " {$sort} OFFSET {$offset} LIMIT {$perPage}";
|
|
|
+ $result = DB::select($query);
|
|
|
+ $result = [$total, $result];
|
|
|
}
|
|
|
catch (\Exception $ex) {
|
|
|
$result = 'error';
|