Private
Public Access
1
0

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 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-10 22:32:29 -05:00
parent 04d21afc87
commit 482df9d94d
@@ -158,12 +158,12 @@ public class TransactionService : ITransactionService
if (request.Status.HasValue) if (request.Status.HasValue)
query = query.Where(t => t.Status == request.Status.Value); query = query.Where(t => t.Status == request.Status.Value);
if (!string.IsNullOrEmpty(request.PayeeName)) 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)) if (!string.IsNullOrEmpty(request.SearchText))
query = query.Where(t => query = query.Where(t =>
(t.PayeeName != null && t.PayeeName.Contains(request.SearchText)) || (t.PayeeName != null && EF.Functions.ILike(t.PayeeName, $"%{request.SearchText}%")) ||
(t.Memo != null && t.Memo.Contains(request.SearchText)) || (t.Memo != null && EF.Functions.ILike(t.Memo, $"%{request.SearchText}%")) ||
(t.ReferenceNumber != null && t.ReferenceNumber.Contains(request.SearchText))); (t.ReferenceNumber != null && EF.Functions.ILike(t.ReferenceNumber, $"%{request.SearchText}%")));
query = query.OrderByDescending(t => t.Date).ThenByDescending(t => t.CreatedAt); query = query.OrderByDescending(t => t.Date).ThenByDescending(t => t.CreatedAt);