refactoring of site groups

This commit is contained in:
sbwalker
2026-02-09 13:58:38 -05:00
parent c0e191537f
commit ddd6dfc475
26 changed files with 789 additions and 886 deletions

View File

@@ -134,7 +134,7 @@ namespace Oqtane.Repository
public virtual DbSet<SearchContentWord> SearchContentWord { get; set; }
public virtual DbSet<SearchWord> SearchWord { get; set; }
public virtual DbSet<MigrationHistory> MigrationHistory { get; set; }
public virtual DbSet<SiteGroupDefinition> SiteGroupDefinition { get; set; }
public virtual DbSet<SiteGroup> SiteGroup { get; set; }
public virtual DbSet<SiteGroupMember> SiteGroupMember { get; set; }
}
}

View File

@@ -1,75 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface ISiteGroupDefinitionRepository
{
IEnumerable<SiteGroupDefinition> GetSiteGroupDefinitions();
SiteGroupDefinition AddSiteGroupDefinition(SiteGroupDefinition siteGroupDefinition);
SiteGroupDefinition UpdateSiteGroupDefinition(SiteGroupDefinition siteGroupDefinition);
SiteGroupDefinition GetSiteGroupDefinition(int siteGroupDefinitionId);
SiteGroupDefinition GetSiteGroupDefinition(int siteGroupDefinitionId, bool tracking);
void DeleteSiteGroupDefinition(int siteGroupDefinitionId);
}
public class SiteGroupDefinitionRepository : ISiteGroupDefinitionRepository
{
private readonly IDbContextFactory<TenantDBContext> _dbContextFactory;
public SiteGroupDefinitionRepository(IDbContextFactory<TenantDBContext> dbContextFactory)
{
_dbContextFactory = dbContextFactory;
}
public IEnumerable<SiteGroupDefinition> GetSiteGroupDefinitions()
{
using var db = _dbContextFactory.CreateDbContext();
return db.SiteGroupDefinition.ToList();
}
public SiteGroupDefinition AddSiteGroupDefinition(SiteGroupDefinition siteGroupDefinition)
{
using var db = _dbContextFactory.CreateDbContext();
db.SiteGroupDefinition.Add(siteGroupDefinition);
db.SaveChanges();
return siteGroupDefinition;
}
public SiteGroupDefinition UpdateSiteGroupDefinition(SiteGroupDefinition siteGroupDefinition)
{
using var db = _dbContextFactory.CreateDbContext();
db.Entry(siteGroupDefinition).State = EntityState.Modified;
db.SaveChanges();
return siteGroupDefinition;
}
public SiteGroupDefinition GetSiteGroupDefinition(int siteGroupDefinitionId)
{
return GetSiteGroupDefinition(siteGroupDefinitionId, true);
}
public SiteGroupDefinition GetSiteGroupDefinition(int siteGroupDefinitionId, bool tracking)
{
using var db = _dbContextFactory.CreateDbContext();
if (tracking)
{
return db.SiteGroupDefinition.FirstOrDefault(item => item.SiteGroupDefinitionId == siteGroupDefinitionId);
}
else
{
return db.SiteGroupDefinition.AsNoTracking().FirstOrDefault(item => item.SiteGroupDefinitionId == siteGroupDefinitionId);
}
}
public void DeleteSiteGroupDefinition(int siteGroupDefinitionId)
{
using var db = _dbContextFactory.CreateDbContext();
SiteGroupDefinition group = db.SiteGroupDefinition.Find(siteGroupDefinitionId);
db.SiteGroupDefinition.Remove(group);
db.SaveChanges();
}
}
}

View File

@@ -0,0 +1,88 @@
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface ISiteGroupMemberRepository
{
IEnumerable<SiteGroupMember> GetSiteGroupMembers();
IEnumerable<SiteGroupMember> GetSiteGroupMembers(int siteId, int siteGroupId);
SiteGroupMember AddSiteGroupMember(SiteGroupMember siteGroupMember);
SiteGroupMember UpdateSiteGroupMember(SiteGroupMember siteGroupMember);
SiteGroupMember GetSiteGroupMember(int siteGroupMemberId);
SiteGroupMember GetSiteGroupMember(int siteGroupMemberId, bool tracking);
void DeleteSiteGroupMember(int siteGroupMemberId);
}
public class SiteGroupMemberRepository : ISiteGroupMemberRepository
{
private readonly IDbContextFactory<TenantDBContext> _dbContextFactory;
public SiteGroupMemberRepository(IDbContextFactory<TenantDBContext> dbContextFactory)
{
_dbContextFactory = dbContextFactory;
}
public IEnumerable<SiteGroupMember> GetSiteGroupMembers()
{
return GetSiteGroupMembers(-1, -1);
}
public IEnumerable<SiteGroupMember> GetSiteGroupMembers(int siteId, int siteGroupId)
{
using var db = _dbContextFactory.CreateDbContext();
return db.SiteGroupMember
.Where(item => (siteId == -1 || item.SiteId == siteId) && (siteGroupId == -1 || item.SiteGroupId == siteGroupId))
.Include(item => item.SiteGroup) // eager load
.ToList();
}
public SiteGroupMember AddSiteGroupMember(SiteGroupMember siteGroupMember)
{
using var db = _dbContextFactory.CreateDbContext();
db.SiteGroupMember.Add(siteGroupMember);
db.SaveChanges();
return siteGroupMember;
}
public SiteGroupMember UpdateSiteGroupMember(SiteGroupMember siteGroupMember)
{
using var db = _dbContextFactory.CreateDbContext();
db.Entry(siteGroupMember).State = EntityState.Modified;
db.SaveChanges();
return siteGroupMember;
}
public SiteGroupMember GetSiteGroupMember(int siteGroupMemberId)
{
return GetSiteGroupMember(siteGroupMemberId, true);
}
public SiteGroupMember GetSiteGroupMember(int siteGroupMemberId, bool tracking)
{
using var db = _dbContextFactory.CreateDbContext();
if (tracking)
{
return db.SiteGroupMember
.Include(item => item.SiteGroup) // eager load
.FirstOrDefault(item => item.SiteGroupMemberId == siteGroupMemberId);
}
else
{
return db.SiteGroupMember.AsNoTracking()
.Include(item => item.SiteGroup) // eager load
.FirstOrDefault(item => item.SiteGroupMemberId == siteGroupMemberId);
}
}
public void DeleteSiteGroupMember(int siteGroupMemberId)
{
using var db = _dbContextFactory.CreateDbContext();
SiteGroupMember SiteGroupMember = db.SiteGroupMember.Find(siteGroupMemberId);
db.SiteGroupMember.Remove(SiteGroupMember);
db.SaveChanges();
}
}
}

View File

@@ -8,12 +8,11 @@ namespace Oqtane.Repository
public interface ISiteGroupRepository
{
IEnumerable<SiteGroup> GetSiteGroups();
IEnumerable<SiteGroup> GetSiteGroups(int siteId, int siteGroupDefinitionId);
SiteGroup AddSiteGroup(SiteGroup siteGroup);
SiteGroup UpdateSiteGroup(SiteGroup siteGroup);
SiteGroup GetSiteGroup(int siteSiteGroupId);
SiteGroup GetSiteGroup(int siteSiteGroupId, bool tracking);
void DeleteSiteGroup(int siteSiteGroupId);
SiteGroup GetSiteGroup(int siteGroupId);
SiteGroup GetSiteGroup(int siteGroupId, bool tracking);
void DeleteSiteGroup(int siteGroupId);
}
public class SiteGroupRepository : ISiteGroupRepository
@@ -24,64 +23,52 @@ namespace Oqtane.Repository
{
_dbContextFactory = dbContextFactory;
}
public IEnumerable<SiteGroup> GetSiteGroups()
{
return GetSiteGroups(-1, -1);
using var db = _dbContextFactory.CreateDbContext();
return db.SiteGroup.ToList();
}
public IEnumerable<SiteGroup> GetSiteGroups(int siteId, int siteGroupDefinitionId)
public SiteGroup AddSiteGroup(SiteGroup siteGroup)
{
using var db = _dbContextFactory.CreateDbContext();
return db.SiteGroup
.Where(item => (siteId == -1 || item.SiteId == siteId) && (siteGroupDefinitionId == -1 || item.SiteGroupDefinitionId == siteGroupDefinitionId))
.Include(item => item.SiteGroupDefinition) // eager load
.ToList();
}
public SiteGroup AddSiteGroup(SiteGroup SiteGroup)
{
using var db = _dbContextFactory.CreateDbContext();
db.SiteGroup.Add(SiteGroup);
db.SiteGroup.Add(siteGroup);
db.SaveChanges();
return SiteGroup;
return siteGroup;
}
public SiteGroup UpdateSiteGroup(SiteGroup SiteGroup)
public SiteGroup UpdateSiteGroup(SiteGroup siteGroup)
{
using var db = _dbContextFactory.CreateDbContext();
db.Entry(SiteGroup).State = EntityState.Modified;
db.Entry(siteGroup).State = EntityState.Modified;
db.SaveChanges();
return SiteGroup;
return siteGroup;
}
public SiteGroup GetSiteGroup(int SiteGroupId)
public SiteGroup GetSiteGroup(int siteGroupId)
{
return GetSiteGroup(SiteGroupId, true);
return GetSiteGroup(siteGroupId, true);
}
public SiteGroup GetSiteGroup(int SiteGroupId, bool tracking)
public SiteGroup GetSiteGroup(int siteGroupId, bool tracking)
{
using var db = _dbContextFactory.CreateDbContext();
if (tracking)
{
return db.SiteGroup
.Include(item => item.SiteGroupDefinition) // eager load
.FirstOrDefault(item => item.SiteGroupId == SiteGroupId);
return db.SiteGroup.FirstOrDefault(item => item.SiteGroupId == siteGroupId);
}
else
{
return db.SiteGroup.AsNoTracking()
.Include(item => item.SiteGroupDefinition) // eager load
.FirstOrDefault(item => item.SiteGroupId == SiteGroupId);
return db.SiteGroup.AsNoTracking().FirstOrDefault(item => item.SiteGroupId == siteGroupId);
}
}
public void DeleteSiteGroup(int SiteGroupId)
public void DeleteSiteGroup(int siteGroupId)
{
using var db = _dbContextFactory.CreateDbContext();
SiteGroup SiteGroup = db.SiteGroup.Find(SiteGroupId);
db.SiteGroup.Remove(SiteGroup);
SiteGroup group = db.SiteGroup.Find(siteGroupId);
db.SiteGroup.Remove(group);
db.SaveChanges();
}
}