First commit
This commit is contained in:
90
app/Http/Controllers/PersonController.php
Normal file
90
app/Http/Controllers/PersonController.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Person;
|
||||
use App\Http\Controllers\JsonResponse;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class PersonController extends Controller
|
||||
{
|
||||
|
||||
public function index()
|
||||
{
|
||||
$persons = Person::skip(10)
|
||||
->take(5)
|
||||
->get();
|
||||
return response()->json($persons);
|
||||
}
|
||||
|
||||
public function process_rule($query,$rules,$condition)
|
||||
{
|
||||
$where = null;
|
||||
$count = 0;
|
||||
|
||||
foreach ($rules as $rule) {
|
||||
if(array_key_exists("condition",$rule)) {
|
||||
$where = function ($q) use ($rule) {
|
||||
$this->process_rule($q,$rule["rules"],$rule["condition"]);
|
||||
};
|
||||
|
||||
} else {
|
||||
switch ($rule["operator"]) {
|
||||
case "=":
|
||||
$where = [[ $rule["id"], '=', $rule["value"] ]];
|
||||
break;
|
||||
case "(":
|
||||
$where = [[ $rule["id"], 'LIKE', $rule["value"]."%" ]];
|
||||
break;
|
||||
case "!=":
|
||||
$where = [[ $rule["id"], '!=', $rule["value"]]];
|
||||
break;
|
||||
case ")":
|
||||
$where = [[ $rule["id"], 'LIKE', "%".$rule["value"] ]];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($query != null)
|
||||
{
|
||||
switch ($condition) {
|
||||
case "and":
|
||||
$query->where($where);
|
||||
break;
|
||||
case "or":
|
||||
$count == 0 ? $query->where($where) : $query->orWhere($where);
|
||||
}
|
||||
} else {
|
||||
$query = Person::where($where);
|
||||
}
|
||||
|
||||
$count++;
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
public function search(Request $request)
|
||||
{
|
||||
$query = $request->post();
|
||||
|
||||
$currentQuery = $query;
|
||||
$condition = $currentQuery["condition"];
|
||||
|
||||
$qr = $this->process_rule(null,$currentQuery["rules"],$condition);
|
||||
|
||||
if ($qr) $result = $qr->paginate(2);
|
||||
else $result = [];
|
||||
|
||||
return Inertia::render(
|
||||
'Rpo/Results',
|
||||
[
|
||||
'result' => $result,
|
||||
'query' => $query,
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user