public override List<UsageSpaceStatItem> GetStatData() { if (!DbRegistry.IsDatabaseRegistered(FileConstant.DatabaseId)) { DbRegistry.RegisterDatabase(FileConstant.DatabaseId, ConfigurationManager.ConnectionStrings[FileConstant.DatabaseId]); } using (var db = new DbManager(FileConstant.DatabaseId)) { var myFiles = new SqlQuery("files_file f") .Select("f.create_by") .Select("sum(f.content_length) as size") .InnerJoin("files_folder_tree t", Exp.EqColumns("f.folder_id", "t.folder_id")) .InnerJoin("files_bunch_objects b", Exp.EqColumns("f.tenant_id", "b.tenant_id") & Exp.EqColumns("t.parent_id", "b.left_node")) .Where("b.tenant_id", TenantProvider.CurrentTenantID) .Where(Exp.Like("b.right_node", "files/my/", SqlLike.StartWith) | Exp.Like("b.right_node", "files/trash/", SqlLike.StartWith)) .GroupBy(1); var commonFiles = new SqlQuery("files_file f") .Select("'" + Constants.LostUser.ID + "'") .Select("sum(f.content_length) as size") .InnerJoin("files_folder_tree t", Exp.EqColumns("f.folder_id", "t.folder_id")) .InnerJoin("files_bunch_objects b", Exp.EqColumns("f.tenant_id", "b.tenant_id") & Exp.EqColumns("t.parent_id", "b.left_node")) .Where("b.tenant_id", TenantProvider.CurrentTenantID) .Where("b.right_node", "files/common/"); var query = myFiles.UnionAll(commonFiles); return db.ExecuteList(query) .GroupBy(r => CoreContext.UserManager.GetUsers(new Guid(Convert.ToString(r[0]))), r => Convert.ToInt64(r[1]), (user, items) => { var item = new UsageSpaceStatItem { SpaceUsage = items.Sum() }; if (user.Equals(Constants.LostUser)) { item.Name = FilesUCResource.CorporateFiles; item.ImgUrl = PathProvider.GetImagePath("corporatefiles_big.png"); item.Url = PathProvider.GetFolderUrl(Global.FolderCommon); } else { item.Name = user.DisplayUserName(false); item.ImgUrl = user.GetSmallPhotoURL(); item.Url = user.GetUserProfilePageURL(); } return item; }) .OrderByDescending(i => i.SpaceUsage) .ToList(); } }
public override IEnumerable<Tuple<Feed, object>> GetFeeds(FeedFilter filter) { var q1 = new SqlQuery("files_file f") .Select(FileColumns().Select(f => "f." + f).ToArray()) .Select(DocumentsDbHelper.GetRootFolderType("folder_id")) .Select("null, null, null") .Where( Exp.Eq("f.tenant_id", filter.Tenant) & Exp.Eq("f.current_version", 1) & Exp.Between("f.modified_on", filter.Time.From, filter.Time.To)); var q2 = new SqlQuery("files_file f") .Select(FileColumns().Select(f => "f." + f).ToArray()) .Select(DocumentsDbHelper.GetRootFolderType("folder_id")) .LeftOuterJoin("files_security s", Exp.EqColumns("s.entry_id", "f.id") & Exp.Eq("s.tenant_id", filter.Tenant) & Exp.Eq("s.entry_type", (int)FileEntryType.File) ) .Select("s.timestamp, s.owner, s.subject") .Where(Exp.Eq("f.tenant_id", filter.Tenant) & Exp.Eq("f.current_version", 1) & Exp.Lt("s.security", 3) & Exp.Between("s.timestamp", filter.Time.From, filter.Time.To)); using (var db = new DbManager(DbId)) { var files = db.ExecuteList(q1.UnionAll(q2)).ConvertAll(ToFile); return files .Where(f => f.RootFolderType != FolderType.TRASH && f.RootFolderType != FolderType.BUNCH) .Select(f => new Tuple<Feed, object>(ToFeed(f), f)); } }