using AutoMapper; using Azure.Storage.Blobs; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.StaticFiles; using MTWorkHR.Application.Models; using MTWorkHR.Application.Services.Interfaces; using MTWorkHR.Core.Global; using System.Net.Http.Headers; namespace MTWorkHR.Application.Services { public class BlobFileService : IFileService { // private readonly AppSettingsConfiguration settings; private const string ContainerName = "blobcontainer"; public const string SuccessMessageKey = "SuccessMessage"; public const string ErrorMessageKey = "ErrorMessage"; private readonly BlobServiceClient _blobServiceClient; private readonly BlobContainerClient _containerClient; public BlobFileService(BlobServiceClient blobServiceClient) { _blobServiceClient = blobServiceClient; _containerClient = _blobServiceClient.GetBlobContainerClient(ContainerName); _containerClient.CreateIfNotExists(); } public async Task UploadFile(IFormFile file) { try { var blobClient = _containerClient.GetBlobClient(file.FileName); var status = await blobClient.UploadAsync(file.OpenReadStream(), true); //if(status.Value == "201") return blobClient.Uri.AbsoluteUri; } catch (Exception ex) { return ""; } } public async Task> UploadFiles(List files) { List msgs = new List(); foreach (var formFile in files) { msgs.Add(await UploadFile(formFile)); } return msgs; } public async Task> UploadFile2(IFormFile file) { try { var blobClient = _containerClient.GetBlobClient(file.FileName); var status = await blobClient.UploadAsync(file.OpenReadStream(), true); return new Tuple(true, "");// = "File uploaded successfully."; } catch (Exception ex) { return new Tuple(false, ex.Message); } } public async Task>> UploadFiles2(List files) { List> msgs = new List>(); foreach (var formFile in files) { msgs.Add( await UploadFile2(formFile)); } return msgs; } public async Task Delete(string fileName) { try { var blobClient = _containerClient.GetBlobClient(fileName); await blobClient.DeleteIfExistsAsync(); return true; } catch (Exception ex) { return false; } } public void CopyFileToCloud(ref List attachments) { foreach(var attach in attachments) { if (attach.FileData != null) { var resPath = UploadFile(attach.FileData).Result; if (resPath != "") attach.FilePath = resPath; } } } public bool CopyFileToActualFolder(string FileName) { throw new NotImplementedException(); } public bool DeleteFileFromTempFolder(string FileName) { throw new NotImplementedException(); } public string GetTempAttachmentPath() { throw new NotImplementedException(); } public string GetActualAttachmentPath() { throw new NotImplementedException(); } public Task> GetFileDownloadInfo(string fileUrl) { throw new NotImplementedException(); } public Task CopyFileToActualFolder(List attachments) { throw new NotImplementedException(); } } }