private string GetContainerNameByUploadType(DiscussionPostAttachmentType DocumentTypeToRemove)
        {
            string result = string.Empty;

            switch (DocumentTypeToRemove)
            {
            case DiscussionPostAttachmentType.Template:
                result = "templates";
                break;

            case DiscussionPostAttachmentType.Document:
                result = "documents";
                break;

            case DiscussionPostAttachmentType.External:
                result = "discourseexternaldocuments";
                break;

            case DiscussionPostAttachmentType.Form:
                result = "templates";
                break;

            default:
                break;
            }
            return(result);
        }
        public bool RemoveFile(TenantUserSession tenantUserSession, long id, DiscussionPostAttachmentType DocumentTypeToRemove, CancellationToken cancellationToken, out Exception exception)
        {
            var result = false;

            exception = null;
            try
            {
                if (id <= 0)
                {
                    throw (new Exception("Unable to find the following request"));
                }
                string containerName = GetContainerNameByUploadType(DocumentTypeToRemove);
                if (!string.IsNullOrEmpty(containerName))
                {
                    var connectionString = tenantUserSession.Tenant.StorageConnectionStringPrimary;
                    var account          = CloudStorageAccount.Parse(connectionString);
                    var client           = account.CreateCloudBlobClient();
                    var container        = client.GetContainerReference(containerName);
                    container.CreateIfNotExists();
                    container.SetPermissions(new BlobContainerPermissions {
                        PublicAccess = BlobContainerPublicAccessType.Off,
                    });
                    var Blob    = container.GetBlockBlobReference(id.ToString() + "." + GlobalConstants.FileExtensionCloud);
                    var running = true;
                    var watch   = System.Diagnostics.Stopwatch.StartNew();
                    var task    = Blob.DeleteIfExistsAsync(cancellationToken);
                    do
                    {
                        switch (task.Status)
                        {
                        case TaskStatus.Canceled:
                        case TaskStatus.Faulted:
                        case TaskStatus.RanToCompletion:
                        { running = false; break; }
                        }

                        Thread.Sleep(TimeSpan.FromSeconds(1));
                        cancellationToken.ThrowIfCancellationRequested();
                    }while (running);

                    switch (task.Status)
                    {
                    case TaskStatus.Faulted:
                    case TaskStatus.Canceled:
                    {
                        running = false;
                        throw (task.Exception ?? new Exception("The delete task encountered an unknown exception."));
                    }
                    }

                    result = true;
                }
            }
            catch (Exception e)
            {
                exception = e;
            }
            return(result);
        }