コード例 #1
0
        public static bool FileExists(this FileManagerClient _fileManagerClient, ILogger _logger, string entityName, string entityId, string folderName, string documentType, string fileName)
        {
            Contract.Requires(_fileManagerClient != null);
            var exists = false;

            try
            {
                // call the web service
                var request = new FolderFilesRequest
                {
                    DocumentType = documentType,
                    EntityId     = entityId,
                    EntityName   = entityName,
                    FolderName   = folderName
                };

                var result = _fileManagerClient.FolderFiles(request);

                if (result.ResultStatus == ResultStatus.Success)
                {
                    exists = result.Files.Any(f => f.Name == fileName);
                }
                else
                {
                    _logger.LogError($"ERROR in getting folder files for entity {entityName}");
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error getting SharePoint File List");
            }
            return(exists);
        }
コード例 #2
0
        /// <summary>
        /// Return the list of files in a given folder.
        /// </summary>
        /// <param name="entityId"></param>
        /// <param name="entityName"></param>
        /// <param name="documentType"></param>
        /// <returns></returns>
        public static async Task <List <FileSystemItem> > GetListFilesInFolder(string entityId, string entityName, string documentType, IDynamicsClient _dynamicsClient, FileManagerClient _fileManagerClient, ILogger _logger)
        {
            var fileSystemItemVMList = new List <FileSystemItem>();

            // 4-9-2020 - GW removed session check to resolve issue with PHS links not working.  Session checks occur further up the call stack.

            if (string.IsNullOrEmpty(entityId) || string.IsNullOrEmpty(entityName) || string.IsNullOrEmpty(documentType))
            {
                return(fileSystemItemVMList);
            }
            for (int i = 0; i < 3; i++)
            {
                try
                {
                    // call the web service
                    var request = new FolderFilesRequest
                    {
                        DocumentType = documentType,
                        EntityId     = entityId,
                        EntityName   = entityName,
                        FolderName   = await _dynamicsClient.GetFolderName(entityName, entityId)
                    };

                    var result = _fileManagerClient.FolderFiles(request);

                    if (result.ResultStatus == ResultStatus.Success)
                    {
                        // convert the results to the view model.
                        foreach (var fileDetails in result.Files)
                        {
                            var fileSystemItemVM = new FileSystemItem
                            {
                                // remove the document type text from file name
                                name = fileDetails.Name.Substring(fileDetails.Name.IndexOf("__") + 2),
                                // convert size from bytes (original) to KB
                                size = fileDetails.Size,
                                serverrelativeurl = fileDetails.ServerRelativeUrl,
                                //timelastmodified = fileDetails.TimeLastModified.ToDateTime(),
                                documenttype = fileDetails.DocumentType
                            };

                            fileSystemItemVMList.Add(fileSystemItemVM);
                        }

                        break;
                    }
                    else
                    {
                        _logger.LogError($"ERROR in getting folder files for entity {entityName}, entityId {entityId}, docuemnt type {documentType} ");
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Error getting SharePoint File List");
                }
            }
            return(fileSystemItemVMList);
        }
コード例 #3
0
        private async Task <List <ViewModels.FileSystemItem> > GetListFilesInFolder(string entityId, string entityName, string documentType)
        {
            List <ViewModels.FileSystemItem> fileSystemItemVMList = new List <ViewModels.FileSystemItem>();

            ValidateSession();


            if (string.IsNullOrEmpty(entityId) || string.IsNullOrEmpty(entityName) || string.IsNullOrEmpty(documentType))
            {
                return(fileSystemItemVMList);
            }

            try
            {
                // call the web service
                var request = new FolderFilesRequest()
                {
                    DocumentType = documentType,
                    EntityId     = entityId,
                    EntityName   = entityName,
                    FolderName   = await GetFolderName(entityName, entityId, _dynamicsClient)
                };

                var result = _fileManagerClient.FolderFiles(request);

                if (result.ResultStatus == ResultStatus.Success)
                {
                    // convert the results to the view model.
                    foreach (var fileDetails in result.Files)
                    {
                        ViewModels.FileSystemItem fileSystemItemVM = new ViewModels.FileSystemItem()
                        {
                            // remove the document type text from file name
                            name = fileDetails.Name.Substring(fileDetails.Name.IndexOf("__") + 2),
                            // convert size from bytes (original) to KB
                            size = fileDetails.Size,
                            serverrelativeurl = fileDetails.ServerRelativeUrl,
                            //timelastmodified = fileDetails.TimeLastModified.ToDateTime(),
                            documenttype = fileDetails.DocumentType
                        };

                        fileSystemItemVMList.Add(fileSystemItemVM);
                    }
                }
                else
                {
                    _logger.LogError($"ERROR in getting folder files for entity {entityName}, entityId {entityId}, docuemnt type {documentType} ");
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error getting SharePoint File List");
            }

            return(fileSystemItemVMList);
        }
コード例 #4
0
        public static List <Public.ViewModels.FileSystemItem> GetFileDetailsListInFolder(this FileManagerClient _fileManagerClient, ILogger _logger, string entityName, string entityId, string folderName)
        {
            List <Public.ViewModels.FileSystemItem> fileSystemItemVMList = new List <Public.ViewModels.FileSystemItem>();


            try
            {
                // call the web service
                var request = new FolderFilesRequest()
                {
                    DocumentType = "",
                    EntityId     = entityId,
                    EntityName   = entityName,
                    FolderName   = folderName
                };

                var result = _fileManagerClient.FolderFiles(request);

                if (result.ResultStatus == ResultStatus.Success)
                {
                    // convert the results to the view model.
                    foreach (var fileDetails in result.Files)
                    {
                        Public.ViewModels.FileSystemItem fileSystemItemVM = new Public.ViewModels.FileSystemItem()
                        {
                            // remove the document type text from file name
                            name = fileDetails.Name.Substring(fileDetails.Name.IndexOf("__") + 2),
                            // convert size from bytes (original) to KB
                            size = fileDetails.Size,
                            serverrelativeurl = fileDetails.ServerRelativeUrl,
                            //timelastmodified = fileDetails.TimeLastModified.ToDateTime(),
                            documenttype = fileDetails.DocumentType
                        };

                        fileSystemItemVMList.Add(fileSystemItemVM);
                    }
                }
                else
                {
                    _logger.LogError($"ERROR in getting folder files for entity {entityName}");
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Error getting SharePoint File List");
            }

            return(fileSystemItemVMList);
        }
コード例 #5
0
        public override Task <FolderFilesReply> FolderFiles(FolderFilesRequest request, ServerCallContext context)
        {
            var result = new FolderFilesReply();

            // Get the file details list in folder
            List <Interfaces.SharePointFileManager.FileDetailsList> fileDetailsList = null;
            SharePointFileManager _sharePointFileManager = new SharePointFileManager(_configuration);

            try
            {
                fileDetailsList = _sharePointFileManager.GetFileDetailsListInFolder(GetDocumentTemplateUrlPart(request.EntityName), request.FolderName, request.DocumentType).GetAwaiter().GetResult();
                if (fileDetailsList != null)

                {
                    // gRPC ensures that the collection has space to accept new data; no need to call a constructor
                    foreach (var item in fileDetailsList)
                    {
                        // Sharepoint API responds with dates in UTC format
                        var      utcFormat = DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal;
                        DateTime parsedCreateDate, parsedLastModified;
                        DateTime.TryParse(item.TimeCreated, CultureInfo.InvariantCulture, utcFormat, out parsedCreateDate);
                        DateTime.TryParse(item.TimeLastModified, CultureInfo.InvariantCulture, utcFormat, out parsedLastModified);

                        FileSystemItem newItem = new FileSystemItem()
                        {
                            DocumentType      = item.DocumentType,
                            Name              = item.Name,
                            ServerRelativeUrl = item.ServerRelativeUrl,
                            Size              = int.Parse(item.Length),
                            TimeCreated       = parsedCreateDate != null?Timestamp.FromDateTime(parsedCreateDate) : null,
                                                    TimeLastModified = parsedLastModified != null?Timestamp.FromDateTime(parsedLastModified) : null,
                        };

                        result.Files.Add(newItem);
                    }
                    result.ResultStatus = ResultStatus.Success;
                }
            }
            catch (SharePointRestException spre)
            {
                Log.Error(spre, "Error getting SharePoint File List");
                result.ResultStatus = ResultStatus.Fail;
                result.ErrorDetail  = "Error getting SharePoint File List";
            }

            return(Task.FromResult(result));
        }
コード例 #6
0
        public override Task <FolderFilesReply> FolderFiles(FolderFilesRequest request, ServerCallContext context)
        {
            var result = new FolderFilesReply();


            // Get the file details list in folder
            List <Interfaces.SharePointFileManager.FileDetailsList> fileDetailsList = null;
            SharePointFileManager _sharePointFileManager = new SharePointFileManager(_configuration);

            try
            {
                fileDetailsList = _sharePointFileManager.GetFileDetailsListInFolder(GetDocumentTemplateUrlPart(request.EntityName), request.FolderName, request.DocumentType).GetAwaiter().GetResult();
                if (fileDetailsList != null)

                {
                    // gRPC ensures that the collection has space to accept new data; no need to call a constructor
                    foreach (var item in fileDetailsList)
                    {
                        FileSystemItem newItem = new FileSystemItem()
                        {
                            DocumentType      = item.DocumentType,
                            Name              = item.Name,
                            ServerRelativeUrl = item.ServerRelativeUrl,
                            Size              = int.Parse(item.Length)
                        };

                        result.Files.Add(newItem);
                    }
                    result.ResultStatus = ResultStatus.Success;
                }
            }
            catch (SharePointRestException spre)
            {
                _logger.LogError(spre, "Error getting SharePoint File List");
                result.ResultStatus = ResultStatus.Fail;
                result.ErrorDetail  = "Error getting SharePoint File List";
            }

            return(Task.FromResult(result));
        }