From 482df9d94d21ed27f338b01426f2f87bec720105 Mon Sep 17 00:00:00 2001 From: Catherine Renelle <32781029+catrenelle@users.noreply.github.com> Date: Tue, 10 Feb 2026 22:32:29 -0500 Subject: [PATCH] Fix case-sensitive transaction search on PostgreSQL PayeeName and SearchText filters used Contains() which translates to case-sensitive LIKE in PostgreSQL. Switch to EF.Functions.ILike for case-insensitive matching so searching for "frantech" finds "Buyvm Frantech" and "vultr" finds "Vultr.com". Co-Authored-By: Claude Opus 4.6 --- src/Purrse.Api/Services/TransactionService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Purrse.Api/Services/TransactionService.cs b/src/Purrse.Api/Services/TransactionService.cs index d90ab6f..c951fe5 100644 --- a/src/Purrse.Api/Services/TransactionService.cs +++ b/src/Purrse.Api/Services/TransactionService.cs @@ -158,12 +158,12 @@ public class TransactionService : ITransactionService if (request.Status.HasValue) query = query.Where(t => t.Status == request.Status.Value); if (!string.IsNullOrEmpty(request.PayeeName)) - query = query.Where(t => t.PayeeName != null && t.PayeeName.Contains(request.PayeeName)); + query = query.Where(t => t.PayeeName != null && EF.Functions.ILike(t.PayeeName, $"%{request.PayeeName}%")); if (!string.IsNullOrEmpty(request.SearchText)) query = query.Where(t => - (t.PayeeName != null && t.PayeeName.Contains(request.SearchText)) || - (t.Memo != null && t.Memo.Contains(request.SearchText)) || - (t.ReferenceNumber != null && t.ReferenceNumber.Contains(request.SearchText))); + (t.PayeeName != null && EF.Functions.ILike(t.PayeeName, $"%{request.SearchText}%")) || + (t.Memo != null && EF.Functions.ILike(t.Memo, $"%{request.SearchText}%")) || + (t.ReferenceNumber != null && EF.Functions.ILike(t.ReferenceNumber, $"%{request.SearchText}%"))); query = query.OrderByDescending(t => t.Date).ThenByDescending(t => t.CreatedAt);