Skip to content

Commit

Permalink
Update:add some improvments
Browse files Browse the repository at this point in the history
  • Loading branch information
mehdi-fathi committed Jan 26, 2023
1 parent 4f01984 commit 6ea4d2b
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 35 deletions.
58 changes: 26 additions & 32 deletions src/QueryFilter/Core/FilterBuilder/QueryFilterBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ class QueryFilterBuilder

public RequestFilter $requestFilter;

/**
* @var \eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter
*/
public ResponseFilter $responseFilter;

/**
* @var \eloquentFilter\QueryFilter\Core\EloquentBuilder\QueryBuilderWrapper
*/
Expand All @@ -36,11 +41,13 @@ class QueryFilterBuilder
/**
* @param \eloquentFilter\QueryFilter\Core\FilterBuilder\core\QueryFilterCore $core
* @param \eloquentFilter\QueryFilter\Core\FilterBuilder\RequestFilter $requestFilter
* @param \eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter $responseFilter
*/
public function __construct(QueryFilterCore $core, RequestFilter $requestFilter)
public function __construct(QueryFilterCore $core, RequestFilter $requestFilter, ResponseFilter $responseFilter)
{
$this->queryFilterCore = $core;
$this->requestFilter = $requestFilter;
$this->responseFilter = $responseFilter;
}

/**
Expand All @@ -64,34 +71,15 @@ public function apply($builder, array $request = null, array $ignore_request = n
return $builder;
}

$this->requestHandel($ignore_request, $accept_request);
$this->handleRequest($ignore_request, $accept_request);

$this->setInjectedDetections($detect_injected);

$response = $this->resolveDetections();

$response = $this->responseFilterHandler($response);

return $response;
}

/**
* @param array|null $ignore_request
* @param array|null $accept_request
* @return void
*/
private function requestHandel(?array $ignore_request, ?array $accept_request): void
{
if (method_exists($this->queryBuilderWrapper->getModel(), 'serializeRequestFilter') && !empty($this->requestFilter->getRequest())) {
$serializeRequestFilter = $this->queryBuilderWrapper->serializeRequestFilter($this->requestFilter->getRequest());
$this->requestFilter->handelSerializeRequestFilter($serializeRequestFilter);
}
$this->resolveDetections();

if ($alias_list_filter = $this->queryBuilderWrapper->getAliasListFilter() ?? null) {
$this->requestFilter->makeAliasRequestFilter($alias_list_filter);
}
$this->responseFilter->responseFilterHandler($this->queryBuilderWrapper, $this->responseFilter->getResponse());

$this->requestFilter->setFilterRequests($ignore_request, $accept_request, $this->queryBuilderWrapper->getModel());
return $this->responseFilter->getResponse();
}

/**
Expand All @@ -118,20 +106,26 @@ private function resolveDetections()

/** @see ResolverDetections::getResolverOut() */
$response = app('ResolverDetections')->getResolverOut();
return $response;

$this->responseFilter->setResponse($response);
}

/**
* @param $out
*
* @return mixed
* @param array|null $ignore_request
* @param array|null $accept_request
* @return void
*/
public function responseFilterHandler($out)
private function handleRequest(?array $ignore_request, ?array $accept_request): void
{
if (method_exists($this->queryBuilderWrapper->getModel(), 'ResponseFilter')) {
return $this->queryBuilderWrapper->responseFilter($out);
$serializeRequestFilter = null;
if (method_exists($this->queryBuilderWrapper->getModel(), 'serializeRequestFilter') && !empty($this->requestFilter->getRequest())) {
$serializeRequestFilter = $this->queryBuilderWrapper->serializeRequestFilter($this->requestFilter->getRequest());
}

return $out;
$alias_list_filter = $this->queryBuilderWrapper->getAliasListFilter();

$this->requestFilter->requestAlter($ignore_request, $accept_request, $serializeRequestFilter, $alias_list_filter, $this->queryBuilderWrapper->getModel());
}


}
21 changes: 20 additions & 1 deletion src/QueryFilter/Core/FilterBuilder/RequestFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public function handelSerializeRequestFilter($request)
/**
* @param array|null $request
*/
public function setRequest($request): void
public function setRequest(?array $request): void
{
if (!empty($request['page'])) {
unset($request['page']);
Expand Down Expand Up @@ -173,6 +173,25 @@ private function updateRequestByAcceptRequest($accept_request)
}
}

/**
* @param array|null $ignore_request
* @param array|null $accept_request
* @param $serializeRequestFilter
* @param $alias_list_filter
* @return void
*/
public function requestAlter(?array $ignore_request, ?array $accept_request, $serializeRequestFilter, $alias_list_filter,$model): void
{
if (!empty($serializeRequestFilter)) {
$this->handelSerializeRequestFilter($serializeRequestFilter);
}

if ($alias_list_filter) {
$this->makeAliasRequestFilter($alias_list_filter);
}

$this->setFilterRequests($ignore_request, $accept_request,$model);
}

/**
* @param array $ignore_request
Expand Down
45 changes: 45 additions & 0 deletions src/QueryFilter/Core/FilterBuilder/ResponseFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace eloquentFilter\QueryFilter\Core\FilterBuilder;

/**
*
*/
class ResponseFilter
{
/**
* @var
*/
public $response;

/**
* @return mixed
*/
public function getResponse()
{
return $this->response;
}

/**
* @param mixed $response
*/
public function setResponse($response): void
{
$this->response = $response;
}

/**
* @param $queryBuilderWrapper
* @param $out
*
* @return mixed
*/
public function responseFilterHandler($queryBuilderWrapper, $out)
{
if (method_exists($queryBuilderWrapper->getModel(), 'ResponseFilter')) {
$out = $queryBuilderWrapper->responseFilter($out);
}
$this->setResponse($out);

}
}
4 changes: 3 additions & 1 deletion src/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use eloquentFilter\Command\MakeEloquentFilter;
use eloquentFilter\QueryFilter\Core\FilterBuilder\QueryFilterBuilder;
use eloquentFilter\QueryFilter\Core\FilterBuilder\RequestFilter;
use eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter;
use eloquentFilter\QueryFilter\Factory\QueryFilterCoreFactory;
use Illuminate\Support\ServiceProvider as BaseServiceProvider;

Expand Down Expand Up @@ -57,10 +58,11 @@ function () {
$queryFilterCoreFactory = new QueryFilterCoreFactory();

$request = new RequestFilter($this->app->get('request')->query());
$response = new ResponseFilter();

$core = $queryFilterCoreFactory->createQueryFilterCoreBuilder();

return new QueryFilterBuilder($core, $request);
return new QueryFilterBuilder($core, $request, $response);
}
);

Expand Down
5 changes: 4 additions & 1 deletion tests/TestCase.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php

use eloquentFilter\QueryFilter\Core\FilterBuilder\QueryFilterBuilder;
use eloquentFilter\QueryFilter\Core\FilterBuilder\ResponseFilter;
use eloquentFilter\QueryFilter\Factory\QueryFilterCoreFactory;
use Mockery as m;
use eloquentFilter\QueryFilter\Core\FilterBuilder\RequestFilter;
Expand Down Expand Up @@ -41,7 +42,9 @@ function () {

$core = $queryFilterCoreFactory->createQueryFilterCoreBuilder();

return new QueryFilterBuilder($core, $request);
$response = new ResponseFilter();

return new QueryFilterBuilder($core, $request, $response);
}
);
}
Expand Down

0 comments on commit 6ea4d2b

Please sign in to comment.