using IdokladSdk.Models.ReceivedInvoice;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// Received (incoming) invoices agenda.
public sealed class ReceivedInvoicesService
{
private readonly IdokladApiAccessor _accessor;
public ReceivedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor;
public Task> ListAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
=> _accessor.Api.ReceivedInvoiceClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
public async Task DetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task DefaultAsync(CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task CreateAsync(ReceivedInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task UpdateAsync(ReceivedInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task DeleteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.DeleteAsync(id, ct)).Unwrap();
}