Folder and file management service

This commit is contained in:
Shaun Walker
2020-02-11 14:25:38 -05:00
parent ee682516c3
commit 6a92c9f764
45 changed files with 1075 additions and 421 deletions

View File

@ -18,8 +18,8 @@ namespace Oqtane.Repository
public IEnumerable<File> GetFiles(int FolderId)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", FolderId);
IEnumerable<File> files = db.File.Where(item => item.FolderId == FolderId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", FolderId).ToList();
IEnumerable<File> files = db.File.Where(item => item.FolderId == FolderId).Include(item => item.Folder);
foreach (File file in files)
{
file.Folder.Permissions = Permissions.EncodePermissions(FolderId, permissions);
@ -43,10 +43,10 @@ namespace Oqtane.Repository
public File GetFile(int FileId)
{
File file = db.File.Find(FileId);
File file = db.File.Where(item => item.FileId == FileId).Include(item => item.Folder).FirstOrDefault();
if (file != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", file.FolderId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", file.FolderId).ToList();
file.Folder.Permissions = Permissions.EncodePermissions(file.FolderId, permissions);
}
return file;

View File

@ -53,7 +53,18 @@ namespace Oqtane.Repository
Folder folder = db.Folder.Find(FolderId);
if (folder != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", folder.FolderId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", folder.FolderId).ToList();
folder.Permissions = Permissions.EncodePermissions(folder.FolderId, permissions);
}
return folder;
}
public Folder GetFolder(int SiteId, string Path)
{
Folder folder = db.Folder.Where(item => item.SiteId == SiteId && item.Path == Path).FirstOrDefault();
if (folder != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Folder", folder.FolderId).ToList();
folder.Permissions = Permissions.EncodePermissions(folder.FolderId, permissions);
}
return folder;

View File

@ -10,6 +10,7 @@ namespace Oqtane.Repository
Folder AddFolder(Folder Folder);
Folder UpdateFolder(Folder Folder);
Folder GetFolder(int FolderId);
Folder GetFolder(int SiteId, string Path);
void DeleteFolder(int FolderId);
}
}

View File

@ -3,21 +3,28 @@ using System.Linq;
using Oqtane.Models;
using Microsoft.EntityFrameworkCore;
using System;
using Microsoft.Extensions.Caching.Memory;
namespace Oqtane.Repository
{
public class JobRepository : IJobRepository
{
private MasterDBContext db;
private readonly IMemoryCache _cache;
public JobRepository(MasterDBContext context)
public JobRepository(MasterDBContext context, IMemoryCache cache)
{
db = context;
_cache = cache;
}
public IEnumerable<Job> GetJobs()
{
return db.Job.ToList();
return _cache.GetOrCreate("jobs", entry =>
{
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
return db.Job.ToList();
});
}
public Job AddJob(Job Job)

View File

@ -56,7 +56,7 @@ namespace Oqtane.Repository
.SingleOrDefault(item => item.PageModuleId == PageModuleId);
if (pagemodule != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Module", pagemodule.ModuleId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Module", pagemodule.ModuleId).ToList();
pagemodule.Module.Permissions = Permissions.EncodePermissions(pagemodule.ModuleId, permissions);
}
return pagemodule;
@ -68,7 +68,7 @@ namespace Oqtane.Repository
.SingleOrDefault(item => item.PageId == PageId && item.ModuleId == ModuleId);
if (pagemodule != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Module", pagemodule.ModuleId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Module", pagemodule.ModuleId).ToList();
pagemodule.Module.Permissions = Permissions.EncodePermissions(pagemodule.ModuleId, permissions);
}
return pagemodule;

View File

@ -55,7 +55,7 @@ namespace Oqtane.Repository
Page page = db.Page.Find(PageId);
if (page != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Page", page.PageId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Page", page.PageId).ToList();
page.Permissions = Permissions.EncodePermissions(page.PageId, permissions);
}
return page;
@ -73,7 +73,7 @@ namespace Oqtane.Repository
}
if (page != null)
{
IEnumerable<Permission> permissions = Permissions.GetPermissions("Page", page.PageId);
IEnumerable<Permission> permissions = Permissions.GetPermissions("Page", page.PageId).ToList();
page.Permissions = Permissions.EncodePermissions(page.PageId, permissions);
}
}

View File

@ -15,6 +15,8 @@ namespace Oqtane.Repository
private readonly TenantDBContext db;
private readonly IRoleRepository RoleRepository;
private readonly IProfileRepository ProfileRepository;
private readonly IFolderRepository FolderRepository;
private readonly IFileRepository FileRepository;
private readonly IPageRepository PageRepository;
private readonly IModuleRepository ModuleRepository;
private readonly IPageModuleRepository PageModuleRepository;
@ -22,11 +24,13 @@ namespace Oqtane.Repository
private readonly IServiceProvider ServiceProvider;
private readonly List<PageTemplate> SiteTemplate;
public SiteRepository(TenantDBContext context, IRoleRepository RoleRepository, IProfileRepository ProfileRepository, IPageRepository PageRepository, IModuleRepository ModuleRepository, IPageModuleRepository PageModuleRepository, IModuleDefinitionRepository ModuleDefinitionRepository, IServiceProvider ServiceProvider)
public SiteRepository(TenantDBContext context, IRoleRepository RoleRepository, IProfileRepository ProfileRepository, IFolderRepository FolderRepository, IFileRepository FileRepository, IPageRepository PageRepository, IModuleRepository ModuleRepository, IPageModuleRepository PageModuleRepository, IModuleDefinitionRepository ModuleDefinitionRepository, IServiceProvider ServiceProvider)
{
db = context;
this.RoleRepository = RoleRepository;
this.ProfileRepository = ProfileRepository;
this.FolderRepository = FolderRepository;
this.FileRepository = FileRepository;
this.PageRepository = PageRepository;
this.ModuleRepository = ModuleRepository;
this.PageModuleRepository = PageModuleRepository;
@ -40,7 +44,7 @@ namespace Oqtane.Repository
Content = "<p><a href=\"https://www.oqtane.org\" target=\"_new\">Oqtane</a> is an open source <b>modular application framework</b> built from the ground up using modern .NET Core technology. It leverages the revolutionary new Blazor component model to create a <b>fully dynamic</b> web development experience which can be executed on a client or server. Whether you are looking for a platform to <b>accelerate your web development</b> efforts, or simply interested in exploring the anatomy of a large-scale Blazor application, Oqtane provides a solid foundation based on proven enterprise architectural principles.</p>" +
"<p align=\"center\"><a href=\"https://www.oqtane.org\" target=\"_new\"><img src=\"oqtane.png\"></a><br /><br /><a class=\"btn btn-primary\" href=\"https://www.oqtane.org/Community\" target=\"_new\">Join Our Community</a>&nbsp;&nbsp;<a class=\"btn btn-primary\" href=\"https://github.com/oqtane/oqtane.framework\" target=\"_new\">Clone Our Repo</a><br /><br /></p>" +
"<p><a href=\"https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor\" target=\"_new\">Blazor</a> is a single-page app framework that lets you build interactive web applications using C# instead of JavaScript. Client-side Blazor relies on WebAssembly, an open web standard that does not require plugins or code transpilation in order to run natively in a web browser. Server-side Blazor uses SignalR to host your application on a web server and provide a responsive and robust debugging experience. Blazor applications works in all modern web browsers, including mobile browsers.</p>" +
"<p>Blazor is a feature of <a href=\"https://dotnet.microsoft.com/apps/aspnet\" target=\"_new\">ASP.NET Core 3.0</a>, the popular cross platform web development framework from Microsoft that extends the <a href=\"https://dotnet.microsoft.com/learn/dotnet/what-is-dotnet\" target=\"_new\" >.NET developer platform</a> with tools and libraries for building web apps.</p>"
"<p>Blazor is a feature of <a href=\"https://dotnet.microsoft.com/apps/aspnet\" target=\"_new\">ASP.NET Core 3</a>, the popular cross platform web development framework from Microsoft that extends the <a href=\"https://dotnet.microsoft.com/learn/dotnet/what-is-dotnet\" target=\"_new\" >.NET developer platform</a> with tools and libraries for building web apps.</p>"
},
new PageTemplateModule { ModuleDefinitionName = "Oqtane.Modules.HtmlText, Oqtane.Client", Title = "MIT License", Pane = "Content", ModulePermissions = "[{\"PermissionName\":\"View\",\"Permissions\":\"All Users;Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]",
Content = "<p>Copyright (c) 2019 .NET Foundation</p>" +
@ -168,6 +172,15 @@ namespace Oqtane.Repository
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "PostalCode", Title = "Postal Code", Description = "Postal Code Or Zip Code", Category = "Address", ViewOrder = 7, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
ProfileRepository.AddProfile(new Profile { SiteId = site.SiteId, Name = "Phone", Title = "Phone Number", Description = "Phone Number", Category = "Contact", ViewOrder = 8, MaxLength = 50, DefaultValue = "", IsRequired = false, IsPrivate = false });
Folder folder = FolderRepository.AddFolder(new Folder { SiteId = site.SiteId, ParentId = null, Name = "Root", Path = "", Order = 1, IsSystem = true, Permissions = "[{\"PermissionName\":\"Browse\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"View\",\"Permissions\":\"All Users\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]" });
FolderRepository.AddFolder(new Folder { SiteId = site.SiteId, ParentId = folder.FolderId, Name = "Users", Path = "Users\\", Order = 1, IsSystem = true, Permissions = "[{\"PermissionName\":\"Browse\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"View\",\"Permissions\":\"Administrators\"},{\"PermissionName\":\"Edit\",\"Permissions\":\"Administrators\"}]" });
if (site.Name == "Default Site")
{
File file = FileRepository.AddFile(new File { FolderId = folder.FolderId, Name = "logo.png", Extension = "png", Size = 8192 });
site.LogoFileId = file.FileId;
UpdateSite(site);
}
List<ModuleDefinition> moduledefinitions = ModuleDefinitionRepository.GetModuleDefinitions(site.SiteId).ToList();
foreach (PageTemplate pagetemplate in SiteTemplate)
{