using e_suite.Database.Audit;
using e_suite.Database.Core;
using e_suite.Database.Core.Tables.Domain;
using eSuite.Core.Miscellaneous;

namespace e_suite.API.Common.repository;

public interface IDomainRepository : IRepository
{
    IQueryable<Domain> GetDomains();
    Task<Domain?> GetDomainById(IGeneralIdRef generalIdRef, CancellationToken cancellationToken);
    Task<Domain?> GetDomainByName(string domainName, CancellationToken cancellationToken);
    Task EditDomainAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken);
    Task CreateDomainAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken);
    Task AddAdministratorRoleAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken);
}