fix(admin): filter template keys by substring

Match both channels case-insensitively while keeping API and delivery lookups exact.

Ref: IT-1627
This commit is contained in:
2026-10-31 10:14:48 +02:00
parent 343d67802c
commit ed4293d852
4 changed files with 48 additions and 4 deletions
@@ -27,10 +27,11 @@ public sealed class AdminTemplatesController(IMediator mediator, IEmailTemplateD
ModelState.AddModelError("", previousError);
try
{
var filter = key?.Trim() ?? "";
model.PushDefinitions = (await pushes.GetDefinitionsAsync(serviceId, ct))
.Where(d => string.IsNullOrWhiteSpace(key) || d.Key == key).ToList();
model.Definitions = (await definitions.GetDefinitionsAsync(service.Name, key, ct))
.Where(d => d.ServiceId == serviceId).ToList();
.Where(d => d.Key.Contains(filter, StringComparison.OrdinalIgnoreCase)).ToList();
model.Definitions = (await definitions.GetDefinitionsAsync(serviceId, ct))
.Where(d => d.Key.Contains(filter, StringComparison.OrdinalIgnoreCase)).ToList();
}
catch (Exception error) when (error is not OperationCanceledException)
{
@@ -34,7 +34,7 @@
<form method="get" action="/admin/services/@serviceId" class="template-key-filter">
<label for="key" class="form-label fw-semibold">Template Key</label>
<div class="template-key-filter-controls">
<input id="key" name="key" value="@keyFilter" class="form-control form-control-sm" placeholder="Filter by key" />
<input id="key" name="key" value="@keyFilter" class="form-control form-control-sm" placeholder="Filter by part of key" />
<button type="submit" class="btn btn-primary btn-sm">Filter</button>
<a href="/admin/services/@serviceId" class="btn btn-outline-secondary btn-sm">Clear</a>
</div>