public async Task <DeleteFilesResult> Handle(DeleteFilesCommand request, CancellationToken cancellationToken) { DeleteFilesResult result = new DeleteFilesResult(); var response = await _fileMngClient.GetFilesToDeleteAsync(new gGetFilesToDeleteRequest(), cancellationToken : cancellationToken); if (response == null) { result.ErrorContent = new ErrorContent("Unknown error occured while waiting for files list", ErrorOrigin.Server); return(result); } if (response.Status.Status != Protos.RequestStatus.Success) { result.ErrorContent = new ErrorContent(response.Status.Message, ErrorOrigin.Server); return(result); } if (!response.FilesItem.Any()) { // No files to delete for now return(result); } // Delete files from disk foreach (var file in response.FilesItem) { string folderPath = Path.Combine(_uploadOpt.UploadPath, file.UserId, file.Id); if (Directory.Exists(folderPath)) { Directory.Delete(folderPath, true); } } // Request to delete files from db gDeleteFilesRequest delRequest = new gDeleteFilesRequest(); delRequest.FilesId.Add(response.FilesItem.Select(s => s.Id)); var deleteResponse = await _fileMngClient.DeleteFilesFromDbAsync(delRequest, cancellationToken : cancellationToken); if (deleteResponse == null) { result.ErrorContent = new ErrorContent("Error occured while removing files from db", ErrorOrigin.Server); return(result); } if (deleteResponse.Status.Status != Protos.RequestStatus.Success) { result.ErrorContent = new ErrorContent(deleteResponse.Status.Message, ErrorOrigin.Server); return(result); } result.Files = response.FilesItem; return(result); }