using Fengling.Console.Models.Entities; using Microsoft.AspNetCore.Identity; namespace Fengling.Console.Stores; public interface ITenantStore : IDisposable where TTenant : class { Task FindByIdAsync(int 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(TTenant tenant, CancellationToken cancellationToken = default); Task UpdateAsync(TTenant tenant, CancellationToken cancellationToken = default); Task DeleteAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetUserCountAsync(int tenantId, CancellationToken cancellationToken = default); Task GetTenantCodeAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetNameAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetContactNameAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetContactEmailAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetContactPhoneAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetMaxUsersAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetDescriptionAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetStatusAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetExpiresAtAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetCreatedAtAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetUpdatedAtAsync(TTenant tenant, CancellationToken cancellationToken = default); Task GetIsDeletedAsync(TTenant tenant, CancellationToken cancellationToken = default); Task SetTenantCodeAsync(TTenant tenant, string code, CancellationToken cancellationToken = default); Task SetNameAsync(TTenant tenant, string name, CancellationToken cancellationToken = default); Task SetContactNameAsync(TTenant tenant, string name, CancellationToken cancellationToken = default); Task SetContactEmailAsync(TTenant tenant, string email, CancellationToken cancellationToken = default); Task SetContactPhoneAsync(TTenant tenant, string? phone, CancellationToken cancellationToken = default); Task SetMaxUsersAsync(TTenant tenant, int? maxUsers, CancellationToken cancellationToken = default); Task SetDescriptionAsync(TTenant tenant, string? description, CancellationToken cancellationToken = default); Task SetStatusAsync(TTenant tenant, TenantStatus status, CancellationToken cancellationToken = default); Task SetExpiresAtAsync(TTenant tenant, DateTime? expiresAt, CancellationToken cancellationToken = default); Task SetIsDeletedAsync(TTenant tenant, bool isDeleted, CancellationToken cancellationToken = default); }