using RestSharp; using Store.Management.Api.Models; using Store.Management.Api.Transport; namespace Store.Management.Api.Users; public sealed class UserApi(ApiTransport transport) { public Task> SearchAsync(UserSearchRequest request, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(request); return transport.GetRequiredAsync>("user/GetAllUser", Method.Post, request, cancellationToken: cancellationToken); } public Task GetAsync(string? userName = null, CancellationToken cancellationToken = default) => transport.GetRequiredAsync("user/GetUser", Method.Post, query: new Dictionary { ["userName"] = userName }, cancellationToken: cancellationToken); public Task CreateAsync(UserCreateRequest request, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(request); return transport.GetRequiredAsync("user/AddUser", Method.Post, request, cancellationToken: cancellationToken); } public Task DeleteAsync(int id, CancellationToken cancellationToken = default) { ArgumentOutOfRangeException.ThrowIfNegativeOrZero(id); return transport.SendAsync("user/DelUser", Method.Post, query: new Dictionary { ["id"] = id.ToString(System.Globalization.CultureInfo.InvariantCulture) }, cancellationToken: cancellationToken); } public Task UpdateAsync(UserUpdateRequest request, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(request); return transport.GetRequiredAsync("user/UpdateUser", Method.Post, request, cancellationToken: cancellationToken); } }