optimizations and fixes

This commit is contained in:
Shaun Walker
2020-03-11 14:39:49 -04:00
parent 2436f74830
commit fe98084324
23 changed files with 159 additions and 88 deletions

View File

@ -30,7 +30,7 @@ namespace Oqtane.Repository
{
username = _accessor.HttpContext.User.Identity.Name;
}
DateTime date = DateTime.Now;
DateTime date = DateTime.UtcNow;
var created = ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added);

View File

@ -10,6 +10,7 @@ namespace Oqtane.Repository
Page UpdatePage(Page Page);
Page GetPage(int PageId);
Page GetPage(int PageId, int UserId);
Page GetPage(string Path, int SiteId);
void DeletePage(int PageId);
}
}

View File

@ -53,39 +53,43 @@ namespace Oqtane.Repository
{
List<ModuleDefinition> ModuleDefinitions;
// get run-time module definitions
ModuleDefinitions = _cache.GetOrCreate("moduledefinitions", entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return LoadModuleDefinitionsFromAssemblies();
});
// sync module definitions with database
List<ModuleDefinition> moduledefs = _db.ModuleDefinition.ToList();
// get module defintion permissions for site
List<Permission> permissions = _permissions.GetPermissions(SiteId, "ModuleDefinition").ToList();
// get module definitions in database
List<ModuleDefinition> moduledefs = _db.ModuleDefinition.ToList();
// sync run-time module definitions with database
foreach (ModuleDefinition moduledefinition in ModuleDefinitions)
{
ModuleDefinition moduledef = moduledefs.Where(item => item.ModuleDefinitionName == moduledefinition.ModuleDefinitionName).FirstOrDefault();
if (moduledef == null)
{
// new module definition
moduledef = new ModuleDefinition { ModuleDefinitionName = moduledefinition.ModuleDefinitionName };
_db.ModuleDefinition.Add(moduledef);
_db.SaveChanges();
if (moduledefinition.Permissions != "")
{
_permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions);
foreach(Permission permission in _permissions.GetPermissions("ModuleDefinition", moduledef.ModuleDefinitionId))
{
permissions.Add(permission);
}
}
_permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions);
}
else
{
moduledefs.Remove(moduledef); // remove module definition from list
// existing module definition
if (permissions.Count == 0)
{
_permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions);
}
// remove module definition from list
moduledefs.Remove(moduledef);
}
moduledefinition.ModuleDefinitionId = moduledef.ModuleDefinitionId;
moduledefinition.SiteId = SiteId;
moduledefinition.Permissions = _permissions.EncodePermissions(moduledefinition.ModuleDefinitionId, permissions);
moduledefinition.CreatedBy = moduledef.CreatedBy;
moduledefinition.CreatedOn = moduledef.CreatedOn;
moduledefinition.ModifiedBy = moduledef.ModifiedBy;

View File

@ -75,6 +75,17 @@ namespace Oqtane.Repository
return page;
}
public Page GetPage(string Path, int SiteId)
{
Page page = _db.Page.Where(item => item.Path == Path && item.SiteId == SiteId).FirstOrDefault();
if (page != null)
{
IEnumerable<Permission> permissions = _permissions.GetPermissions("Page", page.PageId).ToList();
page.Permissions = _permissions.EncodePermissions(page.PageId, permissions);
}
return page;
}
public void DeletePage(int PageId)
{
Page Page = _db.Page.Find(PageId);