Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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)));
            }
        }
Exemplo n.º 3
0
 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
     });
 }
Exemplo n.º 4
0
        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)));
        }
Exemplo n.º 5
0
 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
     });
 }
Exemplo n.º 6
0
        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));
        }