Backend/e-suite.Modules.DomainManager/e-suite.Modules.DomainManager/Repository/DomainRepository.cs

62 lines
2.3 KiB
C#

using e_suite.API.Common.repository;
using e_suite.Database.Audit;
using e_suite.Database.Core;
using e_suite.Database.Core.Extensions;
using e_suite.Database.Core.Tables.Domain;
using eSuite.Core.Miscellaneous;
using Microsoft.EntityFrameworkCore;
namespace e_suite.Modules.DomainManager.Repository;
public class DomainRepository : RepositoryBase, IDomainRepository
{
public DomainRepository(IEsuiteDatabaseDbContext databaseDbContext) : base(databaseDbContext)
{
}
public IQueryable<Domain> GetDomains()
{
return DatabaseDbContext.Domains.Where(x => !x.Deleted);
}
public async Task<Domain?> GetDomainById(IGeneralIdRef generalIdRef, CancellationToken cancellationToken)
{
return await DatabaseDbContext.Domains
.Include(nameof(Domain.SsoProvider))
.FindByGeneralIdRefAsync(generalIdRef, cancellationToken);
}
public async Task<Domain?> GetDomainByName(string domainName, CancellationToken cancellationToken)
{
return await DatabaseDbContext.Domains.SingleOrDefaultAsync(x => x.Name == domainName, cancellationToken);
}
public async Task EditDomainAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken)
{
DatabaseDbContext.Domains.Update(domain);
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
}
public async Task CreateDomainAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken)
{
await DatabaseDbContext.Domains.AddAsync(domain, cancellationToken);
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
}
public async Task AddAdministratorRoleAsync(AuditUserDetails auditUserDetails, Domain domain, CancellationToken cancellationToken)
{
var administratorRole = new Role
{
Name = "Administrators",
Domain = domain,
IsSuperUser = false,
IsAdministrator = true,
CanDelete = false,
Deleted = false,
Guid = Guid.NewGuid(),
};
await DatabaseDbContext.Roles.AddAsync(administratorRole, cancellationToken);
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
}
}