more flex and filters
This commit is contained in:
@@ -11,8 +11,8 @@ public sealed class ContactsService
|
||||
|
||||
public ContactsService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
public async Task<Page<ContactListGetModel>> ListAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.ContactClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<ContactListGetModel>> ListAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
|
||||
=> _accessor.Api.ContactClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
|
||||
|
||||
public async Task<ContactGetModel> DetailAsync(int id, CancellationToken ct)
|
||||
=> (await _accessor.Api.ContactClient.Detail(id).GetAsync(ct)).Unwrap();
|
||||
|
||||
@@ -11,8 +11,8 @@ public sealed class IssuedInvoicesService
|
||||
|
||||
public IssuedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
public async Task<Page<IssuedInvoiceListGetModel>> ListAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.IssuedInvoiceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<IssuedInvoiceListGetModel>> ListAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
|
||||
=> _accessor.Api.IssuedInvoiceClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
|
||||
|
||||
public async Task<IssuedInvoiceGetModel> DetailAsync(int id, CancellationToken ct)
|
||||
=> (await _accessor.Api.IssuedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using IdokladSdk.Models.Email;
|
||||
using Idoklad.Client;
|
||||
|
||||
namespace Idoklad.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Sends document e-mails (invoice, proforma, credit note, received invoice, reminders) through
|
||||
/// the iDoklad MailClient. The settings carry the document id, recipients and options.
|
||||
/// </summary>
|
||||
public sealed class MailService
|
||||
{
|
||||
private readonly IdokladApiAccessor _accessor;
|
||||
|
||||
public MailService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
public async Task<EmailSendResult> SendIssuedInvoiceAsync(IssuedInvoiceEmailSettings settings, CancellationToken ct)
|
||||
=> (await _accessor.Api.MailClient.IssuedInvoiceEmail.SendAsync(settings, ct)).Unwrap();
|
||||
|
||||
public async Task<EmailSendResult> SendProformaInvoiceAsync(ProformaInvoiceEmailSettings settings, CancellationToken ct)
|
||||
=> (await _accessor.Api.MailClient.ProformaInvoiceEmail.SendAsync(settings, ct)).Unwrap();
|
||||
|
||||
public async Task<EmailSendResult> SendCreditNoteAsync(CreditNoteEmailSettings settings, CancellationToken ct)
|
||||
=> (await _accessor.Api.MailClient.CreditNoteEmail.SendAsync(settings, ct)).Unwrap();
|
||||
|
||||
public async Task<EmailSendResult> SendReceivedInvoiceAsync(ReceivedInvoiceEmailSettings settings, CancellationToken ct)
|
||||
=> (await _accessor.Api.MailClient.ReceivedInvoiceEmail.SendAsync(settings, ct)).Unwrap();
|
||||
|
||||
public async Task<EmailSendResult> SendRemindersAsync(RemindersEmailSettings settings, CancellationToken ct)
|
||||
=> (await _accessor.Api.MailClient.RemindersEmail.SendAsync(settings, ct)).Unwrap();
|
||||
}
|
||||
@@ -11,8 +11,8 @@ public sealed class ReceivedInvoicesService
|
||||
|
||||
public ReceivedInvoicesService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
public async Task<Page<ReceivedInvoiceListGetModel>> ListAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.ReceivedInvoiceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<ReceivedInvoiceListGetModel>> 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<ReceivedInvoiceGetModel> DetailAsync(int id, CancellationToken ct)
|
||||
=> (await _accessor.Api.ReceivedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
|
||||
|
||||
@@ -16,8 +16,8 @@ public sealed class RegistersService
|
||||
public RegistersService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
// Bank accounts
|
||||
public async Task<Page<BankAccountListGetModel>> ListBankAccountsAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.BankAccountClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<BankAccountListGetModel>> ListBankAccountsAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
|
||||
=> _accessor.Api.BankAccountClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
|
||||
|
||||
public async Task<BankAccountGetModel> BankAccountDetailAsync(int id, CancellationToken ct)
|
||||
=> (await _accessor.Api.BankAccountClient.Detail(id).GetAsync(ct)).Unwrap();
|
||||
@@ -32,13 +32,13 @@ public sealed class RegistersService
|
||||
=> (await _accessor.Api.BankAccountClient.DeleteAsync(id, ct)).Unwrap();
|
||||
|
||||
// VAT rates (read-only)
|
||||
public async Task<Page<VatRateListGetModel>> ListVatRatesAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.VatRateClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<VatRateListGetModel>> ListVatRatesAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
|
||||
=> _accessor.Api.VatRateClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
|
||||
|
||||
public async Task<VatRateGetModel> VatRateDetailAsync(int id, CancellationToken ct)
|
||||
=> (await _accessor.Api.VatRateClient.Detail(id).GetAsync(ct)).Unwrap();
|
||||
|
||||
// Numeric sequences (read-only list)
|
||||
public async Task<Page<NumericSequenceGetModel>> ListNumericSequencesAsync(int page, int pageSize, CancellationToken ct)
|
||||
=> (await _accessor.Api.NumericSequenceClient.List().Page(page).PageSize(pageSize).GetAsync(ct)).Unwrap();
|
||||
public Task<Page<NumericSequenceGetModel>> ListNumericSequencesAsync(int page, int pageSize, string? filter, string? filterType, string? sort, CancellationToken ct)
|
||||
=> _accessor.Api.NumericSequenceClient.List().GetPageAsync(page, pageSize, filter, filterType, sort, ct);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
using IdokladSdk.Enums;
|
||||
using IdokladSdk.Models.Report;
|
||||
using Idoklad.Client;
|
||||
|
||||
namespace Idoklad.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Document PDF exports (iDoklad Reports). Each method returns the report as a Base64-encoded
|
||||
/// string — the iDoklad API's native representation; decode it to obtain the raw PDF bytes.
|
||||
/// </summary>
|
||||
public sealed class ReportsService
|
||||
{
|
||||
private readonly IdokladApiAccessor _accessor;
|
||||
|
||||
public ReportsService(IdokladApiAccessor accessor) => _accessor = accessor;
|
||||
|
||||
/// <summary>Export an issued invoice as a Base64-encoded PDF.</summary>
|
||||
public async Task<string> IssuedInvoicePdfAsync(int id, Language? language, bool compressed, CancellationToken ct)
|
||||
=> (await _accessor.Api.ReportClient.IssuedInvoice.Detail(id).GetAsync(Option(language, compressed), ct)).Unwrap();
|
||||
|
||||
/// <summary>Export a proforma (advance) invoice as a Base64-encoded PDF.</summary>
|
||||
public async Task<string> ProformaInvoicePdfAsync(int id, Language? language, bool compressed, CancellationToken ct)
|
||||
=> (await _accessor.Api.ReportClient.ProformaInvoice.Detail(id).GetAsync(Option(language, compressed), ct)).Unwrap();
|
||||
|
||||
/// <summary>Export a credit note as a Base64-encoded PDF.</summary>
|
||||
public async Task<string> CreditNotePdfAsync(int id, Language? language, bool compressed, CancellationToken ct)
|
||||
=> (await _accessor.Api.ReportClient.CreditNote.Detail(id).GetAsync(Option(language, compressed), ct)).Unwrap();
|
||||
|
||||
private static ExtendedReportOption Option(Language? language, bool compressed)
|
||||
=> new() { Language = language, Compressed = compressed };
|
||||
}
|
||||
Reference in New Issue
Block a user