Ejemplo n.º 1
0
        private async void syncNewUserGroupMenuItem_Click(object sender, EventArgs e)
        {
            var ticket = Session.GetTikect();

            if (string.IsNullOrWhiteSpace(ticket))
            {
                return;
            }

            var group         = (UserGroup)null;
            var syncDirectory = String.Empty;

            using (var syncNewUserGroup = new SyncNewUserGroupView(ticket))
            {
                if (syncNewUserGroup.ShowDialog() == DialogResult.OK)
                {
                    group         = syncNewUserGroup.Group;
                    syncDirectory = syncNewUserGroup.SyncDirectory;
                }
                else
                {
                    return;
                }
            }

            var directory          = string.Format("{0}\\{1}", syncDirectory, group.name);
            var fileFolderInfoList = new List <FileFolderInfo>();
            var fileFolderInfo     = new FileFolderInfo()
            {
                GroupId    = group.id,
                Path       = directory,
                SyncFolder = true
            };

            fileFolderInfoList.Add(fileFolderInfo);

            using (var syncProgress = new SyncProgressView())
            {
                if (syncProgress.SyncNewUserGroup(ticket, directory, group))
                {
                    fileFolderInfoList.AddRange(syncProgress.FileFolderList);
                }
            }

            //Detect the synchronizer object state
            if (_syncing || _synchronizer.Paused)
            {
                _synchronizer.Synchronize(fileFolderInfoList);
            }
            else
            {
                await _synchronizer.SynchronizeAsync(ticket, directory, fileFolderInfoList);
            }

            WatchingPath(syncDirectory);
        }
Ejemplo n.º 2
0
        public async Task <List <FileFolderInfo> > SyncFolderAsync(string ticket, string syncDir,
                                                                   UserGroup group, FileFolder folder)
        {
            var fileFolderList = new List <FileFolderInfo>();
            var folderIndex    = 0;
            var currentFolder  = new FileFolderInfo()
            {
                GroupId    = group.id,
                FolderId   = string.Empty,
                FileFolder = folder,
                Path       = String.Format("{0}\\{1}", syncDir, folder.name),
                SyncFolder = false
            };

            //Add the first entry from parameter
            fileFolderList.Add(currentFolder);

            //Create directory tree
            do
            {
                currentFolder = fileFolderList[folderIndex];

                if (currentFolder != null)
                {
                    var folders = await DokuFlexService.GetFoldersAsync(ticket, group.id, currentFolder.FileFolder.id);

                    foreach (var folderItem in folders)
                    {
                        fileFolderList.Add(
                            new FileFolderInfo()
                        {
                            GroupId    = group.id,
                            FolderId   = currentFolder.FileFolder.id,
                            FileFolder = folderItem,
                            Path       = string.Format("{0}\\{1}", currentFolder.Path, folderItem.name),
                            SyncFolder = false
                        }
                            );
                    }
                }

                folderIndex++;
            } while (fileFolderList.Count > folderIndex);

            var localFileList = new List <FileFolderInfo>();

            for (int i = 0; i < fileFolderList.Count; i++)
            {
                currentFolder = fileFolderList[i];

                var files = await DokuFlexService.GetFilesAsync(ticket, group.id, currentFolder.FileFolder.id);

                //Files for the current folder
                foreach (var fileItem in files)
                {
                    //Create path
                    var path = string.Format("{0}\\{1}", currentFolder.Path, fileItem.name);

                    //Add entry
                    localFileList.Add(
                        new FileFolderInfo()
                    {
                        GroupId    = group.id,
                        FolderId   = currentFolder.FileFolder.id,
                        FileFolder = fileItem,
                        Path       = path,
                        SyncFolder = false
                    }
                        );
                }
            }

            fileFolderList.AddRange(localFileList);

            return(fileFolderList);
        }
Ejemplo n.º 3
0
        public async Task SyncANewUserGroupAsync(string p1, string p2, string p3)
        {
            var ticket = Session.GetTikect();

            if (string.IsNullOrWhiteSpace(ticket))
            {
                return;
            }

            var group = new UserGroup()
            {
                id = p1, name = p2
            };
            var syncDirectory = ConfigurationManager.GetValue(Resources.SyncDirectoryPathKey);

            if (string.IsNullOrWhiteSpace(syncDirectory))
            {
                using (var syncNewUserGroup = new SyncNewUserGroupView(ticket, group))
                {
                    if (syncNewUserGroup.ShowDialog() == DialogResult.OK)
                    {
                        syncDirectory = syncNewUserGroup.SyncDirectory;
                    }
                    else
                    {
                        return;
                    }
                }
            }

            if (SyncTableManager.GetByGroupId(p3) != null)
            {
                return;
            }

            var directory          = string.Format("{0}\\{1}", syncDirectory, group.name);
            var fileFolderInfoList = new List <FileFolderInfo>();
            var fileFolderInfo     = new FileFolderInfo()
            {
                GroupId    = group.id,
                Path       = directory,
                SyncFolder = true
            };

            fileFolderInfoList.Add(fileFolderInfo);

            using (var syncProgress = new SyncProgressView())
            {
                if (syncProgress.SyncNewUserGroup(ticket, directory, group))
                {
                    fileFolderInfoList.AddRange(syncProgress.FileFolderList);
                }
            }

            //Detect the synchronizer object state
            if (_syncing || _synchronizer.Paused)
            {
                _synchronizer.Synchronize(fileFolderInfoList);
            }
            else
            {
                await _synchronizer.SynchronizeAsync(ticket, directory, fileFolderInfoList);
            }

            WatchingPath(syncDirectory);
        }