Files
oqtane.framework/Oqtane.Server/Repository/SiteGroupRepository.cs
2026-02-09 13:58:38 -05:00

76 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface ISiteGroupRepository
{
IEnumerable<SiteGroup> GetSiteGroups();
SiteGroup AddSiteGroup(SiteGroup siteGroup);
SiteGroup UpdateSiteGroup(SiteGroup siteGroup);
SiteGroup GetSiteGroup(int siteGroupId);
SiteGroup GetSiteGroup(int siteGroupId, bool tracking);
void DeleteSiteGroup(int siteGroupId);
}
public class SiteGroupRepository : ISiteGroupRepository
{
private readonly IDbContextFactory<TenantDBContext> _dbContextFactory;
public SiteGroupRepository(IDbContextFactory<TenantDBContext> dbContextFactory)
{
_dbContextFactory = dbContextFactory;
}
public IEnumerable<SiteGroup> GetSiteGroups()
{
using var db = _dbContextFactory.CreateDbContext();
return db.SiteGroup.ToList();
}
public SiteGroup AddSiteGroup(SiteGroup siteGroup)
{
using var db = _dbContextFactory.CreateDbContext();
db.SiteGroup.Add(siteGroup);
db.SaveChanges();
return siteGroup;
}
public SiteGroup UpdateSiteGroup(SiteGroup siteGroup)
{
using var db = _dbContextFactory.CreateDbContext();
db.Entry(siteGroup).State = EntityState.Modified;
db.SaveChanges();
return siteGroup;
}
public SiteGroup GetSiteGroup(int siteGroupId)
{
return GetSiteGroup(siteGroupId, true);
}
public SiteGroup GetSiteGroup(int siteGroupId, bool tracking)
{
using var db = _dbContextFactory.CreateDbContext();
if (tracking)
{
return db.SiteGroup.FirstOrDefault(item => item.SiteGroupId == siteGroupId);
}
else
{
return db.SiteGroup.AsNoTracking().FirstOrDefault(item => item.SiteGroupId == siteGroupId);
}
}
public void DeleteSiteGroup(int siteGroupId)
{
using var db = _dbContextFactory.CreateDbContext();
SiteGroup group = db.SiteGroup.Find(siteGroupId);
db.SiteGroup.Remove(group);
db.SaveChanges();
}
}
}