//using Microsoft.AspNetCore.Http;

using adas_core.Domain.Enums;
using adas_core.Domain.Models.DTO;
using Microsoft.AspNetCore.Http;

namespace adas_core.Application.Services.Interfaces;

public interface IFileService
{
    /// <summary>
    /// Copies the provided update files to the appropriate location for processing or deployment.
    /// </summary>
    /// <param name="files">The collection of update files to be copied.</param>
    /// <returns>A task that represents the asynchronous operation. The task result contains a boolean value indicating whether the copy operation succeeded.</returns>
    Task<bool> CopyUpdateFiles(ICollection<IFormFile> files);
    /// <summary>
    /// Uploads the provided asset files categorized by the specified theme, returning a value indicating whether the operation completed successfully.
    /// </summary>
    /// <param name="files">The collection of uploaded form files to process and store as assets.</param>
    /// <param name="themeParse">The asset theme used to classify and organize the uploaded files.</param>
    /// <returns>A task that resolves to <c>true</c> if the asset files were uploaded successfully; otherwise, <c>false</c>.</returns>
    Task<bool> UploadAssetFiles(ICollection<IFormFile> files, FileEnum.AssetTheme themeParse);
    /// <summary>
    /// Retrieves all asset files for the specified asset theme as a list of asset data transfer objects.
    /// </summary>
    /// <param name="themeParse">The asset theme used to retrieve the corresponding assets.</param>
    /// <returns>A <see cref="List{AssetDto}"/> containing the asset data transfer objects for the specified theme.</returns>
    List<AssetDto> GetAllAssetFile(FileEnum.AssetTheme themeParse);

    /// <summary>
    /// Retrieves a list of file names from the specified directory path.
    /// </summary>
    /// <param name="directoryPath">The path of the directory from which to retrieve the files.</param>
    /// <returns>A list of strings representing the names of the files in the specified directory.</returns>
    List<string> GetFilesInDirectory(string directoryPath);
}