diff --git a/DoliMiddlewareApi/Controllers/InvoicesController.cs b/DoliMiddlewareApi/Controllers/InvoicesController.cs index dabed58..b84f611 100644 --- a/DoliMiddlewareApi/Controllers/InvoicesController.cs +++ b/DoliMiddlewareApi/Controllers/InvoicesController.cs @@ -15,9 +15,12 @@ public class InvoicesController : ControllerBase } [HttpGet] - public async Task GetInvoices() + public async Task GetInvoices( + [FromQuery] int limit = 50, + [FromQuery] int page = 0, + [FromQuery] string? status = null) { - var invoices = await _dolibarrClient.GetInvoicesAsync(); + var invoices = await _dolibarrClient.GetInvoicesAsync(limit, page, status); return Ok(invoices); } @@ -27,4 +30,4 @@ public class InvoicesController : ControllerBase var invoice = await _dolibarrClient.GetInvoiceAsync(id); return Ok(invoice); } -} +} \ No newline at end of file diff --git a/DoliMiddlewareApi/Dtos/Enums/InvoiceStatus.cs b/DoliMiddlewareApi/Dtos/Enums/InvoiceStatus.cs deleted file mode 100644 index 4a5e6ab..0000000 --- a/DoliMiddlewareApi/Dtos/Enums/InvoiceStatus.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace DoliMiddlewareApi.Dtos.Enums; - -public enum InvoiceStatus -{ - Draft = 0, - Validated = 1, - Paid = 2, - Unknown = 3 -} - -public static class InvoiceStatusMapper -{ - public static InvoiceStatus FromDolibarrStatus(string status) - { - return status switch - { - "0" => InvoiceStatus.Draft, - "1" => InvoiceStatus.Validated, - "2" => InvoiceStatus.Paid, - _ => InvoiceStatus.Unknown - }; - } -} \ No newline at end of file diff --git a/DoliMiddlewareApi/Dtos/InvoiceDto.cs b/DoliMiddlewareApi/Dtos/InvoiceDto.cs index ece8bc5..d2cb2b5 100644 --- a/DoliMiddlewareApi/Dtos/InvoiceDto.cs +++ b/DoliMiddlewareApi/Dtos/InvoiceDto.cs @@ -1,5 +1,3 @@ -using DoliMiddlewareApi.Dtos.Enums; - namespace DoliMiddlewareApi.Dtos; public class InvoiceDto @@ -11,7 +9,7 @@ public class InvoiceDto public int ClientId { get; set; } public decimal? Total { get; set; } public decimal? RemainToPay { get; set; } - public InvoiceStatus Status { get; set; } + public string Status { get; set; } diff --git a/DoliMiddlewareApi/Services/DolibarrApiClient.cs b/DoliMiddlewareApi/Services/DolibarrApiClient.cs index 7440ca8..3d36477 100644 --- a/DoliMiddlewareApi/Services/DolibarrApiClient.cs +++ b/DoliMiddlewareApi/Services/DolibarrApiClient.cs @@ -2,7 +2,6 @@ using System.Globalization; using System.Net; using System.Net.Http.Json; using DoliMiddlewareApi.Dtos; -using DoliMiddlewareApi.Dtos.Enums; using DoliMiddlewareApi.Exceptions; namespace DoliMiddlewareApi.Services; @@ -23,9 +22,17 @@ public class DolibarrApiClient return MapToInvoiceDto(data); } - public async Task> GetInvoicesAsync() + public async Task> GetInvoicesAsync( + int limit = 50, + int page = 1, + string? status = null) { - var dataList = await GetListAsync("invoices"); + var endpoint = $"invoices?limit={limit}&page={page-1}"; + + if (!string.IsNullOrEmpty(status)) + endpoint += $"&status={status}"; + + var dataList = await GetListAsync(endpoint); return dataList.Select(MapToInvoiceDto).ToList(); } @@ -47,14 +54,16 @@ public class DolibarrApiClient ClientId = int.TryParse(invoiceResponse.socid, out int clientId) ? clientId : 0, - Total = decimal.TryParse(invoiceResponse.total_ttc, NumberStyles.Any, CultureInfo.InvariantCulture, out decimal total) + Total = decimal.TryParse(invoiceResponse.total_ttc, NumberStyles.Any, CultureInfo.InvariantCulture, + out decimal total) ? Math.Round(total, 2) : null, - RemainToPay = decimal.TryParse(invoiceResponse.remaintopay, NumberStyles.Any, CultureInfo.InvariantCulture, out decimal remain) + RemainToPay = decimal.TryParse(invoiceResponse.remaintopay, NumberStyles.Any, CultureInfo.InvariantCulture, + out decimal remain) ? Math.Round(remain, 2) : null, - Status = InvoiceStatusMapper.FromDolibarrStatus(invoiceResponse.statut ?? "0") + Status = invoiceResponse.statut ?? "unknown" }; }