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); }
/// <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); }
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); }
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); }
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)); }
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)); }