using IdokladSdk.Models.IssuedInvoice;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// Issued (outgoing) invoices agenda.
public sealed class IssuedInvoicesService
{
private readonly IdokladApiAccessor _accessor;
public IssuedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor;
public async Task> ListAsync(int page, int pageSize, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
public async Task DetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task DefaultAsync(CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task CreateAsync(IssuedInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task UpdateAsync(IssuedInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task CopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.CopyAsync(id, ct)).Unwrap();
public async Task DeleteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.DeleteAsync(id, ct)).Unwrap();
}