From 31df6d843ad39ac810aa1d23e05014fe9880f22b Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Fri, 2 Jan 2026 01:19:11 +0330 Subject: [PATCH] feat: add FileUploadDto and image file handling to CreateManualPayment command and protobuf definitions --- .../CreateManualPaymentCommand.cs | 12 ++++ .../CreateManualPaymentCommandHandler.cs | 21 ++++++- .../Common/Mappings/ManualPaymentProfile.cs | 61 ++++++------------- ...ckOffice.BFF.ManualPayment.Protobuf.csproj | 2 +- .../Protos/manualpayment.proto | 8 +++ 5 files changed, 58 insertions(+), 46 deletions(-) diff --git a/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs b/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs index d436fa5..69b1e24 100644 --- a/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs +++ b/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommand.cs @@ -8,6 +8,18 @@ public class CreateManualPaymentCommand : IRequest + /// Image file data for FMS upload + /// + public FileUploadDto? ImageFile { get; set; } +} + +public class FileUploadDto +{ + public byte[] File { get; set; } = Array.Empty(); + public string FileName { get; set; } = string.Empty; + public string Mime { get; set; } = string.Empty; } public class CreateManualPaymentResponseDto diff --git a/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs b/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs index c413876..ecb791d 100644 --- a/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs +++ b/src/BackOffice.BFF.Application/ManualPaymentCQ/Commands/CreateManualPayment/CreateManualPaymentCommandHandler.cs @@ -1,4 +1,5 @@ using CMSMicroservice.Protobuf.Protos.ManualPayment; +using Google.Protobuf; using Microsoft.Extensions.Logging; namespace BackOffice.BFF.Application.ManualPaymentCQ.Commands.CreateManualPayment; @@ -37,7 +38,25 @@ public class CreateManualPaymentCommandHandler : IRequestHandler 0) + { + var fileInfo = await _context.FileInfos.CreateNewFileInfoAsync(new() + { + Directory = "Images/ManualPayments", + IsBase64 = false, + MIME = request.ImageFile.Mime, + FileName = request.ImageFile.FileName, + File = ByteString.CopyFrom(request.ImageFile.File) + }, cancellationToken: cancellationToken); + + if (fileInfo != null && !string.IsNullOrWhiteSpace(fileInfo.File)) + { + grpcRequest.ImagePath = fileInfo.File; + _logger.LogInformation("Image uploaded to FMS: {ImagePath}", fileInfo.File); + } + } + else if (!string.IsNullOrWhiteSpace(request.ImagePath)) { grpcRequest.ImagePath = request.ImagePath; } diff --git a/src/BackOffice.BFF.WebApi/Common/Mappings/ManualPaymentProfile.cs b/src/BackOffice.BFF.WebApi/Common/Mappings/ManualPaymentProfile.cs index d504a17..e100c26 100644 --- a/src/BackOffice.BFF.WebApi/Common/Mappings/ManualPaymentProfile.cs +++ b/src/BackOffice.BFF.WebApi/Common/Mappings/ManualPaymentProfile.cs @@ -1,53 +1,26 @@ +using BackOffice.BFF.Application.ManualPaymentCQ.Commands.CreateManualPayment; +using BackOffice.BFF.ManualPayment.Protobuf; + namespace BackOffice.BFF.WebApi.Common.Mappings; public class ManualPaymentProfile : IRegister { void IRegister.Register(TypeAdapterConfig config) { - // GetManualPaymentsResponseDto -> GetManualPaymentsResponse - // config.NewConfig() - // .MapWith(src => new GetManualPaymentsResponse - // { - // MetaData = new MetaData - // { - // CurrentPage = src.MetaData.PageNumber, - // PageSize = src.MetaData.PageSize, - // TotalCount = src.MetaData.TotalCount, - // TotalPage = (int)Math.Ceiling((double)src.MetaData.TotalCount / src.MetaData.PageSize) - // }, - // Models = { (src.Models ?? Enumerable.Empty()) - // .Select(m => new ManualPaymentProtoModel - // { - // Id = m.Id, - // UserId = m.UserId, - // UserFullName = m.UserFullName ?? string.Empty, - // UserMobile = m.UserMobile ?? string.Empty, - // Amount = m.Amount, - // Type = m.Type, - // TypeDisplay = m.TypeDisplay ?? string.Empty, - // Description = m.Description ?? string.Empty, - // ReferenceNumber = m.ReferenceNumber ?? string.Empty, - // Status = m.Status, - // StatusDisplay = m.StatusDisplay ?? string.Empty, - // RequestedBy = m.RequestedBy, - // RequestedByName = m.RequestedByName ?? string.Empty, - // ApprovedBy = m.ApprovedBy ?? 0, - // ApprovedByName = m.ApprovedByName ?? string.Empty, - // ApprovedAt = m.ApprovedAt.HasValue - // ? Timestamp.FromDateTime(DateTime.SpecifyKind(m.ApprovedAt.Value, DateTimeKind.Utc)) - // : null, - // RejectionReason = m.RejectionReason ?? string.Empty, - // TransactionId = m.TransactionId ?? 0, - // Created = Timestamp.FromDateTime(DateTime.SpecifyKind(m.Created, DateTimeKind.Utc)) - // }) } - // }); + // FileUploadModel -> FileUploadDto + config.NewConfig() + .Map(dest => dest.File, src => src.File.ToByteArray()) + .Map(dest => dest.FileName, src => src.FileName) + .Map(dest => dest.Mime, src => src.Mime); - // CreateManualPaymentResponseDto -> CreateManualPaymentResponse - // config.NewConfig() - // .MapWith(src => new CreateManualPaymentResponse - // { - // Id = src.Id, - // TransactionId = src.TransactionId - // }); + // CreateManualPaymentRequest -> CreateManualPaymentCommand + config.NewConfig() + .Map(dest => dest.UserId, src => src.UserId) + .Map(dest => dest.Amount, src => src.Amount) + .Map(dest => dest.Type, src => (int)src.Type) + .Map(dest => dest.Description, src => src.Description) + .Map(dest => dest.ReferenceNumber, src => src.ReferenceNumber) + .Map(dest => dest.ImagePath, src => src.ImagePath) + .Map(dest => dest.ImageFile, src => src.ImageFile); } } diff --git a/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/BackOffice.BFF.ManualPayment.Protobuf.csproj b/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/BackOffice.BFF.ManualPayment.Protobuf.csproj index 53f820f..54bf3dd 100644 --- a/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/BackOffice.BFF.ManualPayment.Protobuf.csproj +++ b/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/BackOffice.BFF.ManualPayment.Protobuf.csproj @@ -4,7 +4,7 @@ net9.0 enable enable - 0.0.6 + 0.0.11 None False False diff --git a/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto b/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto index 3271dba..facbbb1 100644 --- a/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto +++ b/src/Protobufs/BackOffice.BFF.ManualPayment.Protobuf/Protos/manualpayment.proto @@ -66,6 +66,14 @@ message CreateManualPaymentRequest string description = 4; google.protobuf.StringValue reference_number = 5; google.protobuf.StringValue image_path = 6; + FileUploadModel image_file = 7; +} + +message FileUploadModel +{ + bytes file = 1; + string file_name = 2; + string mime = 3; } message CreateManualPaymentResponse