private static Tuple <Folder, SmallShareRecord> ToFolder(object[] r) { var folder = new Folder { ID = Convert.ToInt32(r[0]), ParentFolderID = Convert.ToInt32(r[1]), Title = Convert.ToString(r[2]), CreateBy = new Guid(Convert.ToString(r[3])), CreateOn = Convert.ToDateTime(r[4]), ModifiedBy = new Guid(Convert.ToString(r[5])), ModifiedOn = Convert.ToDateTime(r[6]), TotalSubFolders = Convert.ToInt32(r[7]), TotalFiles = Convert.ToInt32(r[8]), RootFolderType = DocumentsDbHelper.ParseRootFolderType(r[9]), RootFolderCreator = DocumentsDbHelper.ParseRootFolderCreator(r[9]), RootFolderId = DocumentsDbHelper.ParseRootFolderId(r[9]) }; SmallShareRecord shareRecord = null; if (r[10] != null) { shareRecord = new SmallShareRecord { ShareOn = Convert.ToDateTime(r[10]), ShareBy = new Guid(Convert.ToString(r[11])), ShareTo = new Guid(Convert.ToString(r[12])) }; } return(new Tuple <Folder, SmallShareRecord>(folder, shareRecord)); }
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))); } }
private static File ToFile(object[] r) { return(new File { ID = r[0], Version = Convert.ToInt32(r[1]), VersionGroup = Convert.ToInt32(r[2]), FolderID = Convert.ToInt32(r[3]), Title = Convert.ToString(r[4]), ContentLength = Convert.ToInt64(r[5]), FileStatus = (FileStatus)Convert.ToInt32(r[6]), CreateBy = new Guid(Convert.ToString(r[7])), CreateOn = Convert.ToDateTime(r[8]), ModifiedBy = new Guid(Convert.ToString(r[9])), ModifiedOn = Convert.ToDateTime(r[10]), ConvertedType = Convert.ToString(r[11]), Comment = Convert.ToString(r[12]), RootFolderType = DocumentsDbHelper.ParseRootFolderType(r[13]), RootFolderCreator = DocumentsDbHelper.ParseRootFolderCreator(r[13]), RootFolderId = DocumentsDbHelper.ParseRootFolderId(r[13]), SharedToMeOn = r[14] != null?Convert.ToDateTime(r[14]) : (DateTime?)null, SharedToMeBy = r[15] != null?Convert.ToString(r[15]) : null, // here stored subject of the file share CreateByString = r[16] != null?Convert.ToString(r[16]) : null }); }
public override IEnumerable <Tuple <Feed, object> > GetFeeds(FeedFilter filter) { var q1 = new SqlQuery("files_folder f") .Select(FolderColumns().Select(f => "f." + f).ToArray()) .Select(DocumentsDbHelper.GetRootFolderType("parent_id")) .Select("null, null, null") .Where( Exp.Eq("f.tenant_id", filter.Tenant) & Exp.Eq("f.folder_type", 0) & Exp.Between("f.create_on", filter.Time.From, filter.Time.To) ); var q2 = new SqlQuery("files_folder f") .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.Folder) ) .Select(FolderColumns().Select(f => "f." + f).ToArray()) .Select(DocumentsDbHelper.GetRootFolderType("parent_id")) .Select("s.timestamp, s.owner, s.subject") .Where( Exp.Eq("f.tenant_id", filter.Tenant) & Exp.Eq("f.folder_type", 0) & Exp.Lt("s.security", 3) & Exp.Between("s.timestamp", filter.Time.From, filter.Time.To) ); List <Tuple <Folder, SmallShareRecord> > folders; using (var db = new DbManager(DbId)) { folders = db.ExecuteList(q1.UnionAll(q2)) .ConvertAll(ToFolder) .Where(f => f.Item1.RootFolderType != FolderType.TRASH && f.Item1.RootFolderType != FolderType.BUNCH) .ToList(); } var parentFolderIDs = folders.Select(r => r.Item1.ParentFolderID).ToArray(); var parentFolders = new FolderDao(Tenant, DbId).GetFolders(parentFolderIDs, checkShare: false); return(folders.Select(f => new Tuple <Feed, object>(ToFeed(f, parentFolders.FirstOrDefault(r => r.ID.Equals(f.Item1.ParentFolderID))), f))); }
private static Folder ToFolder(object[] r) { return(new Folder { ID = Convert.ToInt32(r[0]), ParentFolderID = Convert.ToInt32(r[1]), Title = Convert.ToString(r[2]), CreateBy = new Guid(Convert.ToString(r[3])), CreateOn = Convert.ToDateTime(r[4]), ModifiedBy = new Guid(Convert.ToString(r[5])), ModifiedOn = Convert.ToDateTime(r[6]), TotalSubFolders = Convert.ToInt32(r[7]), TotalFiles = Convert.ToInt32(r[8]), RootFolderType = DocumentsDbHelper.ParseRootFolderType(r[9]), RootFolderCreator = DocumentsDbHelper.ParseRootFolderCreator(r[9]), RootFolderId = DocumentsDbHelper.ParseRootFolderId(r[9]), SharedToMeOn = r[10] != null?Convert.ToDateTime(r[10]) : (DateTime?)null, SharedToMeBy = r[11] != null?Convert.ToString(r[11]) : null, // here stored subject of the folder share CreateByString = r[12] != null?Convert.ToString(r[12]) : null }); }
private static Tuple <File, SmallShareRecord> ToFile(object[] r) { var file = new File { ID = r[0], Version = Convert.ToInt32(r[1]), VersionGroup = Convert.ToInt32(r[2]), FolderID = Convert.ToInt32(r[3]), Title = Convert.ToString(r[4]), ContentLength = Convert.ToInt64(r[5]), FileStatus = (FileStatus)Convert.ToInt32(r[6]), CreateBy = new Guid(Convert.ToString(r[7])), CreateOn = Convert.ToDateTime(r[8]), ModifiedBy = new Guid(Convert.ToString(r[9])), ModifiedOn = Convert.ToDateTime(r[10]), ConvertedType = Convert.ToString(r[11]), Comment = Convert.ToString(r[12]), RootFolderType = DocumentsDbHelper.ParseRootFolderType(r[13]), RootFolderCreator = DocumentsDbHelper.ParseRootFolderCreator(r[13]), RootFolderId = DocumentsDbHelper.ParseRootFolderId(r[13]) }; SmallShareRecord shareRecord = null; if (r[14] != null && r[15] != null && r[16] != null) { shareRecord = new SmallShareRecord { ShareOn = Convert.ToDateTime(r[14]), ShareBy = new Guid(Convert.ToString(r[15])), ShareTo = new Guid(Convert.ToString(r[16])) }; } return(new Tuple <File, SmallShareRecord>(file, shareRecord)); }