public static void Delete(BlogSystemContext dataBaseContext, IHostingEnvironment hostingEnvironment, IEnumerable <Guid> deleteGuid) { deleteGuid.ToList().ForEach(e => { var template = dataBaseContext.Templates.FirstOrDefault(q => q.Guid == e); if (template == null) { return; } var uploadUnit = new UploadUnit(dataBaseContext, hostingEnvironment); //清除所有模板文件 dataBaseContext.TemplateFiles .Where(t => t.TemplateGuid == template.Guid) .Select(o => o.Guid) .ToList().ForEach(d => { var templateFile = dataBaseContext.TemplateFiles.FirstOrDefault(q => q.Guid == d); if (templateFile == null) { return; } var uploadedFileGuid = templateFile.UploadedFileGuid; dataBaseContext.TemplateFiles.Remove(templateFile); uploadUnit.CheckAndDeleteFile(uploadedFileGuid); }); dataBaseContext.Templates.Remove(template); }); }
public object GetService(Type serviceType) { if (serviceType == typeof(UsersController)) { var context = new BlogSystemContext(); var repository = new EfRepository <User>(context); return(new UsersController(repository)); } else if (serviceType == typeof(PostsController)) { var context = new BlogSystemContext(); var postsRepository = new EfRepository <Post>(context); var usersRepository = new EfRepository <User>(context); var tagsRepository = new EfRepository <Tag>(context); var commentsRepository = new EfRepository <Comment>(context); return(new PostsController(postsRepository, usersRepository, tagsRepository, commentsRepository)); } else if (serviceType == typeof(TagsController)) { var context = new BlogSystemContext(); var tagsRepository = new EfRepository <Tag>(context); var usersRepository = new EfRepository <User>(context); var postsRepository = new EfRepository <Post>(context); return(new TagsController(tagsRepository, usersRepository, postsRepository)); } else { return(null); } }
/// <summary> /// 获取上传文件的列表。 /// </summary> /// <param name="dataBaseContext">数据库上下文</param> /// <param name="cache">Redis缓存对象</param> /// <param name="templateGuid">模板Guid</param> /// <returns>上传文件的列表</returns> /// <exception cref="NotDataBaseException">数据库不存在引发的异常</exception> List <TemplateFile> GetUploadedFiles(BlogSystemContext dataBaseContext, IDistributedCache cache, Guid templateGuid) { var templateFilesJson = cache.GetString("TemplateFiles"); List <TemplateFile> templateFiles; //如果缓存数据存在,则直接从缓存获取数据,否则从数据库获取数据并把数据保存到缓存 if (string.IsNullOrEmpty(templateFilesJson)) { //从数据库获取数据 templateFiles = dataBaseContext.TemplateFiles .Include(o => o.UploadedFile) .Where(q => q.TemplateGuid == templateGuid) .ToList(); //将数据保存到缓存 templateFilesJson = JsonConvert.SerializeObject(templateFiles.Select(q => new { q.Name, q.VirtualPath, q.MIME, UploadedFile = new { q.UploadedFile.FileName, q.UploadedFile.GzipFileName, q.UploadedFile.Size } })); cache.SetStringAsync("TemplateFiles", templateFilesJson); } else { templateFiles = JsonConvert.DeserializeObject <List <TemplateFile> >(templateFilesJson); //从缓存获取数据 } return(templateFiles); }
public static List <Template> GetData(BlogSystemContext dataBaseContext, PageInfoViewModel pageInfo, string searchMessage) { var efHelper = new EFHelper(dataBaseContext); IQueryable <Template> q = dataBaseContext.Templates; // 表单搜索 var searchText = searchMessage?.Trim(); if (!string.IsNullOrEmpty(searchText)) { q = q.Where(o => o.Name.Contains(searchText)); } if (pageInfo == null) { return(q.ToList()); } // 在添加条件之后,排序和分页之前获取总记录数 pageInfo.RecordCount = q.Count(); // 排列和数据库分页 q = efHelper.SortAndPage(q, pageInfo); return(q.ToList()); }
public IEnumerable <PostModel> GetAllPostOfAllBlogsExplicitly() { using (var context = new BlogSystemContext()) { var result = new List <PostModel>(); var blogs = context.Blogs.ToList(); foreach (var blog in blogs) { context.Entry(blog).Collection(b => b.Posts).Load(); foreach (var post in blog.Posts) { result.Add(new PostModel() { Id = post.Id, Content = post.Content, NumberOfLikes = post.NumberOfLikes }); } } return(result); } }
public BlogSystemSeedData(BlogSystemContext context, UserManager <User> userManager, RoleManager <IdentityRole> roleManager) { _context = context; _userManager = userManager; _roleManager = roleManager; }
public static void AddItem(BlogSystemContext dataBaseContext, string name) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleLabelName, new ParametersFormatErrorException("标签格式错误。")); dataBaseContext.ArticleLabels.AddRange(new ArticleLabel() { Name = name }); }
public static void AddItem(BlogSystemContext dataBaseContext, string name) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.TemplateName, new ParametersFormatErrorException("模板名称格式错误。")); dataBaseContext.Templates.Add(new Template() { Guid = Guid.NewGuid(), Name = name }); }
public static void EditItem(BlogSystemContext dataBaseContext, Guid guid, string name) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleLabelName, new ParametersFormatErrorException("标签格式错误。")); var articleLabel = dataBaseContext.ArticleLabels.FirstOrDefault(q => q.Guid == guid); if (articleLabel != null) { articleLabel.Name = name; } }
public static List <Article> GetData(BlogSystemContext dataBaseContext, PageInfoViewModel pageInfo, string searchMessage, Guid?articleTypeGuid = null, Guid?articleLabelGuid = null, bool getArticleType = true, bool getArticleLabels = true, bool getText = true) { var efHelper = new EFHelper(dataBaseContext); IQueryable <Article> q; if (articleLabelGuid.HasValue) { q = dataBaseContext.ArticleLabelArticles.Where( o => o.ArticleLabelGuid == articleLabelGuid).Select(o => o.Article); } else { q = dataBaseContext.Articles; } IQueryable <ArticleLabelArticle> m = dataBaseContext.ArticleLabelArticles; m = m.Include(o => o.Article) .Include(o => o.ArticleLabel); q = q.Include(o => o.ArticleType); if (articleTypeGuid.HasValue) { var selectedArticleTypeGuids = ArticleType.GetVirtualTree(dataBaseContext, articleTypeGuid.Value); q = q.Join(selectedArticleTypeGuids, l => l.ArticleType, r => r, (l, r) => l); } // 表单搜索 var searchText = searchMessage?.Trim(); if (!string.IsNullOrEmpty(searchText)) { q = q.Where(o => o.Name.Contains(searchText)); } if (pageInfo != null) { // 在添加条件之后,排序和分页之前获取总记录数 pageInfo.RecordCount = q.Count(); // 排列和数据库分页 q = efHelper.SortAndPage(q, pageInfo); } var articles = q.ToList(); articles.ForEach(o => o.ArticleLabelArticles = m.Where(p => p.Article == o).ToList()); return(articles); }
public static void EditItem(BlogSystemContext dataBaseContext, Guid guid, string name) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.TemplateName, new ParametersFormatErrorException("模板名称格式错误。")); var template = dataBaseContext.Templates.FirstOrDefault(q => q.Guid == guid); if (template != null) { template.Name = name; } }
public static List <ArticleType> GetVirtualTree(BlogSystemContext dataBaseContext, Guid?articleTypeGuid = null) { var articleTypes = new List <ArticleType>(); AddChildArticleTypes(dataBaseContext, articleTypeGuid, articleTypes, string.Empty); if (articleTypeGuid != null) { articleTypes.Add(dataBaseContext.ArticleTypes.FirstOrDefault(q => q.Guid == articleTypeGuid)); } return(articleTypes); }
public static void AddItem(BlogSystemContext dataBaseContext, string name, Guid?parentArticleTypeGuid, uint sequence) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleTypeName, new ParametersFormatErrorException("类别格式错误。")); dataBaseContext.ArticleTypes.AddRange(new ArticleType() { Name = name, ParentArticleTypeGuid = parentArticleTypeGuid, Sequence = sequence }); }
static void AddChildArticleTypes(BlogSystemContext dataBaseContext, Guid?articleTypeGuid, ICollection <ArticleType> articleTypes, string prefix) { var _articleTypes = dataBaseContext.ArticleTypes.Where(q => q.ParentArticleTypeGuid == articleTypeGuid) .OrderBy(o => o.Sequence).ToList(); _articleTypes.ForEach(a => a.Name = $"{prefix}{a.Name}"); _articleTypes.ForEach(a => { articleTypes.Add(a); AddChildArticleTypes(dataBaseContext, a.Guid, articleTypes, $"{prefix} "); }); }
public static Article GetArticle(BlogSystemContext dataBaseContext, Guid guid, bool addUpClickTraffic = false) { var article = dataBaseContext.Articles.Include(o => o.ArticleType).FirstOrDefault(o => o.Guid == guid); if (!addUpClickTraffic) { return(article); } if (article != null) { article.ClickTraffic++; } return(article); }
public static void EditItem(BlogSystemContext dataBaseContext, Guid guid, string name, Guid?parentArticleTypeGuid, uint sequence) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleTypeName, new ParametersFormatErrorException("类别格式错误。")); var articleType = dataBaseContext.ArticleTypes.FirstOrDefault(q => q.Guid == guid); if (articleType == null) { return; } articleType.Name = name; articleType.ParentArticleTypeGuid = parentArticleTypeGuid; articleType.Sequence = sequence; }
public static void Delete(BlogSystemContext dataBaseContext, IHostingEnvironment hostingEnvironment, IEnumerable <Guid> deleteGuid) { var uploadUnit = new UploadUnit(dataBaseContext, hostingEnvironment); deleteGuid.ToList().ForEach(d => { var article = dataBaseContext.Articles.FirstOrDefault(q => q.Guid == d); if (article == null) { return; } dataBaseContext.Articles.Remove(article); }); }
public static Guid?EditItem(BlogSystemContext dataBaseContext, Guid guid, string virtualPath) { FormatVerificationHelper.FormatVerification(virtualPath, FormatVerificationHelper.FormatType.VirtualPath, new ParametersFormatErrorException("虚拟路径格式错误。")); if (dataBaseContext.TemplateFiles.Any(q => q.VirtualPath == virtualPath)) { throw new TemplateFileAddItemVirtualPathIsExistException("此虚拟路径已经存在。"); } var templateFile = dataBaseContext.TemplateFiles.FirstOrDefault(q => q.Guid == guid); if (templateFile == null) { return(null); } templateFile.VirtualPath = virtualPath; return(templateFile.TemplateGuid); }
public object GetService(Type serviceType) { if (serviceType == typeof(UsersController)) { return(new UsersController(this.UsersRepository as IRepository <User>)); } else if (serviceType == typeof(PostsController)) { var context = new BlogSystemContext(); this.postsRepository = new EfRepository <Post>(context); this.usersRepository = new EfRepository <User>(context); this.tagsRepository = new EfRepository <Tag>(context); return(new PostsController(postsRepository, usersRepository, tagsRepository, commentsRepository)); } return(null); }
public static void AddItem(BlogSystemContext dataBaseContext, string name, Guid articleTypeGuid, IEnumerable <Guid> articleLabelGuids, string content) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleName, new ParametersFormatErrorException("文章名格式错误。")); var article = new Article() { Name = name, ArticleTypeGuid = articleTypeGuid, Content = content }; dataBaseContext.Articles.Add(article); dataBaseContext.ArticleLabelArticles.AddRange(articleLabelGuids.Select(o => new ArticleLabelArticle { ArticleLabelGuid = o, Article = article })); }
/// <summary> /// 初始化 <see cref="T:Scottxu.Blog.Models.Units.ConfigHelper"/> 的实例。 /// </summary> /// <param name="dataBaseContext">数据库上下文</param> /// <param name="cache">Redis缓存</param> public ConfigUnit(BlogSystemContext dataBaseContext, IDistributedCache cache) { var configsJson = cache.GetString("Configs"); if (string.IsNullOrEmpty(configsJson)) { if (!dataBaseContext.DataBaseIsExist) { throw new NotDataBaseException(); } Configs = dataBaseContext.Configs.ToList(); cache.SetString("Configs", JsonConvert.SerializeObject(Configs)); } else { Configs = JsonConvert.DeserializeObject <List <Config> >(configsJson); } this.dataBaseContext = dataBaseContext; this.cache = cache; }
public static List <Guid> Delete(BlogSystemContext dataBaseContext, IHostingEnvironment hostingEnvironment, IEnumerable <Guid> deleteGuid) { var templateGuids = new List <Guid>(); var uploadUnit = new UploadUnit(dataBaseContext, hostingEnvironment); deleteGuid.ToList().ForEach(d => { var templateFile = dataBaseContext.TemplateFiles.FirstOrDefault(q => q.Guid == d); if (templateFile == null) { return; } var uploadedFileGuid = templateFile.UploadedFileGuid; dataBaseContext.TemplateFiles.Remove(templateFile); uploadUnit.CheckAndDeleteFile(uploadedFileGuid); templateGuids.Add(templateFile.Guid); }); return(templateGuids); }
public static void AddItem(BlogSystemContext dataBaseContext, IHostingEnvironment hostingEnvironment, string virtualPath, Guid templateGuid, AddItemSaveFilesDelegate saveFiles) { FormatVerificationHelper.FormatVerification(virtualPath, FormatVerificationHelper.FormatType.VirtualPath, new ParametersFormatErrorException("虚拟路径格式错误。")); if (dataBaseContext.TemplateFiles.Any(q => q.VirtualPath == virtualPath)) { throw new TemplateFileAddItemVirtualPathIsExistException("此虚拟路径已经存在。"); } var formFileInfos = saveFiles(dataBaseContext, hostingEnvironment); dataBaseContext.TemplateFiles.AddRange(formFileInfos.Select(formFile => new TemplateFile() { MIME = formFile.MIME, Name = formFile.FileName, UploadedFile = formFile.UploadedFile, TemplateGuid = templateGuid, VirtualPath = virtualPath })); }
public BlogModel GetBlogWithPostsEagerly(int blogId) { using (var context = new BlogSystemContext()) { var blog = context.Blogs .Include("Posts") .Where(b => b.Id == blogId) .FirstOrDefault(); return(new BlogModel() { Id = blog.Id, Title = blog.Title, Posts = blog.Posts.Select(p => new PostModel() { Id = p.Id, Content = p.Content, NumberOfLikes = p.NumberOfLikes }).ToList() }); } }
public static (IEnumerable <object>, int) GetTree(BlogSystemContext dataBaseContext, Guid?parentArticleTypeGuid = null) { IQueryable <ArticleType> q = dataBaseContext.ArticleTypes; q = q.Include(o => o.Articles); q = q.Where(o => o.ParentArticleTypeGuid == parentArticleTypeGuid); q = q.OrderBy(o => o.Sequence); var list = q.Select(o => new { o.Guid, o.Name, ArticlesCount = o.Articles.Count }).ToList() .Select(o => { (object childArticleTypes, int articlesCount) = GetTree(dataBaseContext, o.Guid); articlesCount += o.ArticlesCount; return(new { o.Guid, o.Name, ArticlesCount = articlesCount, ChildArticleTypes = childArticleTypes }); }); return(list, list.Sum(s => s.ArticlesCount)); }
public static void EditItem(BlogSystemContext dataBaseContext, Guid guid, string name, Guid articleTypeGuid, IEnumerable <Guid> articleLabelGuids, string content) { FormatVerificationHelper.FormatVerification(name, FormatVerificationHelper.FormatType.ArticleName, new ParametersFormatErrorException("文章名格式错误。")); var article = dataBaseContext.Articles.FirstOrDefault(q => q.Guid == guid); if (article == null) { return; } article.Name = name; article.ArticleTypeGuid = articleTypeGuid; article.Content = content; dataBaseContext.ArticleLabelArticles.RemoveRange( dataBaseContext.ArticleLabelArticles.Where(o => o.Article == article)); dataBaseContext.ArticleLabelArticles.AddRange(articleLabelGuids.Select(o => new ArticleLabelArticle { ArticleLabelGuid = o, Article = article })); }
public static void AddZipFile(BlogSystemContext dataBaseContext, IHostingEnvironment hostingEnvironment, AddZipFileSaveFileDelegate saveFile) { var(template, formFileInfos) = saveFile(dataBaseContext, hostingEnvironment); if (dataBaseContext.Templates.Any(q => q.Guid == template.Guid)) { Delete(dataBaseContext, hostingEnvironment, new List <Guid> { template.Guid }); } else { dataBaseContext.Templates.Add(template); } dataBaseContext.TemplateFiles.AddRange(formFileInfos.Select(formFile => new TemplateFile() { MIME = formFile.MIME, Name = formFile.FileName, UploadedFile = formFile.UploadedFile, Template = template, VirtualPath = formFile.VirtualPath })); }
public static List <ArticleType> GetData(BlogSystemContext dataBaseContext, PageInfoViewModel pageInfo, string searchMessage, out List <ArticleType> articleTypes) { articleTypes = GetVirtualTree(dataBaseContext); // 表单搜索 var searchText = searchMessage?.Trim(); var searchArticleTypes = !string.IsNullOrEmpty(searchText) ? articleTypes.Where(o => o.Name.Contains(searchText)).ToList() : articleTypes; if (pageInfo == null) { return(searchArticleTypes); } // 在添加条件之后,排序和分页之前获取总记录数 pageInfo.RecordCount = searchArticleTypes.Count(); // 排列和分页 searchArticleTypes = searchArticleTypes.Skip(pageInfo.PageIndex * pageInfo.PageSize) .Take(pageInfo.PageSize).ToList(); return(searchArticleTypes); }
public FileController(BlogSystemContext context, IOptions <SiteOptions> options, IHostingEnvironment hostingEnvironment) : base(context, options) => HostingEnvironment = hostingEnvironment;
public AdminController(BlogSystemContext context, IOptions <SiteOptions> options, IHostingEnvironment hostingEnvironment, IDistributedCache cache) : base(context, options) => (HostingEnvironment, Cache) = (hostingEnvironment, cache);