shoc-backend/SeaHaven.DataServices/Interfaces/IAccountDataService.cs
Arthur Bassi 2718fdd294 fix(locations): gate account assignment by scope and active accounts
Reject soft-deleted accounts and stop account-scoped callers from assigning or stealing locations across tenants.
2026-08-26 14:16:59 -03:00

26 lines
1 KiB
C#

using Data.SeaHavenIndustries;
namespace SeaHaven.DataServices.Interfaces
{
public interface IAccountDataService
{
Task<Accounts?> GetByIdAsync(int id);
Task<Accounts?> GetByIdWithDetailsAsync(int id);
Task<IEnumerable<Accounts>> GetAllAsync();
Task<(IEnumerable<Accounts> Items, int TotalCount)> GetPagedAsync(int page, int pageSize, string? search = null);
Task<Accounts> AddAsync(Accounts account);
Task UpdateAsync(Accounts account);
Task DeleteAsync(int id);
Task<bool> ExistsAsync(int id);
Task<bool> ExistsActiveAsync(int id, CancellationToken cancellationToken = default);
Task<int> CountAsync();
/// <summary>
/// Returns the id when exactly one non-deleted account has this exact Name
/// (same rule as SH-221 backfill). Null when name is blank, zero matches, or ambiguous.
/// </summary>
Task<int?> TryGetUniqueActiveIdByExactNameAsync(
string? name,
CancellationToken cancellationToken = default);
}
}