cc nasazeni

This commit is contained in:
JiriUhlir
2026-06-12 13:18:35 +02:00
parent bbec747bb7
commit 1801d02e5c
89 changed files with 3541 additions and 16 deletions
+18
View File
@@ -0,0 +1,18 @@
using IdokladSdk.Models.Account;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>Account agenda: information about the current agenda and the current user.</summary>
public sealed class AccountService
{
private readonly IdokladApiAccessor _accessor;
public AccountService(IdokladApiAccessor accessor) => _accessor = accessor;
public async Task<AgendaGetModel> CurrentAgendaAsync(CancellationToken ct)
=> (await _accessor.Api.AccountClient.Agendas.Current().GetAsync(ct)).Unwrap();
public async Task<UserGetModel> CurrentUserAsync(CancellationToken ct)
=> (await _accessor.Api.AccountClient.Users.Current().GetAsync(ct)).Unwrap();
}
+31
View File
@@ -0,0 +1,31 @@
using IdokladSdk.Models.Contact;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>Contacts (customers/suppliers) agenda.</summary>
public sealed class ContactsService
{
private readonly IdokladApiAccessor _accessor;
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 async Task<ContactGetModel> DetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ContactClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task<ContactPostModel> DefaultAsync(CancellationToken ct)
=> (await _accessor.Api.ContactClient.DefaultAsync(ct)).Unwrap();
public async Task<ContactGetModel> CreateAsync(ContactPostModel model, CancellationToken ct)
=> (await _accessor.Api.ContactClient.PostAsync(model, ct)).Unwrap();
public async Task<ContactGetModel> UpdateAsync(ContactPatchModel model, CancellationToken ct)
=> (await _accessor.Api.ContactClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ContactClient.DeleteAsync(id, ct)).Unwrap();
}
+34
View File
@@ -0,0 +1,34 @@
using IdokladSdk.Models.IssuedInvoice;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>Issued (outgoing) invoices agenda.</summary>
public sealed class IssuedInvoicesService
{
private readonly IdokladApiAccessor _accessor;
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 async Task<IssuedInvoiceGetModel> DetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task<IssuedInvoiceDefaultGetModel> DefaultAsync(CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task<IssuedInvoiceGetModel> CreateAsync(IssuedInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task<IssuedInvoiceGetModel> UpdateAsync(IssuedInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task<IssuedInvoiceCopyGetModel> CopyAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.CopyAsync(id, ct)).Unwrap();
public async Task<bool> DeleteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.IssuedInvoiceClient.DeleteAsync(id, ct)).Unwrap();
}
+31
View File
@@ -0,0 +1,31 @@
using IdokladSdk.Models.ReceivedInvoice;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>Received (incoming) invoices agenda.</summary>
public sealed class ReceivedInvoicesService
{
private readonly IdokladApiAccessor _accessor;
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 async Task<ReceivedInvoiceGetModel> DetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task<ReceivedInvoiceDefaultGetModel> DefaultAsync(CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.DefaultAsync(ct)).Unwrap();
public async Task<ReceivedInvoiceGetModel> CreateAsync(ReceivedInvoicePostModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.PostAsync(model, ct)).Unwrap();
public async Task<ReceivedInvoiceGetModel> UpdateAsync(ReceivedInvoicePatchModel model, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteAsync(int id, CancellationToken ct)
=> (await _accessor.Api.ReceivedInvoiceClient.DeleteAsync(id, ct)).Unwrap();
}
+44
View File
@@ -0,0 +1,44 @@
using IdokladSdk.Models.BankAccount;
using IdokladSdk.Models.NumericSequence;
using IdokladSdk.Models.ReadOnly.VatRate;
using IdokladSdk.Response;
using Idoklad.Client;
namespace Idoklad.Services;
/// <summary>
/// Supporting registers: bank accounts, VAT rates and numeric (document) sequences.
/// </summary>
public sealed class RegistersService
{
private readonly IdokladApiAccessor _accessor;
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 async Task<BankAccountGetModel> BankAccountDetailAsync(int id, CancellationToken ct)
=> (await _accessor.Api.BankAccountClient.Detail(id).GetAsync(ct)).Unwrap();
public async Task<BankAccountGetModel> CreateBankAccountAsync(BankAccountPostModel model, CancellationToken ct)
=> (await _accessor.Api.BankAccountClient.PostAsync(model, ct)).Unwrap();
public async Task<BankAccountGetModel> UpdateBankAccountAsync(BankAccountPatchModel model, CancellationToken ct)
=> (await _accessor.Api.BankAccountClient.UpdateAsync(model, ct)).Unwrap();
public async Task<bool> DeleteBankAccountAsync(int id, CancellationToken ct)
=> (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 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();
}