From 6c90e4caf091b320aab85c36526cb2cff8d9119d Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Fri, 7 Aug 2026 17:25:57 +0330 Subject: [PATCH] feat(order): enhance order status management and Protobuf definitions - Added AdminNotes handling in UpdateOrderStatusCommandHandler to include delivery descriptions. - Updated DeliveryStatus enum to include ReadyForOfficePickup. - Enhanced GetCustomerOrderHistoryQueryHandler and UserOrderService to support new delivery status. - Updated Protobuf definitions for DeliveryStatus to reflect changes. - Bumped Protobuf project version to accommodate new features. --- .../UpdateOrderStatusCommandHandler.cs | 5 +++ .../GetCustomerOrderHistoryQueryHandler.cs | 2 + .../Enums/DeliveryStatus.cs | 2 + .../CMSMicroservice.Protobuf.csproj | 2 +- .../Protos/discountorder.proto | 2 + .../Protos/public_messages.proto | 4 ++ .../Services/DiscountOrderService.cs | 41 +++++++++++++++---- .../Services/UserOrderService.cs | 1 + 8 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/CMSMicroservice.Application/DiscountShopCQ/Commands/UpdateOrderStatus/UpdateOrderStatusCommandHandler.cs b/src/CMSMicroservice.Application/DiscountShopCQ/Commands/UpdateOrderStatus/UpdateOrderStatusCommandHandler.cs index 2016ba9..957b620 100644 --- a/src/CMSMicroservice.Application/DiscountShopCQ/Commands/UpdateOrderStatus/UpdateOrderStatusCommandHandler.cs +++ b/src/CMSMicroservice.Application/DiscountShopCQ/Commands/UpdateOrderStatus/UpdateOrderStatusCommandHandler.cs @@ -35,6 +35,11 @@ public class UpdateOrderStatusCommandHandler : IRequestHandler 4, DeliveryStatus.Cancelled => 5, DeliveryStatus.Returned => 6, + DeliveryStatus.ReadyForOfficePickup => 7, _ => 0 }; } @@ -127,6 +128,7 @@ public class GetCustomerOrderHistoryQueryHandler : IRequestHandler "تحویل داده شد", DeliveryStatus.Cancelled => "لغو شده", DeliveryStatus.Returned => "مرجوع شده", + DeliveryStatus.ReadyForOfficePickup => "آماده تحویل در دفتر", _ => "نامشخص" }; } diff --git a/src/CMSMicroservice.Domain/Enums/DeliveryStatus.cs b/src/CMSMicroservice.Domain/Enums/DeliveryStatus.cs index 86563db..e979c4d 100644 --- a/src/CMSMicroservice.Domain/Enums/DeliveryStatus.cs +++ b/src/CMSMicroservice.Domain/Enums/DeliveryStatus.cs @@ -15,5 +15,7 @@ public enum DeliveryStatus Returned = 4, // لغو شده Cancelled = 5, + // آماده تحویل حضوری در دفتر + ReadyForOfficePickup = 6, } diff --git a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj index cff2532..80ec01a 100644 --- a/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj +++ b/src/CMSMicroservice.Protobuf/CMSMicroservice.Protobuf.csproj @@ -3,7 +3,7 @@ net9.0 enable enable - 0.0.206 + 0.0.207 None False False diff --git a/src/CMSMicroservice.Protobuf/Protos/discountorder.proto b/src/CMSMicroservice.Protobuf/Protos/discountorder.proto index 4edbcb8..72cd4cc 100644 --- a/src/CMSMicroservice.Protobuf/Protos/discountorder.proto +++ b/src/CMSMicroservice.Protobuf/Protos/discountorder.proto @@ -118,6 +118,8 @@ enum DeliveryStatus DELIVERY_SHIPPED = 2; DELIVERY_DELIVERED = 3; DELIVERY_CANCELLED = 4; + DELIVERY_READY_FOR_OFFICE = 5; + DELIVERY_RETURNED = 6; } // Get Order By Id diff --git a/src/CMSMicroservice.Protobuf/Protos/public_messages.proto b/src/CMSMicroservice.Protobuf/Protos/public_messages.proto index 99fd260..b2d67d9 100644 --- a/src/CMSMicroservice.Protobuf/Protos/public_messages.proto +++ b/src/CMSMicroservice.Protobuf/Protos/public_messages.proto @@ -102,6 +102,10 @@ enum DeliveryStatus DeliveryStatus_Delivered = 3; // مرجوع شده DeliveryStatus_Returned = 4; + // لغو شده + DeliveryStatus_Cancelled = 5; + // آماده تحویل حضوری در دفتر + DeliveryStatus_ReadyForOfficePickup = 6; } enum TransactionType { diff --git a/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs b/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs index 4249823..0af7f7b 100644 --- a/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs +++ b/src/CMSMicroservice.WebApi/Services/DiscountOrderService.cs @@ -99,7 +99,20 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB public override async Task UpdateOrderStatus(UpdateOrderStatusRequest request, ServerCallContext context) { - return await _dispatchRequestToCQRS.Handle(request, context); + // Proto DeliveryStatus ≠ Domain DeliveryStatus — نگاشت صریح لازم است + var command = new UpdateOrderStatusCommand + { + OrderId = request.OrderId, + DeliveryStatus = MapProtoDeliveryToDomain(request.DeliveryStatus), + TrackingCode = request.TrackingCode, + AdminNotes = request.AdminNotes + }; + var result = await _sender.Send(command, context.CancellationToken); + return new UpdateOrderStatusResponse + { + Success = result.Success, + Message = result.Message ?? string.Empty + }; } public override async Task GetOrderById(GetOrderByIdRequest request, ServerCallContext context) @@ -466,8 +479,9 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB DomainEnums.DeliveryStatus.Pending => DeliveryStatus.DeliveryProcessing, DomainEnums.DeliveryStatus.InTransit => DeliveryStatus.DeliveryShipped, DomainEnums.DeliveryStatus.Delivered => DeliveryStatus.DeliveryDelivered, - DomainEnums.DeliveryStatus.Returned => DeliveryStatus.DeliveryCancelled, DomainEnums.DeliveryStatus.Cancelled => DeliveryStatus.DeliveryCancelled, + DomainEnums.DeliveryStatus.ReadyForOfficePickup => DeliveryStatus.DeliveryReadyForOffice, + DomainEnums.DeliveryStatus.Returned => DeliveryStatus.DeliveryReturned, _ => DeliveryStatus.DeliveryPending }; @@ -476,10 +490,23 @@ public class DiscountOrderService : DiscountOrderContract.DiscountOrderContractB /// private static DomainEnums.DeliveryStatus MapProtoDeliveryFilterToDomain(int protoDeliveryStatus) => protoDeliveryStatus switch { - 1 => DomainEnums.DeliveryStatus.Pending, // DELIVERY_PROCESSING - 2 => DomainEnums.DeliveryStatus.InTransit, // DELIVERY_SHIPPED - 3 => DomainEnums.DeliveryStatus.Delivered, // DELIVERY_DELIVERED - 4 => DomainEnums.DeliveryStatus.Cancelled, // DELIVERY_CANCELLED - _ => DomainEnums.DeliveryStatus.None // DELIVERY_PENDING (0) + 1 => DomainEnums.DeliveryStatus.Pending, // DELIVERY_PROCESSING + 2 => DomainEnums.DeliveryStatus.InTransit, // DELIVERY_SHIPPED + 3 => DomainEnums.DeliveryStatus.Delivered, // DELIVERY_DELIVERED + 4 => DomainEnums.DeliveryStatus.Cancelled, // DELIVERY_CANCELLED + 5 => DomainEnums.DeliveryStatus.ReadyForOfficePickup, // DELIVERY_READY_FOR_OFFICE + 6 => DomainEnums.DeliveryStatus.Returned, // DELIVERY_RETURNED + _ => DomainEnums.DeliveryStatus.None // DELIVERY_PENDING (0) + }; + + private static DomainEnums.DeliveryStatus MapProtoDeliveryToDomain(DeliveryStatus status) => status switch + { + DeliveryStatus.DeliveryProcessing => DomainEnums.DeliveryStatus.Pending, + DeliveryStatus.DeliveryShipped => DomainEnums.DeliveryStatus.InTransit, + DeliveryStatus.DeliveryDelivered => DomainEnums.DeliveryStatus.Delivered, + DeliveryStatus.DeliveryCancelled => DomainEnums.DeliveryStatus.Cancelled, + DeliveryStatus.DeliveryReadyForOffice => DomainEnums.DeliveryStatus.ReadyForOfficePickup, + DeliveryStatus.DeliveryReturned => DomainEnums.DeliveryStatus.Returned, + _ => DomainEnums.DeliveryStatus.None }; } diff --git a/src/CMSMicroservice.WebApi/Services/UserOrderService.cs b/src/CMSMicroservice.WebApi/Services/UserOrderService.cs index c780da0..e989209 100644 --- a/src/CMSMicroservice.WebApi/Services/UserOrderService.cs +++ b/src/CMSMicroservice.WebApi/Services/UserOrderService.cs @@ -1058,6 +1058,7 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase Domain.Enums.DeliveryStatus.Delivered => "تحویل داده شده", Domain.Enums.DeliveryStatus.Returned => "مرجوع شده", Domain.Enums.DeliveryStatus.Cancelled => "لغو شده", + Domain.Enums.DeliveryStatus.ReadyForOfficePickup => "آماده تحویل در دفتر", _ => status.ToString() }; }