113 lines
3.6 KiB
C#
113 lines
3.6 KiB
C#
//using Microsoft.AspNetCore.Http;
|
|
|
|
using adas_core.Application.Services.Interfaces;
|
|
using adas_core.Domain.Enums;
|
|
using adas_core.Domain.Models.AppSettings;
|
|
using adas_core.Domain.Models.DTO;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.Logging;
|
|
using Microsoft.Extensions.Options;
|
|
using Serilog;
|
|
|
|
namespace adas_core.Application.Services;
|
|
|
|
public class FileService : IFileService
|
|
{
|
|
private readonly string? _assetsDirectory;
|
|
|
|
private readonly ILogger<FileService> _logger;
|
|
private readonly string? _updateDirectory;
|
|
|
|
public FileService(
|
|
IOptions<ApiSettings> apiSettings,
|
|
ILogger<FileService> logger
|
|
)
|
|
{
|
|
_logger = logger;
|
|
|
|
if (apiSettings.Value.PathUpdateFiles != null)
|
|
_updateDirectory = Path.Combine(apiSettings.Value.PathUpdateFiles);
|
|
if (apiSettings.Value.PathToDisplayAssets != null)
|
|
_assetsDirectory = Path.Combine(apiSettings.Value.PathToDisplayAssets);
|
|
}
|
|
|
|
|
|
public async Task<bool> CopyUpdateFiles(ICollection<IFormFile> files)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(_updateDirectory)) return false;
|
|
|
|
foreach (var file in files)
|
|
{
|
|
await using var stream = new FileStream(Path.Combine(_updateDirectory, file.FileName), FileMode.Create);
|
|
await file.CopyToAsync(stream);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public async Task<bool> UploadAssetFiles(ICollection<IFormFile> files, FileEnum.AssetTheme themeParse)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(_assetsDirectory)) return false;
|
|
var directoryInfo = new DirectoryInfo(Path.Combine(_assetsDirectory, themeParse.ToString()));
|
|
if (!directoryInfo.Exists) directoryInfo.Create();
|
|
foreach (var file in files)
|
|
{
|
|
await using var stream =
|
|
new FileStream(Path.Combine(_assetsDirectory, themeParse.ToString(), file.FileName), FileMode.Create);
|
|
await file.CopyToAsync(stream);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public List<AssetDto> GetAllAssetFile(FileEnum.AssetTheme themeParse)
|
|
{
|
|
try
|
|
{
|
|
if (string.IsNullOrWhiteSpace(_assetsDirectory)) return [];
|
|
var listToReturn = new List<AssetDto>();
|
|
var directoryInfo = new DirectoryInfo(Path.Combine(_assetsDirectory, themeParse.ToString()));
|
|
|
|
if (!directoryInfo.Exists) directoryInfo.Create();
|
|
|
|
var files = directoryInfo.GetFiles(); // Obtener todos los archivos en el directorio
|
|
foreach (var file in files)
|
|
{
|
|
var assetDto = new AssetDto
|
|
{
|
|
Name = file.Name,
|
|
Extension = file.Extension,
|
|
Path = file.FullName // Obtener la ruta completa del archivo
|
|
};
|
|
listToReturn.Add(assetDto);
|
|
}
|
|
|
|
return listToReturn;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
_logger.LogError("Error while retrieving assets: {eMessage} {eStackTrace}", e.Message, e.StackTrace);
|
|
return [];
|
|
}
|
|
}
|
|
|
|
public List<string> GetFilesInDirectory(string directoryPath)
|
|
{
|
|
List<string> fileList = [];
|
|
|
|
try
|
|
{
|
|
if (Directory.Exists(directoryPath))
|
|
// Obtiene todos los archivos en el directorio
|
|
fileList.AddRange(Directory.GetFiles(directoryPath));
|
|
else
|
|
Log.Warning("La ruta proporcionada no existe: {directoryPath}", directoryPath);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error("Ocurrió un error al buscar archivos: {exMessage}", ex.Message);
|
|
}
|
|
|
|
return fileList;
|
|
}
|
|
} |