Exemple #1
0
        public DocumentFolderResponse Create(DocumentFolderViewModel DocumentFolder)
        {
            DocumentFolderResponse response = new DocumentFolderResponse();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                SqliteCommand insertCommand = db.CreateCommand();
                insertCommand.CommandText = SqlCommandInsertPart;

                try
                {
                    insertCommand = AddCreateParameters(insertCommand, DocumentFolder);
                    insertCommand.ExecuteNonQuery();
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage = error.Message;
                    response.Success        = false;
                    response.Message        = error.Message;
                    return(response);
                }
                db.Close();

                response.Success = true;
                return(response);
            }
        }
Exemple #2
0
        public DocumentFolderListResponse GetDocumentFolders(int companyId, DocumentFolderViewModel searchObject, bool initialDisplay = false)
        {
            DocumentFolderListResponse     response = new DocumentFolderListResponse();
            List <DocumentFolderViewModel> folders  = new List <DocumentFolderViewModel>();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                try
                {
                    SqliteCommand selectCommand;
                    if (searchObject.Search_ShouldLoadSubDirectories)
                    {
                        selectCommand = new SqliteCommand(
                            SqlCommandSelectPart +
                            "FROM DocumentFolders " +
                            "WHERE (@FolderName IS NULL OR @FolderName = '' OR Name LIKE @FolderName) " +
                            "AND (@ParentFolderId IS NULL OR @ParentFolderId = '' OR ParentFolderId = @ParentFolderId) " +
                            "AND CompanyId = @CompanyId " +
                            "ORDER BY Name ASC ", db);
                        selectCommand.Parameters.AddWithValue("@ParentFolderId", ((object)searchObject?.Search_ParentId ?? DBNull.Value));
                    }
                    else
                    {
                        selectCommand = new SqliteCommand(
                            SqlCommandSelectPart +
                            "FROM DocumentFolders " +
                            "WHERE (@FolderName IS NULL OR @FolderName = '' OR Name LIKE @FolderName) " +
                            "AND CompanyId = @CompanyId " +
                            "ORDER BY Name ASC ", db);
                    }

                    selectCommand.Parameters.AddWithValue("@FolderName", ((object)searchObject.Search_Name) != null ? "%" + searchObject.Search_Name + "%" : "");
                    selectCommand.Parameters.AddWithValue("@CompanyId", companyId);

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    while (query.Read())
                    {
                        DocumentFolderViewModel dbEntry = Read(query);
                        folders.Add(dbEntry);
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage  = error.Message;
                    response.Success         = false;
                    response.Message         = error.Message;
                    response.DocumentFolders = new List <DocumentFolderViewModel>();
                    return(response);
                }
                db.Close();
            }
            response.Success         = true;
            response.DocumentFolders = folders;
            return(response);
        }
Exemple #3
0
        public async Task <IActionResult> UpdateFolder(DocumentFolderViewModel documentFolder)
        {
            var invalidChars = Path.GetInvalidFileNameChars();

            string validFolderName = new string(documentFolder.FolderName
                                                .Where(x => !invalidChars.Contains(x))
                                                .ToArray());
            string oldValidFolderName = new string(documentFolder.OldFolderName
                                                   .Where(x => !invalidChars.Contains(x))
                                                   .ToArray());

            if (ModelState.IsValid)
            {
                try
                {
                    //string root = _hostingEnv.WebRootPath + "\\UploadFiles\\";
                    string root    = _networkDocPath;
                    string oldPath = root + await _unitOfWork.Documents.GetCurrentPath(documentFolder.ParentFolderId) +
                                     "\\" + oldValidFolderName;

                    string newPath = root + await _unitOfWork.Documents.GetCurrentPath(documentFolder.ParentFolderId) +
                                     "\\" + validFolderName;

                    if (Directory.Exists(oldPath))
                    {
                        Directory.Move(oldPath, newPath); //rename folder
                    }
                    else
                    {
                        Directory.CreateDirectory(newPath);
                    }

                    DocumentFolder updatedFolder = new DocumentFolder
                    {
                        Name             = documentFolder.FolderName.TrimEnd(),
                        ParentFolderId   = documentFolder.ParentFolderId,
                        CreateUserId     = _userSession.Id,
                        ModifiedDateTime = DateTime.Now,
                        CreateDate       = DateTime.Now,
                        FolderId         = Convert.ToInt32(documentFolder.FolderId),
                        FolderStatusId   = documentFolder.FolderStatusId
                    };

                    _unitOfWork.Documents.UpdateFolder(updatedFolder);
                    await _unitOfWork.CompleteAsync();

                    return(Redirect(Request.Headers["Referer"].ToString()));
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(View(documentFolder));
        }
Exemple #4
0
        private void btnRecalculateIndexes_Click(object sender, RoutedEventArgs e)
        {
            Thread td = new Thread(() =>
            {
                DocumentIndexingButtonEnabled = false;

                try
                {
                    DocumentIndexingButtonContent = " Priprema ... ";
                    IDocumentFolderService documentFolderService = DependencyResolver.Kernel.Get <IDocumentFolderService>();
                    IDocumentFileService documentFileService     = DependencyResolver.Kernel.Get <IDocumentFileService>();

                    var clearResponse = documentFolderService.Clear(MainWindow.CurrentCompanyId);

                    if (clearResponse.Success)
                    {
                        var clearFileResponse = documentFileService.Clear(MainWindow.CurrentCompanyId);
                        if (clearFileResponse.Success)
                        {
                            var azureClient = new AzureDataClient();
                            var rootFolder  = new DocumentFolderViewModel()
                            {
                                Identifier = Guid.NewGuid(),

                                Name    = "Documents",
                                Path    = azureClient.rootDirectory.Uri.LocalPath,
                                Company = new CompanyViewModel()
                                {
                                    Id = MainWindow.CurrentCompanyId
                                },
                                CreatedBy = new UserViewModel()
                                {
                                    Id = MainWindow.CurrentUserId
                                }
                            };
                            azureClient.IndexingDirectoryChanged += delegate(string currentPath, int totalIndexed)
                            {
                                DocumentIndexingButtonContent = $" Indeksirano foldera: {totalIndexed}. Trenutni folder: {currentPath}";
                            };
                            azureClient.ResetIndexNumber();
                            azureClient.GetDocumentFolders(documentFolderService, documentFileService, rootFolder, true);
                        }
                    }
                    DocumentIndexingButtonEnabled = true;
                    DocumentIndexingButtonContent = " Indeksiranje dokumenata ";
                } catch (Exception ex)
                {
                    MainWindow.ErrorMessage       = ex.Message;
                    DocumentIndexingButtonEnabled = true;
                }
            });

            td.IsBackground = true;
            td.Start();
        }
        public async Task <IViewComponentResult> InvokeAsync(int folderId)
        {
            var folder = await _unitOfWork.Documents.GetFolderByIdAsync(folderId);

            var docFolder = new DocumentFolderViewModel();

            docFolder.FolderName     = folder.Name;
            docFolder.OldFolderName  = folder.Name;
            docFolder.FolderId       = folder.FolderId;
            docFolder.ParentFolderId = folder.ParentFolderId;
            docFolder.FolderStatusId = Convert.ToInt32(folder.FolderStatusId);
            return(View("EditFolder", docFolder));
        }
Exemple #6
0
        public async Task <IActionResult> Create(DocumentFolderViewModel documentFolder)
        {
            var invalidChars = Path.GetInvalidFileNameChars();

            if (ModelState.IsValid)
            {
                string validFolderName = new string(documentFolder.FolderName
                                                    .Where(x => !invalidChars.Contains(x))
                                                    .ToArray());
                try
                {
                    string path = _networkDocPath + (await _unitOfWork.Documents.GetCurrentPath(documentFolder.ParentFolderId) + @"\" + validFolderName);
                    //string path = _hostingEnv.WebRootPath + "\\UploadFiles\\" +
                    //               await _unitOfWork.Documents.GetCurrentPath(documentFolder.ParentFolderId) +
                    //            "\\" + validFolderName;

                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
                    DocumentFolder newFolder = new DocumentFolder();
                    newFolder.Name             = documentFolder.FolderName.TrimEnd();
                    newFolder.ParentFolderId   = documentFolder.ParentFolderId;
                    newFolder.CreateUserId     = _userSession.Id;
                    newFolder.ModifiedDateTime = DateTime.Now;
                    newFolder.CreateDate       = DateTime.Now;
                    newFolder.FolderStatusId   = await _unitOfWork.Documents.GetDocumentStatusIdAsync("Active");


                    await _unitOfWork.Documents.CreateFolder(newFolder);

                    await _unitOfWork.CompleteAsync();

                    if (newFolder.ParentFolderId != null)
                    {
                        return(RedirectToAction("Details", "Documents", new { id = newFolder.ParentFolderId }));
                    }
                    else
                    {
                        return(Redirect(Request.Headers["Referer"].ToString()));
                    }
                }
                catch (Exception)
                {
                    throw;
                }
            }
            return(View(documentFolder));
        }
Exemple #7
0
        public DocumentFolderResponse Create(DocumentFolderViewModel viewModel)
        {
            DocumentFolderResponse response = new DocumentFolderResponse();

            try
            {
                response.DocumentFolder = unitOfWork.GetDocumentFolderRepository().Create(viewModel.ConvertToDocumentFolder())
                                          ?.ConvertToDocumentFolderViewModel();
                response.Success = true;
            } catch (Exception ex)
            {
                response.Success = false;
                response.Message = ex.Message;
            }

            return(response);
        }
        void GetDirectoryTree(DocumentFolderViewModel parent)
        {
            List <DocumentFolderViewModel> directories;

            try
            {
                var response = new DocumentFolderSQLiteRepository().GetDocumentFolders(MainWindow.CurrentCompanyId, FolderFilterObject, false);

                directories = response?.DocumentFolders ?? new List <DocumentFolderViewModel>();
            }
            catch (Exception ex)
            {
                directories = new List <DocumentFolderViewModel>();
            }

            parent.SubDirectories = new ObservableCollection <DocumentFolderViewModel>(directories);
        }
Exemple #9
0
        public DocumentFolderResponse Delete(DocumentFolderViewModel toDelete)
        {
            DocumentFolderResponse response = new DocumentFolderResponse();

            try
            {
                response = WpfApiHandler.SendToApi <DocumentFolderViewModel, DocumentFolderResponse>(toDelete, "Delete");
            }
            catch (Exception ex)
            {
                response.DocumentFolder = new DocumentFolderViewModel();
                response.Success        = false;
                response.Message        = ex.Message;
            }

            return(response);
        }
        public IViewComponentResult Invoke()
        {
            var folder         = new DocumentFolderViewModel();
            var qsFolderId     = HttpContext.Request.Query["id"].ToString();
            int folderId       = 0;
            var folderIdString = qsFolderId != "" ? qsFolderId : HttpContext.Request.Path.ToString().Split('/').Last();


            Int32.TryParse(folderIdString, out folderId);
            //getID here in case searched by id
            if (folderId > 0)
            {
                folder.ParentFolderId = Convert.ToInt32(folderId);
            }

            return(View("CreateFolder", folder));
        }
Exemple #11
0
        private static DocumentFolderViewModel Read(SqliteDataReader query)
        {
            int counter = 0;
            DocumentFolderViewModel dbEntry = new DocumentFolderViewModel();

            dbEntry.Id         = SQLiteHelper.GetInt(query, ref counter);
            dbEntry.Identifier = SQLiteHelper.GetGuid(query, ref counter);
            dbEntry.Name       = SQLiteHelper.GetString(query, ref counter);
            dbEntry.Path       = SQLiteHelper.GetString(query, ref counter);

            dbEntry.ParentFolder = SQLiteHelper.GetDocumentFolder(query, ref counter);

            dbEntry.UpdatedAt = SQLiteHelper.GetDateTime(query, ref counter);
            dbEntry.CreatedBy = SQLiteHelper.GetCreatedBy(query, ref counter);
            dbEntry.Company   = SQLiteHelper.GetCompany(query, ref counter);
            return(dbEntry);
        }
Exemple #12
0
        public DocumentFolderResponse Delete(DocumentFolderViewModel toDelete)
        {
            DocumentFolderResponse response = new DocumentFolderResponse();

            try
            {
                response.DocumentFolder = unitOfWork.GetDocumentFolderRepository().Delete(toDelete?.Id ?? 0)
                                          ?.ConvertToDocumentFolderViewModel();
                response.Success = true;
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ex.Message;
            }

            return(response);
        }
Exemple #13
0
        public static DocumentFolderViewModel ConvertToDocumentFolderViewModelLite(this DocumentFolder DocumentFolder)
        {
            DocumentFolderViewModel DocumentFolderViewModel = new DocumentFolderViewModel()
            {
                Id         = DocumentFolder.Id,
                Identifier = DocumentFolder.Identifier,

                Name = DocumentFolder.Name,
                Path = DocumentFolder.Path,

                IsActive = DocumentFolder.Active,

                UpdatedAt = DocumentFolder.UpdatedAt,
                CreatedAt = DocumentFolder.CreatedAt
            };


            return(DocumentFolderViewModel);
        }
        public JsonResult Delete([FromBody] DocumentFolderViewModel c)
        {
            DocumentFolderResponse response = new DocumentFolderResponse();

            try
            {
                response = this.documentFolderService.Delete(c);
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ex.Message;
                Console.WriteLine(ex.Message);
            }

            return(Json(response, new Newtonsoft.Json.JsonSerializerSettings()
            {
                Formatting = Newtonsoft.Json.Formatting.Indented
            }));
        }
Exemple #15
0
        private SqliteCommand AddCreateParameters(SqliteCommand insertCommand, DocumentFolderViewModel folder)
        {
            insertCommand.Parameters.AddWithValue("@ServerId", folder.Id);
            insertCommand.Parameters.AddWithValue("@Identifier", folder.Identifier);
            insertCommand.Parameters.AddWithValue("@Name", ((object)folder.Name) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@Path", ((object)folder.Path) ?? DBNull.Value);

            insertCommand.Parameters.AddWithValue("@ParentFolderId", ((object)folder.ParentFolder?.Id) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@ParentFolderIdentifier", ((object)folder.ParentFolder?.Identifier) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@ParentFolderName", ((object)folder.ParentFolder?.Name) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@ParentFolderPath", ((object)folder.ParentFolder?.Path) ?? DBNull.Value);

            insertCommand.Parameters.AddWithValue("@UpdatedAt", ((object)folder.UpdatedAt) ?? DBNull.Value);
            insertCommand.Parameters.AddWithValue("@CreatedById", MainWindow.CurrentUser.Id);
            insertCommand.Parameters.AddWithValue("@CreatedByName", MainWindow.CurrentUser.FirstName + " " + MainWindow.CurrentUser.LastName);
            insertCommand.Parameters.AddWithValue("@CompanyId", MainWindow.CurrentCompany.Id);
            insertCommand.Parameters.AddWithValue("@CompanyName", MainWindow.CurrentCompany.CompanyName);

            return(insertCommand);
        }
Exemple #16
0
        public DocumentFolderResponse GetDirectoryByPath(int companyId, string path)
        {
            DocumentFolderResponse  response = new DocumentFolderResponse();
            DocumentFolderViewModel folder   = null;

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                try
                {
                    SqliteCommand selectCommand = new SqliteCommand(
                        SqlCommandSelectPart +
                        "FROM DocumentFolders " +
                        "WHERE Path = @Path " +
                        "AND CompanyId = @CompanyId " +
                        "ORDER BY Name ASC ", db);

                    selectCommand.Parameters.AddWithValue("@Path", path);
                    selectCommand.Parameters.AddWithValue("@CompanyId", companyId);

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    if (query.Read())
                    {
                        folder = Read(query);
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage = error.Message;
                    response.Success        = false;
                    response.Message        = error.Message;
                    response.DocumentFolder = null;
                    return(response);
                }
                db.Close();
            }
            response.Success        = true;
            response.DocumentFolder = folder;
            return(response);
        }
Exemple #17
0
        public DocumentFolderListResponse GetRootFolder(int companyId)
        {
            DocumentFolderListResponse     response = new DocumentFolderListResponse();
            List <DocumentFolderViewModel> folders  = new List <DocumentFolderViewModel>();

            using (SqliteConnection db = new SqliteConnection("Filename=SirmiumERPGFC.db"))
            {
                db.Open();
                try
                {
                    SqliteCommand selectCommand = new SqliteCommand(
                        SqlCommandSelectPart +
                        "FROM DocumentFolders " +
                        "WHERE ParentFolderId IS NULL " +
                        "AND CompanyId = @CompanyId " +
                        "ORDER BY Name ASC ", db);

                    selectCommand.Parameters.AddWithValue("@CompanyId", companyId);

                    SqliteDataReader query = selectCommand.ExecuteReader();

                    while (query.Read())
                    {
                        DocumentFolderViewModel dbEntry = Read(query);
                        folders.Add(dbEntry);
                    }
                }
                catch (SqliteException error)
                {
                    MainWindow.ErrorMessage  = error.Message;
                    response.Success         = false;
                    response.Message         = error.Message;
                    response.DocumentFolders = new List <DocumentFolderViewModel>();
                    return(response);
                }
                db.Close();
            }
            response.Success         = true;
            response.DocumentFolders = folders;
            return(response);
        }
Exemple #18
0
        public static DocumentFolder ConvertToDocumentFolder(this DocumentFolderViewModel DocumentFolderViewModel)
        {
            DocumentFolder DocumentFolder = new DocumentFolder()
            {
                Id         = DocumentFolderViewModel.Id,
                Identifier = DocumentFolderViewModel.Identifier,

                Name = DocumentFolderViewModel.Name,
                Path = DocumentFolderViewModel.Path,

                ParentFolderId = DocumentFolderViewModel?.ParentFolder?.Id ?? null,

                CompanyId   = DocumentFolderViewModel.Company?.Id ?? null,
                CreatedById = DocumentFolderViewModel.CreatedBy?.Id ?? null,

                CreatedAt = DocumentFolderViewModel.CreatedAt,
                UpdatedAt = DocumentFolderViewModel.UpdatedAt
            };

            return(DocumentFolder);
        }
Exemple #19
0
        public static DocumentFolderViewModel ConvertToDocumentFolderViewModel(this DocumentFolder DocumentFolder)
        {
            DocumentFolderViewModel DocumentFolderViewModel = new DocumentFolderViewModel()
            {
                Id         = DocumentFolder.Id,
                Identifier = DocumentFolder.Identifier,

                Name = DocumentFolder.Name,
                Path = DocumentFolder.Path,

                ParentFolder = DocumentFolder?.ParentFolder?.ConvertToDocumentFolderViewModelLite(),

                IsActive = DocumentFolder.Active,

                Company   = DocumentFolder.Company?.ConvertToCompanyViewModelLite(),
                CreatedBy = DocumentFolder.CreatedBy?.ConvertToUserViewModelLite(),
                UpdatedAt = DocumentFolder.UpdatedAt,
                CreatedAt = DocumentFolder.CreatedAt
            };



            return(DocumentFolderViewModel);
        }
        private async void btnCreateFolder_Click(object sender, RoutedEventArgs e)
        {
            var result = await GetNewFolderName();

            NewFolderName = result;

            if (String.IsNullOrEmpty(NewFolderName))
            {
                MessageBox.Show("Naziv foldera ne moze biti prazan!");
                return;
            }

            string basePath = SelectedTreeItem?.Path;

            if (String.IsNullOrEmpty(basePath))
            {
                MessageBox.Show("Bazna putanja ne moze biti prazna!");
                return;
            }

            try
            {
                var parent = azureClient.GetDirectory(basePath);
                if (!parent.Exists())
                {
                    throw new Exception("Odabrani folder ne postoji!");
                }

                var childFolder = parent.GetDirectoryReference(NewFolderName);
                if (childFolder.Exists())
                {
                    throw new Exception("Folder sa zadatim imenom već postoji!");
                }

                childFolder.Create();

                var newDir = new DocumentFolderViewModel()
                {
                    Identifier   = Guid.NewGuid(),
                    ParentFolder = SelectedTreeItem,
                    Name         = NewFolderName,
                    Path         = childFolder.Uri.LocalPath,
                    CreatedAt    = DateTime.Now,
                    UpdatedAt    = DateTime.Now,
                    Company      = new ServiceInterfaces.ViewModels.Common.Companies.CompanyViewModel()
                    {
                        Id = MainWindow.CurrentCompanyId
                    },
                    CreatedBy = new ServiceInterfaces.ViewModels.Common.Identity.UserViewModel()
                    {
                        Id = MainWindow.CurrentUserId
                    }
                };

                var response = documentFolderService.Create(newDir);
                if (response.Success)
                {
                    newDir.Id = response?.DocumentFolder?.Id ?? 0;
                    new DocumentFolderSQLiteRepository().Sync(documentFolderService, ((done, toDo) => {
                        Debug.WriteLine($"Syncing folders: {done} out of {toDo}");
                    }));
                    SelectedTreeItem.SubDirectories.Add(newDir);
                    SelectedTreeItem.IsDirExpanded = true;
                    MainWindow.SuccessMessage      = "Folder je uspešno kreiran!";
                }
            }
            catch (Exception ex)
            {
                MainWindow.ErrorMessage = ex.Message;
            }

            NewFolderName = "";
        }
Exemple #21
0
        public void GetDocumentFolders(IDocumentFolderService service, IDocumentFileService fileService, DocumentFolderViewModel dir, bool recursive = false)
        {
            if (CancelOperation)
            {
                return;
            }

            if (dir != null)
            {
                CloudFileDirectory dirPath = GetDirectory(dir.Path);
                if (dirPath != null && dirPath.Exists())
                {
                    currentlyIndexedNumber++;
                    IndexingDirectoryChanged?.Invoke(dir.Path, currentlyIndexedNumber);

                    if (dir.Id < 1)
                    {
                        var response = service.Create(dir);
                        if (response.Success)
                        {
                            dir.Id = response?.DocumentFolder?.Id ?? 0;
                        }
                        else
                        {
                            dir.Id = -1;
                        }
                    }
                    if (dir.Id > 0)
                    {
                        dirPath.FetchAttributes();
                        var subFilesAndDirectories = dirPath.ListFilesAndDirectories();

                        var subFiles = subFilesAndDirectories.OfType <CloudFile>()
                                       .Select(x => new DocumentFileViewModel()
                        {
                            Identifier     = Guid.NewGuid(),
                            DocumentFolder = dir,
                            Name           = x.Name,
                            Path           = x.Uri.LocalPath,

                            Company = new ServiceInterfaces.ViewModels.Common.Companies.CompanyViewModel()
                            {
                                Id = MainWindow.CurrentCompanyId
                            },
                            CreatedBy = new ServiceInterfaces.ViewModels.Common.Identity.UserViewModel()
                            {
                                Id = MainWindow.CurrentUserId
                            }
                        })
                                       .ToList();
                        subFiles.ForEach(x => GetDocumentAttributes(x));

                        var fileResponse = fileService.SubmitList(subFiles);



                        var subDirectories = subFilesAndDirectories.OfType <CloudFileDirectory>()
                                             .Select(x => new DocumentFolderViewModel()
                        {
                            Path    = x.Uri.LocalPath, Name = x.Name, Identifier = Guid.NewGuid(), ParentFolder = dir,
                            Company = new ServiceInterfaces.ViewModels.Common.Companies.CompanyViewModel()
                            {
                                Id = MainWindow.CurrentCompanyId
                            },
                            CreatedBy = new ServiceInterfaces.ViewModels.Common.Identity.UserViewModel()
                            {
                                Id = MainWindow.CurrentUserId
                            }
                        })
                                             .ToList();

                        var response = service.SubmitList(subDirectories);
                        if (response.Success)
                        {
                            dir.SubDirectories = new ObservableCollection <DocumentFolderViewModel>(response?.DocumentFolders ?? new List <DocumentFolderViewModel>());

                            if (recursive)
                            {
                                foreach (var item in dir.SubDirectories)
                                {
                                    if (CancelOperation)
                                    {
                                        return;
                                    }

                                    GetDocumentFolders(service, fileService, item, recursive);
                                }
                            }
                        }
                    }
                }
            }
        }