diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/CreateBugSection/CreateBugSectionCommandHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/CreateBugSection/CreateBugSectionCommandHandler.cs index e350f507..55bd0ef5 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/CreateBugSection/CreateBugSectionCommandHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Commands/CreateBugSection/CreateBugSectionCommandHandler.cs @@ -18,19 +18,17 @@ public class CreateBugSectionCommandHandler : IBaseCommandHandler Handle(CreateBugSectionCommand request, CancellationToken cancellationToken) @@ -57,65 +55,17 @@ public class CreateBugSectionCommandHandler : IBaseCommandHandler maxFileSize) - return OperationResult.Failure("حجم فایل بیش از حد مجاز است (حداکثر 100MB)"); - - var fileType = DetectFileType(file.ContentType, Path.GetExtension(file.FileName)); - - var uploadedFile = new UploadedFile( - originalFileName: file.FileName, - fileSizeBytes: file.Length, - mimeType: file.ContentType, - fileType: fileType, - category: FileCategory.TaskChatMessage, - uploadedByUserId: currentUserId, - storageProvider: StorageProvider.LocalFileSystem + var uploadedFile = await _fileUploadService.UploadFileAsync + ( + file, + FileCategory.BugSection, + currentUserId ); - - await _uploadedFileRepository.AddAsync(uploadedFile); - - - try + if (!uploadedFile.IsSuccess) { - using var stream = file.OpenReadStream(); - var uploadResult = await _fileStorageService.UploadAsync( - stream, - uploadedFile.UniqueFileName, - "TaskChatMessage" - ); - - uploadedFile.CompleteUpload(uploadResult.StoragePath, uploadResult.StorageUrl); - - if (fileType == FileType.Image) - { - var dimensions = await _thumbnailService.GetImageDimensionsAsync(uploadResult.StoragePath); - if (dimensions.HasValue) - { - uploadedFile.SetImageDimensions(dimensions.Value.Width, dimensions.Value.Height); - } - - var thumbnail = await _thumbnailService - .GenerateImageThumbnailAsync(uploadResult.StoragePath, category: "TaskChatMessage"); - if (thumbnail.HasValue) - { - uploadedFile.SetThumbnail(thumbnail.Value.ThumbnailUrl); - } - } - - await _uploadedFileRepository.UpdateAsync(uploadedFile); - - + return OperationResult.Failure(uploadedFile.ErrorMessage ?? "خطا در آپلود فایل"); } - catch (Exception ex) - { - await _uploadedFileRepository.DeleteAsync(uploadedFile); - - - return OperationResult.ValidationError($"خطا در آپلود فایل: {ex.Message}"); - } - - bug.AddDocument(new BugDocument(uploadedFile.Id)); + bug.AddDocument(new BugDocument(uploadedFile.FileId!.Value)); } } @@ -124,22 +74,7 @@ public class CreateBugSectionCommandHandler : IBaseCommandHandler Files) : IBaseCommand; diff --git a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetBugModalDetails/GetBugModalDetailsQueryHandler.cs b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetBugModalDetails/GetBugModalDetailsQueryHandler.cs index 6f5ef492..c3340ce7 100644 --- a/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetBugModalDetails/GetBugModalDetailsQueryHandler.cs +++ b/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Projects/Queries/GetBugModalDetails/GetBugModalDetailsQueryHandler.cs @@ -15,15 +15,15 @@ public class GetBugModalDetailsQueryHandler : IBaseQueryHandler> Handle(GetBugModalDetailsQuery request, CancellationToken cancellationToken) { - var projectTask =await _context.ProjectTasks.FirstOrDefaultAsync(x=>x.Id == request.TaskId); + var projectTask =await _context.ProjectTasks.Include(ph=>ph.Phase).ThenInclude(p=>p.Project).FirstOrDefaultAsync(x=>x.Id == request.TaskId); if(projectTask == null) - return OperationResult.NotFound("کاربر یافت نشد"); + return OperationResult.NotFound("بخش یافت نشد"); - var response = new GetBugModalDetailsResponse(projectTask.Name); + var response = new GetBugModalDetailsResponse(projectTask.Name,projectTask.Phase.Name, projectTask.Phase.Project.Name); return OperationResult.Success(response); } } public record GetBugModalDetailsQuery(Guid TaskId) : IBaseQuery; -public record GetBugModalDetailsResponse(string Name); \ No newline at end of file +public record GetBugModalDetailsResponse(string TaskName, string PhaseName, string ProjectName); \ No newline at end of file diff --git a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/FileManagementAgg/Enums/FileCategory.cs b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/FileManagementAgg/Enums/FileCategory.cs index 25e7c3f6..3bb774d5 100644 --- a/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/FileManagementAgg/Enums/FileCategory.cs +++ b/ProgramManager/src/Domain/GozareshgirProgramManager.Domain/FileManagementAgg/Enums/FileCategory.cs @@ -10,6 +10,7 @@ public enum FileCategory ProjectDocument = 3, // مستندات پروژه UserProfilePhoto = 4, // عکس پروفایل کاربر Report = 5, // گزارش - Other = 6 // سایر + Other = 6, // سایر + BugSection = 7, // تسک باگ } diff --git a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Services/FileManagement/FileUploadService.cs b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Services/FileManagement/FileUploadService.cs index ec50de7e..1a97fe71 100644 --- a/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Services/FileManagement/FileUploadService.cs +++ b/ProgramManager/src/Infrastructure/GozareshgirProgramManager.Infrastructure/Services/FileManagement/FileUploadService.cs @@ -95,7 +95,7 @@ public class FileUploadService : IFileUploadService await _fileRepository.SaveChangesAsync(); // آپلود فایل به استوریج - var categoryFolder = GetCategoryFolderName(category); + var categoryFolder = category.ToString(); var uploadResult = await _fileStorageService.UploadAsync( fileStream, uploadedFile.UniqueFileName, @@ -228,20 +228,5 @@ public class FileUploadService : IFileUploadService return FileType.Document; } - /// - /// دریافت نام پوشه بر اساس دسته‌بندی - /// - private string GetCategoryFolderName(FileCategory category) - { - return category switch - { - FileCategory.TaskChatMessage => "TaskChatMessage", - FileCategory.TaskAttachment => "TaskAttachment", - FileCategory.ProjectDocument => "ProjectDocument", - FileCategory.UserProfilePhoto => "UserProfilePhoto", - FileCategory.Report => "Report", - _ => "Other" - }; - } }