namespace Fengling.Platform.Infrastructure; using Fengling.Platform.Domain.AggregatesModel.TenantAggregate; using Microsoft.AspNetCore.Identity; public interface ITenantManager { Task FindByIdAsync(long tenantId, CancellationToken cancellationToken = default); Task FindByTenantCodeAsync(string tenantCode, CancellationToken cancellationToken = default); Task> GetAllAsync(CancellationToken cancellationToken = default); Task> GetPagedAsync(int page, int pageSize, string? name = null, string? tenantCode = null, TenantStatus? status = null, CancellationToken cancellationToken = default); Task GetCountAsync(string? name = null, string? tenantCode = null, TenantStatus? status = null, CancellationToken cancellationToken = default); Task CreateAsync(Tenant tenant, CancellationToken cancellationToken = default); Task UpdateAsync(Tenant tenant, CancellationToken cancellationToken = default); Task DeleteAsync(Tenant tenant, CancellationToken cancellationToken = default); Task GetUserCountAsync(long tenantId, CancellationToken cancellationToken = default); Task SetTenantCodeAsync(Tenant tenant, string code, CancellationToken cancellationToken = default); } public sealed class TenantManager(ITenantStore store) : ITenantManager { public async Task FindByIdAsync(long tenantId, CancellationToken cancellationToken = default) { return await store.FindByIdAsync(tenantId, cancellationToken); } public async Task FindByTenantCodeAsync(string tenantCode, CancellationToken cancellationToken = default) { return await store.FindByTenantCodeAsync(tenantCode, cancellationToken); } public async Task> GetAllAsync(CancellationToken cancellationToken = default) { return await store.GetAllAsync(cancellationToken); } public async Task> GetPagedAsync(int page, int pageSize, string? name = null, string? tenantCode = null, TenantStatus? status = null, CancellationToken cancellationToken = default) { return await store.GetPagedAsync(page, pageSize, name, tenantCode, status, cancellationToken); } public async Task GetCountAsync(string? name = null, string? tenantCode = null, TenantStatus? status = null, CancellationToken cancellationToken = default) { return await store.GetCountAsync(name, tenantCode, status, cancellationToken); } public async Task CreateAsync(Tenant tenant, CancellationToken cancellationToken = default) { return await store.CreateAsync(tenant, cancellationToken); } public async Task UpdateAsync(Tenant tenant, CancellationToken cancellationToken = default) { return await store.UpdateAsync(tenant, cancellationToken); } public async Task DeleteAsync(Tenant tenant, CancellationToken cancellationToken = default) { return await store.DeleteAsync(tenant, cancellationToken); } public async Task GetUserCountAsync(long tenantId, CancellationToken cancellationToken = default) { return await store.GetUserCountAsync(tenantId, cancellationToken); } public async Task SetTenantCodeAsync(Tenant tenant, string code, CancellationToken cancellationToken = default) { await store.SetTenantCodeAsync(tenant, code, cancellationToken); return IdentityResult.Success; } }