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 }; } }