Files
2026-03-11 11:18:25 -05:00

73 lines
2.2 KiB
C#

using System;
using Microsoft.Extensions.Options;
using Azure.Storage.Blobs;
using Landmark.OLA.Application.Configuration;
using Landmark.OLA.Models.Loan;
namespace Landmark.OLA.Application.DataAccess
{
public class BlobStorageAccess : IBlobStorageAccess
{
readonly BlobServiceClient _blobServiceClient;
readonly string _containerName;
readonly BlobContainerClient _containerClient;
readonly BlobStorageConnectionSettings _settings;
public BlobStorageAccess(IOptions<BlobStorageConnectionSettings> settings)
{
_settings = settings.Value;
_blobServiceClient = new BlobServiceClient($"AccountName={_settings.AccountName};AccountKey={_settings.AccountKey}");
_containerName = "documents";
_containerClient = _blobServiceClient.GetBlobContainerClient(_containerName);
}
public byte[] GetBlobAsBytes(LoanApplicationFile file)
{
if (file == null)
{
return [];
}
var blob = _containerClient.GetBlobClient(file.GetBlobPath());
var fileContent = blob.DownloadContent();
var fileBytes = fileContent.Value.Content.ToArray();
return fileBytes;
}
public string GetBlobAsBase64(LoanApplicationFile file)
{
var fileBytes = GetBlobAsBytes(file);
return Convert.ToBase64String(fileBytes);
}
public bool SaveBlob(LoanApplicationFile file, byte[] fileBytes)
{
if(file == null || fileBytes == null || fileBytes.Length == 0)
{
return false;
}
BlobClient blobClient = _containerClient.GetBlobClient(file.GetBlobPath());
blobClient.Upload(new BinaryData(fileBytes));
blobClient.SetMetadata(file.GetMetadata());
return true;
}
public bool DeleteBlob(LoanApplicationFile file)
{
if (file == null)
{
return false;
}
BlobClient blobClient = _containerClient.GetBlobClient(file.GetBlobPath());
return blobClient.DeleteIfExists();
}
}
}