fix: add optional search parameter to GET invoices

This commit is contained in:
javiermengual 2026-01-29 13:26:54 +01:00
parent 8c781308e7
commit 161696269d
2 changed files with 14 additions and 5 deletions

View File

@ -26,9 +26,10 @@ public class InvoicesController : ControllerBase
public async Task<ActionResult<List<InvoiceDto>>> GetInvoices(
[FromQuery] int limit = 50,
[FromQuery] [Range(1, int.MaxValue)] int page = 1,
[FromQuery] string? status = null)
[FromQuery] string? status = null,
[FromQuery] [StringLength(100)] string? search = null)
{
var invoices = await _invoiceService.GetInvoicesAsync(limit, page, status);
var invoices = await _invoiceService.GetInvoicesAsync(limit, page, status, search);
return Ok(invoices);
}
@ -76,4 +77,4 @@ public class InvoicesController : ControllerBase
var result = await _invoiceService.AddInvoiceLineAsync(id, lineDto);
return CreatedAtAction(nameof(GetInvoice), new { id }, result);
}
}
}

View File

@ -19,7 +19,8 @@ public class InvoiceService(IDolibarrApiClient apiClient)
public async Task<List<InvoiceDto>> GetInvoicesAsync(
int limit = 50,
int page = 1,
string? status = null)
string? status = null,
string? search = null)
{
// empieza por 1 para el frontend
var endpoint = $"invoices?limit={limit}&page={page - 1}";
@ -29,6 +30,13 @@ public class InvoiceService(IDolibarrApiClient apiClient)
endpoint += $"&status={status}";
}
if (!string.IsNullOrWhiteSpace(search))
{
search=search.Trim().ToUpperInvariant();
var filter = $"(t.ref:like:'{search}%')";
endpoint += $"&sqlfilters={Uri.EscapeDataString(filter)}";
}
var dataList = await apiClient.GetCollectionAsync<InvoiceResponse>(endpoint);
return dataList.Select(InvoiceMapper.MapToInvoiceDto).ToList();
}
@ -94,4 +102,4 @@ public class InvoiceService(IDolibarrApiClient apiClient)
await apiClient.PutAsync($"invoices/{id}", current);
}
}
}