allow empty query in get authors path, changes names

This commit is contained in:
Guillermo Giuliana 2020-03-02 19:08:19 -03:00
parent c6c1a57c57
commit 5b75e5d732
4 changed files with 23 additions and 17 deletions

View File

@ -35,11 +35,11 @@ class GetAuthorsController extends Controller {
'permission' => 'staff_1', 'permission' => 'staff_1',
'requestData' => [ 'requestData' => [
'query' => [ 'query' => [
'validation' => DataValidator::oneOf(DataValidator::notBlank(),DataValidator::nullType()), 'validation' => DataValidator::oneOf(DataValidator::stringType(),DataValidator::nullType()),
'error' => ERRORS::INVALID_QUERY 'error' => ERRORS::INVALID_QUERY
], ],
'blackList' => [ 'blackList' => [
'validation' => DataValidator::oneOf(DataValidator::validBlackList(),DataValidator::nullType()), 'validation' => DataValidator::oneOf(DataValidator::validAuthorsBlackList(),DataValidator::nullType()),
'error' => ERRORS::INVALID_BLACK_LIST 'error' => ERRORS::INVALID_BLACK_LIST
] ]
] ]
@ -49,25 +49,25 @@ class GetAuthorsController extends Controller {
public function handler() { public function handler() {
$query = Controller::request('query'); $query = Controller::request('query');
$idAuthorsQuery = "SELECT id,name,level FROM staff " . $this->GenerateAuthorsIdQuery($query) . " LIMIT 10"; $authorsQuery = "SELECT id,name,level FROM staff " . $this->generateAuthorsIdQuery($query) . " LIMIT 10";
$authorsIdList = RedBean::getAll($idAuthorsQuery, [':query' => "%" .$query . "%",':query2' => $query . "%"] ); $authorsMatch = RedBean::getAll($authorsQuery, [':query' => "%" .$query . "%",':queryAtBeginning' => $query . "%"] );
$authorsList = []; $authors = [];
foreach($authorsIdList as $item) { foreach($authorsMatch as $authorMatch) {
if($item['level'] >=1 && $item['level'] <= 3){ if($authorMatch['level'] >=1 && $authorMatch['level'] <= 3){
$author = Staff::getDataStore($item['id']*1); $author = Staff::getDataStore($authorMatch['id']*1);
} else { } else {
$author = User::getDataStore($item['id']*1); $author = User::getDataStore($authorMatch['id']*1);
} }
array_push($authorsList, $author->toArray()); array_push($authors, $author->toArray());
} }
Response::respondSuccess([ Response::respondSuccess([
'authors' => $authorsList 'authors' => $authors
]); ]);
} }
public function generateAuthorsIdQuery($query) { public function generateAuthorsIdQuery($query) {
if ($query){ if ($query){
return "WHERE name LIKE :query " . $this->generateStaffBlackListQuery() . " UNION SELECT id,name,signup_date FROM user WHERE name LIKE :query " . $this->generateUserBlackListQuery() . " ORDER BY CASE WHEN (name LIKE :query2) THEN 1 ELSE 2 END ASC "; return "WHERE name LIKE :query " . $this->generateStaffBlackListQuery() . " UNION SELECT id,name,signup_date FROM user WHERE name LIKE :query " . $this->generateUserBlackListQuery() . " ORDER BY CASE WHEN (name LIKE :queryAtBeginning) THEN 1 ELSE 2 END ASC ";
} else { } else {
return "WHERE 1=1 ". $this->generateStaffBlackListQuery() . " UNION SELECT id,name,signup_date FROM user WHERE 1=1". $this->generateUserBlackListQuery() ." ORDER BY id"; return "WHERE 1=1 ". $this->generateStaffBlackListQuery() . " UNION SELECT id,name,signup_date FROM user WHERE 1=1". $this->generateUserBlackListQuery() ." ORDER BY id";
} }

View File

@ -134,9 +134,8 @@ class SearchController extends Controller {
$query = $this->getSQLQuery($inputs); $query = $this->getSQLQuery($inputs);
$queryWithOrder = $this->getSQLQueryWithOrder($inputs); $queryWithOrder = $this->getSQLQueryWithOrder($inputs);
//throw new Exception($queryWithOrder); $totalCount = RedBean::getAll("SELECT COUNT(*) FROM (SELECT COUNT(*) " . $query . " ) AS T2", [':query' => "%" . $inputs['query'] . "%", ':queryAtBeginning' => $inputs['query'] . "%" ])[0]['COUNT(*)'];
$totalCount = RedBean::getAll("SELECT COUNT(*) FROM (SELECT COUNT(*) " . $query . " ) AS T2", [':query' => "%" . $inputs['query'] . "%", ':query2' => $inputs['query'] . "%" ])[0]['COUNT(*)']; $ticketIdList = RedBean::getAll($queryWithOrder, [':query' => "%" . $inputs['query'] . "%", ':queryAtBeginning' => $inputs['query'] . "%"]);
$ticketIdList = RedBean::getAll($queryWithOrder, [':query' => "%" . $inputs['query'] . "%", ':query2' => $inputs['query'] . "%"]);
$ticketList = []; $ticketList = [];
foreach ($ticketIdList as $item) { foreach ($ticketIdList as $item) {
$ticket = Ticket::getDataStore($item['id']); $ticket = Ticket::getDataStore($item['id']);
@ -411,7 +410,7 @@ class SearchController extends Controller {
if($querysearch !== null){ if($querysearch !== null){
$ticketeventOrder = ( $ticketEventTableExists ? " WHEN (ticketevent.content LIKE :query) THEN 5 " : ""); $ticketeventOrder = ( $ticketEventTableExists ? " WHEN (ticketevent.content LIKE :query) THEN 5 " : "");
$order .= "CASE WHEN (ticket.ticket_number LIKE :query) THEN 1 WHEN (ticket.title LIKE :query2) THEN 2 WHEN (ticket.title LIKE :query) THEN 3 WHEN ( ticket.content LIKE :query) THEN 4 " . $ticketeventOrder ."END asc, "; $order .= "CASE WHEN (ticket.ticket_number LIKE :query) THEN 1 WHEN (ticket.title LIKE :queryAtBeginning) THEN 2 WHEN (ticket.title LIKE :query) THEN 3 WHEN ( ticket.content LIKE :query) THEN 4 " . $ticketeventOrder ."END asc, ";
} }
} }

View File

@ -4,7 +4,7 @@ namespace CustomValidations;
use Respect\Validation\Rules\AbstractRule; use Respect\Validation\Rules\AbstractRule;
class ValidBlackList extends AbstractRule { class ValidAuthorsBlackList extends AbstractRule {
public function validate($blackList) { public function validate($blackList) {
if(is_array(json_decode($blackList))){ if(is_array(json_decode($blackList))){

View File

@ -73,5 +73,12 @@ describe '/ticket/get-authors/' do
(result['status']).should.equal('success') (result['status']).should.equal('success')
(result['data']['authors'].size).should.equal(1) (result['data']['authors'].size).should.equal(1)
(result['data']['authors'][0]['name']).should.equal('eemilia') (result['data']['authors'][0]['name']).should.equal('eemilia')
result = request('/ticket/get-authors', {
csrf_userid: $csrf_userid,
csrf_token: $csrf_token,
query: '',
})
(result['status']).should.equal('success')
end end
end end