public File SaveFile(File file, Stream fileStream)
        {
            if (fileStream == null)
            {
                throw new ArgumentNullException("fileStream");
            }

            if (file.ID != null)
            {
                var sharePointFile = ProviderInfo.CreateFile((string)file.ID, fileStream);

                var resultFile = ProviderInfo.ToFile(sharePointFile);
                if (!sharePointFile.Name.Equals(file.Title))
                {
                    var folder = ProviderInfo.GetFolderById(file.FolderID);
                    file.Title = GetAvailableTitle(file.Title, folder, IsExist);

                    var id = ProviderInfo.RenameFile(SharePointDaoSelector.ConvertId(resultFile.ID).ToString(), file.Title);
                    return(GetFile(SharePointDaoSelector.ConvertId(id)));
                }
                return(resultFile);
            }

            if (file.FolderID != null)
            {
                var folder = ProviderInfo.GetFolderById(file.FolderID);
                file.Title = GetAvailableTitle(file.Title, folder, IsExist);
                return(ProviderInfo.ToFile(ProviderInfo.CreateFile(folder.ServerRelativeUrl + "/" + file.Title, fileStream)));
            }

            return(null);
        }
Esempio n. 2
0
        public Folder <int> CopyFolder(string folderId, int toFolderId, CancellationToken?cancellationToken)
        {
            var moved = CrossDao.PerformCrossDaoFolderCopy(
                folderId, this, SharePointDaoSelector.GetFileDao(folderId), SharePointDaoSelector.ConvertId,
                toFolderId, FolderDao, FileDao, r => r,
                false, cancellationToken);

            return(moved);
        }
        public object RenameFolder(object folderId, string newTitle)
        {
            var oldId       = ProviderInfo.MakeId((string)folderId);
            var newFolderId = oldId;

            if (ProviderInfo.SpRootFolderId.Equals(folderId))
            {
                //It's root folder
                SharePointDaoSelector.RenameProvider(ProviderInfo, newTitle);
                //rename provider customer title
            }
            else
            {
                newFolderId = (string)ProviderInfo.RenameFolder(folderId, newTitle);
            }
            UpdatePathInDB(oldId, newFolderId);
            return(newFolderId);
        }
Esempio n. 4
0
 public SharePointFileDao(
     IServiceProvider serviceProvider,
     UserManager userManager,
     TenantManager tenantManager,
     TenantUtil tenantUtil,
     DbContextManager <FilesDbContext> dbContextManager,
     SetupInfo setupInfo,
     IOptionsMonitor <ILog> monitor,
     FileUtility fileUtility,
     CrossDao crossDao,
     SharePointDaoSelector sharePointDaoSelector,
     IFileDao <int> fileDao)
     : base(serviceProvider, userManager, tenantManager, tenantUtil, dbContextManager, setupInfo, monitor, fileUtility)
 {
     CrossDao = crossDao;
     SharePointDaoSelector = sharePointDaoSelector;
     FileDao = fileDao;
 }
 public SharePointDaoBase(SharePointProviderInfo sharePointInfo, SharePointDaoSelector sharePointDaoSelector)
 {
     ProviderInfo          = sharePointInfo;
     SharePointDaoSelector = sharePointDaoSelector;
 }
Esempio n. 6
0
 public SharePointSecurityDao(SharePointProviderInfo sharePointInfo, SharePointDaoSelector sharePointDaoSelector)
     : base(sharePointInfo, sharePointDaoSelector)
 {
 }
        public IEnumerable <Tag> GetNewTags(Guid subject, Folder parentFolder, bool deepSearch)
        {
            using (var dbManager = new DbManager(FileConstant.DatabaseId))
            {
                var folderId = SharePointDaoSelector.ConvertId(parentFolder.ID);

                var fakeFolderId = parentFolder.ID.ToString();

                var entryIDs = dbManager.ExecuteList(Query("files_thirdparty_id_mapping")
                                                     .Select("hash_id")
                                                     .Where(Exp.Like("id", fakeFolderId, SqlLike.StartWith)))
                               .ConvertAll(x => x[0]);

                if (!entryIDs.Any())
                {
                    return(new List <Tag>());
                }

                var sqlQuery = new SqlQuery("files_tag ft")
                               .Select("ft.name",
                                       "ft.flag",
                                       "ft.owner",
                                       "ftl.entry_id",
                                       "ftl.entry_type",
                                       "ftl.tag_count",
                                       "ft.id")
                               .Distinct()
                               .LeftOuterJoin("files_tag_link ftl",
                                              Exp.EqColumns("ft.tenant_id", "ftl.tenant_id") &
                                              Exp.EqColumns("ft.id", "ftl.tag_id"))
                               .Where(Exp.Eq("ft.tenant_id", TenantID) &
                                      Exp.Eq("ftl.tenant_id", TenantID) &
                                      Exp.Eq("ft.flag", (int)TagType.New) &
                                      Exp.In("ftl.entry_id", entryIDs));

                if (subject != Guid.Empty)
                {
                    sqlQuery.Where(Exp.Eq("ft.owner", subject));
                }

                var tags = dbManager.ExecuteList(sqlQuery).ConvertAll(r => new Tag
                {
                    TagName   = Convert.ToString(r[0]),
                    TagType   = (TagType)r[1],
                    Owner     = new Guid(r[2].ToString()),
                    EntryId   = MappingID(r[3]),
                    EntryType = (FileEntryType)r[4],
                    Count     = Convert.ToInt32(r[5]),
                    Id        = Convert.ToInt32(r[6])
                });

                if (deepSearch)
                {
                    return(tags);
                }

                var folderFileIds = new[] { fakeFolderId }
                .Concat(ProviderInfo.GetFolderFolders(folderId).Select(x => ProviderInfo.MakeId(x.ServerRelativeUrl)))
                .Concat(ProviderInfo.GetFolderFiles(folderId).Select(x => ProviderInfo.MakeId(x.ServerRelativeUrl)));

                return(tags.Where(tag => folderFileIds.Contains(tag.EntryId.ToString())));
            }
        }
 public SharePointFolderDao(SharePointProviderInfo sharePointInfo, SharePointDaoSelector sharePointDaoSelector)
     : base(sharePointInfo, sharePointDaoSelector)
 {
 }