From ba1685c6047fd19137f7fd840d9f7e9acd19449c Mon Sep 17 00:00:00 2001 From: Chris Thompson Date: Mon, 14 Oct 2024 21:38:42 +0000 Subject: [PATCH 1/2] =?UTF-8?q?Member=20search=20handles=20=C3=9E=20in=20n?= =?UTF-8?q?ame=20branch=20and=20email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/Controller/MembersController.php | 49 ++++++++++++++++++++---- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/app/src/Controller/MembersController.php b/app/src/Controller/MembersController.php index d26507f1..ae7b7098 100644 --- a/app/src/Controller/MembersController.php +++ b/app/src/Controller/MembersController.php @@ -80,13 +80,33 @@ public function index() ]); // if there is a search term, filter the query if ($search) { + //detect th and replace with Þ + $nsearch = $search; + if (preg_match("/th/", $search)) { + $nsearch = str_replace("th", "Þ", $search); + } + //detect Þ and replace with th + $usearch = $search; + if (preg_match("/Þ/", $search)) { + $usearch = str_replace("Þ", "th", $search); + } $query = $query->where([ "OR" => [ - "Members.sca_name LIKE" => "%" . $search . "%", - "Members.first_name LIKE" => "%" . $search . "%", - "Members.last_name LIKE" => "%" . $search . "%", - "Members.email_address LIKE" => "%" . $search . "%", - "Branches.name LIKE" => "%" . $search . "%", + ["Members.sca_name LIKE" => "%" . $search . "%"], + ["Members.sca_name LIKE" => "%" . $nsearch . "%"], + ["Members.sca_name LIKE" => "%" . $usearch . "%"], + ["Members.first_name LIKE" => "%" . $search . "%"], + ["Members.last_name LIKE" => "%" . $search . "%"], + ["Members.email_address LIKE" => "%" . $search . "%"], + ["Branches.name LIKE" => "%" . $search . "%"], + ["Members.first_name LIKE" => "%" . $nsearch . "%"], + ["Members.last_name LIKE" => "%" . $nsearch . "%"], + ["Members.email_address LIKE" => "%" . $nsearch . "%"], + ["Branches.name LIKE" => "%" . $nsearch . "%"], + ["Members.first_name LIKE" => "%" . $usearch . "%"], + ["Members.last_name LIKE" => "%" . $usearch . "%"], + ["Members.email_address LIKE" => "%" . $usearch . "%"], + ["Branches.name LIKE" => "%" . $usearch . "%"], ], ]); } @@ -620,12 +640,25 @@ public function editAdditionalInfo($id = null) public function searchMembers() { $q = $this->request->getQuery("q"); + //detect th and replace with Þ + $nq = $q; + if (preg_match("/th/", $q)) { + $nq = str_replace("th", "Þ", $q); + } + //detect Þ and replace with th + $uq = $q; + if (preg_match("/Þ/", $q)) { + $uq = str_replace("Þ", "th", $q); + } $this->Authorization->skipAuthorization(); $this->request->allowMethod(["get"]); $this->viewBuilder()->setClassName("Ajax"); $query = $this->Members ->find("all") - ->where(["sca_name LIKE" => "%$q%"]) + ->where([ + 'status <>' => Member::STATUS_DEACTIVATED, + 'OR' => [["sca_name LIKE" => "%$q%"], ["sca_name LIKE" => "%$nq%"], ["sca_name LIKE" => "%$uq%"]] + ]) ->select(["id", "sca_name"]) ->limit(10); //$query = $this->Authorization->applyScope($query); @@ -660,7 +693,7 @@ public function viewCardJson($id = null) if (!$member) { throw new \Cake\Http\Exception\NotFoundException(); } - if($member->title){ + if ($member->title) { $member->sca_name = $member->title . " " . $member->sca_name; } $this->Authorization->authorize($member); @@ -699,7 +732,7 @@ public function viewMobileCardJson($id = null) if (!$member) { throw new \Cake\Http\Exception\NotFoundException(); } - if($member->title){ + if ($member->title) { $member->sca_name = $member->title . " " . $member->sca_name; } $this->Authorization->skipAuthorization(); From c0ea1b73c35b4dfb954ead57963a51c696af914b Mon Sep 17 00:00:00 2001 From: Chris Thompson <=> Date: Wed, 16 Oct 2024 15:22:57 +0000 Subject: [PATCH 2/2] Handled Membership number in member search --- app/src/Controller/MembersController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/Controller/MembersController.php b/app/src/Controller/MembersController.php index ae7b7098..594827af 100644 --- a/app/src/Controller/MembersController.php +++ b/app/src/Controller/MembersController.php @@ -92,6 +92,8 @@ public function index() } $query = $query->where([ "OR" => [ + + ["Members.membership_number LIKE" => "%" . $search . "%"], ["Members.sca_name LIKE" => "%" . $search . "%"], ["Members.sca_name LIKE" => "%" . $nsearch . "%"], ["Members.sca_name LIKE" => "%" . $usearch . "%"], @@ -1275,4 +1277,4 @@ protected function _addRolesSelectAndContain(SelectQuery $q) ]); } #endregion -} \ No newline at end of file +}