using GozareshgirProgramManager.Domain.FileManagementAgg.Enums;
using Microsoft.AspNetCore.Http;
namespace GozareshgirProgramManager.Application.Services.FileManagement;
///
/// سرویس آپلود و مدیریت کامل فایل
/// این سرویس تمام مراحل آپلود، ذخیره، تولید thumbnail و... را انجام میدهد
///
public interface IFileUploadService
{
///
/// آپلود فایل با تمام مراحل پردازش
///
/// فایل برای آپلود
/// دستهبندی فایل
/// شناسه کاربر آپلودکننده
/// حداکثر حجم مجاز فایل (پیشفرض: 100MB)
/// شناسه فایل آپلود شده یا null در صورت خطا
Task UploadFileAsync(
IFormFile file,
FileCategory category,
long uploadedByUserId,
long maxFileSizeBytes = 100 * 1024 * 1024);
///
/// آپلود فایل با Stream
///
Task UploadFileFromStreamAsync(
Stream fileStream,
string fileName,
string contentType,
FileCategory category,
long uploadedByUserId,
long maxFileSizeBytes = 100 * 1024 * 1024);
}
///
/// نتیجه عملیات آپلود فایل
///
public class FileUploadResult
{
public bool IsSuccess { get; set; }
public Guid? FileId { get; set; }
public string? ErrorMessage { get; set; }
public string? StorageUrl { get; set; }
public string? ThumbnailUrl { get; set; }
public static FileUploadResult Success(Guid fileId, string storageUrl, string? thumbnailUrl = null)
{
return new FileUploadResult
{
IsSuccess = true,
FileId = fileId,
StorageUrl = storageUrl,
ThumbnailUrl = thumbnailUrl
};
}
public static FileUploadResult Failed(string errorMessage)
{
return new FileUploadResult
{
IsSuccess = false,
ErrorMessage = errorMessage
};
}
}