From 05f483327059bb03a1548f5b3ac10b83d9c0b543 Mon Sep 17 00:00:00 2001 From: MeysamMoghaddam <65253484+MeysamMoghaddam@users.noreply.github.com> Date: Mon, 13 Oct 2025 08:25:31 +0330 Subject: [PATCH] Generator Changes at 10/13/2025 8:22:12 AM --- .../SetAddressAsDefaultCommand.cs | 7 +++++++ .../SetAddressAsDefaultCommandHandler.cs | 18 ++++++++++++++++++ .../SetAddressAsDefaultCommandValidator.cs | 16 ++++++++++++++++ .../Commands/UpdateUser/UpdateUserCommand.cs | 8 ++++++++ .../UpdateUser/UpdateUserCommandValidator.cs | 6 ++++++ .../GetAllUserByFilterQuery.cs | 8 ++++++++ .../GetAllUserByFilterResponseDto.cs | 8 ++++++++ .../Queries/GetUser/GetUserResponseDto.cs | 8 ++++++++ .../CreateNewUserOrderCommand.cs | 2 ++ .../CreateNewUserOrderCommandValidator.cs | 2 ++ .../GetAllUserOrderByFilterQuery.cs | 2 ++ .../GetAllUserOrderByFilterResponseDto.cs | 2 ++ .../GetUserOrder/GetUserOrderResponseDto.cs | 2 ++ .../FrontOffice.BFF.Domain.csproj | 2 +- .../Services/UserAddressService.cs | 5 +++++ .../FrontOffice.BFF.User.Protobuf.csproj | 2 +- .../Protos/user.proto | 16 ++++++++++++++++ .../Validator/UpdateUserRequestValidator.cs | 6 ++++++ ...rontOffice.BFF.UserAddress.Protobuf.csproj | 2 +- .../Protos/useraddress.proto | 10 ++++++++++ .../SetAddressAsDefaultRequestValidator.cs | 19 +++++++++++++++++++ .../Protos/userorder.proto | 4 ++++ .../CreateNewUserOrderRequestValidator.cs | 2 ++ 23 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommand.cs create mode 100644 src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandHandler.cs create mode 100644 src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandValidator.cs create mode 100644 src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Validator/SetAddressAsDefaultRequestValidator.cs diff --git a/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommand.cs b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommand.cs new file mode 100644 index 0000000..b654b94 --- /dev/null +++ b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommand.cs @@ -0,0 +1,7 @@ +namespace FrontOffice.BFF.Application.UserAddressCQ.Commands.SetAddressAsDefault; +public record SetAddressAsDefaultCommand : IRequest +{ + //شناسه + public long Id { get; init; } + +} \ No newline at end of file diff --git a/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandHandler.cs b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandHandler.cs new file mode 100644 index 0000000..4b4af09 --- /dev/null +++ b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandHandler.cs @@ -0,0 +1,18 @@ +using CMSMicroservice.Protobuf.Protos.UserAddress; + +namespace FrontOffice.BFF.Application.UserAddressCQ.Commands.SetAddressAsDefault; +public class SetAddressAsDefaultCommandHandler : IRequestHandler +{ + private readonly IApplicationContractContext _context; + + public SetAddressAsDefaultCommandHandler(IApplicationContractContext context) + { + _context = context; + } + + public async Task Handle(SetAddressAsDefaultCommand request, CancellationToken cancellationToken) + { + await _context.UserAddress.SetAddressAsDefaultAsync(request:request.Adapt(),cancellationToken:cancellationToken); + return Unit.Value; + } +} diff --git a/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandValidator.cs b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandValidator.cs new file mode 100644 index 0000000..f84a314 --- /dev/null +++ b/src/FrontOffice.BFF.Application/UserAddressCQ/Commands/SetAddressAsDefault/SetAddressAsDefaultCommandValidator.cs @@ -0,0 +1,16 @@ +namespace FrontOffice.BFF.Application.UserAddressCQ.Commands.SetAddressAsDefault; +public class SetAddressAsDefaultCommandValidator : AbstractValidator +{ + public SetAddressAsDefaultCommandValidator() + { + RuleFor(model => model.Id) + .NotNull(); + } + public Func>> ValidateValue => async (model, propertyName) => + { + var result = await ValidateAsync(ValidationContext.CreateWithOptions((SetAddressAsDefaultCommand)model, x => x.IncludeProperties(propertyName))); + if (result.IsValid) + return Array.Empty(); + return result.Errors.Select(e => e.ErrorMessage); + }; +} diff --git a/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommand.cs b/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommand.cs index 3ca2e21..3d15c15 100644 --- a/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommand.cs +++ b/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommand.cs @@ -13,6 +13,14 @@ public record UpdateUserCommand : IRequest public string? AvatarPath { get; init; } //فایل آواتار public UserAvatarFileModel? AvatarFile { get; init; } + //اعلان ایمیل + public bool EmailNotifications { get; init; } + //اعلان پیامک + public bool SmsNotifications { get; init; } + //اعلان پوش + public bool PushNotifications { get; init; } + //تاریخ تولد + public DateTime? BirthDate { get; init; } }public class UserAvatarFileModel { diff --git a/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommandValidator.cs b/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommandValidator.cs index 7385b8a..d8cdc06 100644 --- a/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommandValidator.cs +++ b/src/FrontOffice.BFF.Application/UserCQ/Commands/UpdateUser/UpdateUserCommandValidator.cs @@ -5,6 +5,12 @@ public class UpdateUserCommandValidator : AbstractValidator { RuleFor(model => model.Id) .NotNull(); + RuleFor(model => model.EmailNotifications) + .NotNull(); + RuleFor(model => model.SmsNotifications) + .NotNull(); + RuleFor(model => model.PushNotifications) + .NotNull(); } public Func>> ValidateValue => async (model, propertyName) => { diff --git a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterQuery.cs b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterQuery.cs index 2a2fe42..0b3d17f 100644 --- a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterQuery.cs +++ b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterQuery.cs @@ -28,4 +28,12 @@ public record GetAllUserByFilterQuery : IRequest public string? ReferralCode { get; set; } //موبایل فعال شده؟ public bool? IsMobileVerified { get; set; } + //اعلان ایمیل + public bool? EmailNotifications { get; set; } + //اعلان پیامک + public bool? SmsNotifications { get; set; } + //اعلان پوش + public bool? PushNotifications { get; set; } + //تاریخ تولد + public DateTime? BirthDate { get; set; } } diff --git a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterResponseDto.cs b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterResponseDto.cs index 09a3539..8c362c7 100644 --- a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterResponseDto.cs +++ b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetAllUserByFilter/GetAllUserByFilterResponseDto.cs @@ -28,4 +28,12 @@ public class GetAllUserByFilterResponseDto public bool IsMobileVerified { get; set; } //تاریخ فعال سازی موبایل public DateTime? MobileVerifiedAt { get; set; } + //اعلان ایمیل + public bool EmailNotifications { get; set; } + //اعلان پیامک + public bool SmsNotifications { get; set; } + //اعلان پوش + public bool PushNotifications { get; set; } + //تاریخ تولد + public DateTime? BirthDate { get; set; } } diff --git a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetUser/GetUserResponseDto.cs b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetUser/GetUserResponseDto.cs index c489e6d..7361584 100644 --- a/src/FrontOffice.BFF.Application/UserCQ/Queries/GetUser/GetUserResponseDto.cs +++ b/src/FrontOffice.BFF.Application/UserCQ/Queries/GetUser/GetUserResponseDto.cs @@ -23,5 +23,13 @@ public class GetUserResponseDto public bool IsMobileVerified { get; set; } //تاریخ فعال سازی موبایل public DateTime? MobileVerifiedAt { get; set; } + //اعلان ایمیل + public bool EmailNotifications { get; set; } + //اعلان پیامک + public bool SmsNotifications { get; set; } + //اعلان پوش + public bool PushNotifications { get; set; } + //تاریخ تولد + public DateTime? BirthDate { get; set; } } \ No newline at end of file diff --git a/src/FrontOffice.BFF.Application/UserOrderCQ/Commands/CreateNewUserOrder/CreateNewUserOrderCommand.cs b/src/FrontOffice.BFF.Application/UserOrderCQ/Commands/CreateNewUserOrder/CreateNewUserOrderCommand.cs index 85f887a..d08b4a3 100644 --- a/src/FrontOffice.BFF.Application/UserOrderCQ/Commands/CreateNewUserOrder/CreateNewUserOrderCommand.cs +++ b/src/FrontOffice.BFF.Application/UserOrderCQ/Commands/CreateNewUserOrder/CreateNewUserOrderCommand.cs @@ -13,5 +13,7 @@ public record CreateNewUserOrderCommand : IRequest model.UserId) .NotNull(); + RuleFor(model => model.UserAddressId) + .NotNull(); } public Func>> ValidateValue => async (model, propertyName) => { diff --git a/src/FrontOffice.BFF.Application/UserOrderCQ/Queries/GetAllUserOrderByFilter/GetAllUserOrderByFilterQuery.cs b/src/FrontOffice.BFF.Application/UserOrderCQ/Queries/GetAllUserOrderByFilter/GetAllUserOrderByFilterQuery.cs index 1bb4a76..e035f1d 100644 --- a/src/FrontOffice.BFF.Application/UserOrderCQ/Queries/GetAllUserOrderByFilter/GetAllUserOrderByFilterQuery.cs +++ b/src/FrontOffice.BFF.Application/UserOrderCQ/Queries/GetAllUserOrderByFilter/GetAllUserOrderByFilterQuery.cs @@ -24,4 +24,6 @@ public record GetAllUserOrderByFilterQuery : IRequest - + diff --git a/src/FrontOffice.BFF.WebApi/Services/UserAddressService.cs b/src/FrontOffice.BFF.WebApi/Services/UserAddressService.cs index 7858653..97bb349 100644 --- a/src/FrontOffice.BFF.WebApi/Services/UserAddressService.cs +++ b/src/FrontOffice.BFF.WebApi/Services/UserAddressService.cs @@ -5,6 +5,7 @@ using FrontOffice.BFF.Application.UserAddressCQ.Commands.UpdateUserAddress; using FrontOffice.BFF.Application.UserAddressCQ.Commands.DeleteUserAddress; using FrontOffice.BFF.Application.UserAddressCQ.Queries.GetUserAddress; using FrontOffice.BFF.Application.UserAddressCQ.Queries.GetAllUserAddressByFilter; +using FrontOffice.BFF.Application.UserAddressCQ.Commands.SetAddressAsDefault; namespace FrontOffice.BFF.WebApi.Services; public class UserAddressService : UserAddressContract.UserAddressContractBase { @@ -34,4 +35,8 @@ public class UserAddressService : UserAddressContract.UserAddressContractBase { return await _dispatchRequestToCQRS.Handle(request, context); } + public override async Task SetAddressAsDefault(SetAddressAsDefaultRequest request, ServerCallContext context) + { + return await _dispatchRequestToCQRS.Handle(request, context); + } } diff --git a/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj index 3908bc3..bdcc70a 100644 --- a/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - 0.0.114 + 0.0.115 None False False diff --git a/src/Protobufs/FrontOffice.BFF.User.Protobuf/Protos/user.proto b/src/Protobufs/FrontOffice.BFF.User.Protobuf/Protos/user.proto index affaedf..e1ddf6f 100644 --- a/src/Protobufs/FrontOffice.BFF.User.Protobuf/Protos/user.proto +++ b/src/Protobufs/FrontOffice.BFF.User.Protobuf/Protos/user.proto @@ -57,6 +57,10 @@ message UpdateUserRequest google.protobuf.StringValue national_code = 4; google.protobuf.StringValue avatar_path = 5; UserAvatarFileModel avatar_file = 6; + bool email_notifications = 7; + bool sms_notifications = 8; + bool push_notifications = 9; + google.protobuf.Timestamp birth_date = 10; } message UserAvatarFileModel { @@ -81,6 +85,10 @@ message GetUserResponse string referral_code = 9; bool is_mobile_verified = 10; google.protobuf.Timestamp mobile_verified_at = 11; + bool email_notifications = 12; + bool sms_notifications = 13; + bool push_notifications = 14; + google.protobuf.Timestamp birth_date = 15; } message GetAllUserByFilterRequest { @@ -99,6 +107,10 @@ message GetAllUserByFilterFilter google.protobuf.Int64Value parent_id = 7; google.protobuf.StringValue referral_code = 8; google.protobuf.BoolValue is_mobile_verified = 9; + google.protobuf.BoolValue email_notifications = 10; + google.protobuf.BoolValue sms_notifications = 11; + google.protobuf.BoolValue push_notifications = 12; + google.protobuf.Timestamp birth_date = 13; } message GetAllUserByFilterResponse { @@ -117,6 +129,10 @@ message GetAllUserByFilterResponseModel string referral_code = 8; bool is_mobile_verified = 9; google.protobuf.Timestamp mobile_verified_at = 10; + bool email_notifications = 11; + bool sms_notifications = 12; + bool push_notifications = 13; + google.protobuf.Timestamp birth_date = 14; } message CreateNewOtpTokenRequest { diff --git a/src/Protobufs/FrontOffice.BFF.User.Protobuf/Validator/UpdateUserRequestValidator.cs b/src/Protobufs/FrontOffice.BFF.User.Protobuf/Validator/UpdateUserRequestValidator.cs index ca1adf2..f62a5ab 100644 --- a/src/Protobufs/FrontOffice.BFF.User.Protobuf/Validator/UpdateUserRequestValidator.cs +++ b/src/Protobufs/FrontOffice.BFF.User.Protobuf/Validator/UpdateUserRequestValidator.cs @@ -8,6 +8,12 @@ public class UpdateUserRequestValidator : AbstractValidator { RuleFor(model => model.Id) .NotNull(); + RuleFor(model => model.EmailNotifications) + .NotNull(); + RuleFor(model => model.SmsNotifications) + .NotNull(); + RuleFor(model => model.PushNotifications) + .NotNull(); } public Func>> ValidateValue => async (model, propertyName) => { diff --git a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj index c03637f..122e0cd 100644 --- a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj +++ b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj @@ -4,7 +4,7 @@ net7.0 enable enable - 0.0.113 + 0.0.114 None False False diff --git a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Protos/useraddress.proto b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Protos/useraddress.proto index 8a5a805..0aa25e1 100644 --- a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Protos/useraddress.proto +++ b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Protos/useraddress.proto @@ -42,6 +42,12 @@ service UserAddressContract }; }; + rpc SetAddressAsDefault(SetAddressAsDefaultRequest) returns (google.protobuf.Empty){ + option (google.api.http) = { + post: "/SetAddressAsDefault" + body: "*" + }; + }; } message CreateNewUserAddressRequest { @@ -113,6 +119,10 @@ message GetAllUserAddressByFilterResponseModel bool is_default = 6; int64 city_id = 7; } +message SetAddressAsDefaultRequest +{ + int64 id = 1; +} message PaginationState { diff --git a/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Validator/SetAddressAsDefaultRequestValidator.cs b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Validator/SetAddressAsDefaultRequestValidator.cs new file mode 100644 index 0000000..28e056d --- /dev/null +++ b/src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/Validator/SetAddressAsDefaultRequestValidator.cs @@ -0,0 +1,19 @@ +using FluentValidation; +using FrontOffice.BFF.UserAddress.Protobuf.Protos.UserAddress; +namespace FrontOffice.BFF.UserAddress.Protobuf.Validator; + +public class SetAddressAsDefaultRequestValidator : AbstractValidator +{ + public SetAddressAsDefaultRequestValidator() + { + RuleFor(model => model.Id) + .NotNull(); + } + public Func>> ValidateValue => async (model, propertyName) => + { + var result = await ValidateAsync(ValidationContext.CreateWithOptions((SetAddressAsDefaultRequest)model, x => x.IncludeProperties(propertyName))); + if (result.IsValid) + return Array.Empty(); + return result.Errors.Select(e => e.ErrorMessage); + }; +} diff --git a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Protos/userorder.proto b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Protos/userorder.proto index d2601a4..b04b651 100644 --- a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Protos/userorder.proto +++ b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Protos/userorder.proto @@ -51,6 +51,7 @@ message CreateNewUserOrderRequest bool payment_status = 4; google.protobuf.Timestamp payment_date = 5; int64 user_id = 6; + int64 user_address_id = 7; } message CreateNewUserOrderResponse { @@ -83,6 +84,7 @@ message GetUserOrderResponse bool payment_status = 5; google.protobuf.Timestamp payment_date = 6; int64 user_id = 7; + int64 user_address_id = 8; } message GetAllUserOrderByFilterRequest { @@ -99,6 +101,7 @@ message GetAllUserOrderByFilterFilter google.protobuf.BoolValue payment_status = 5; google.protobuf.Timestamp payment_date = 6; google.protobuf.Int64Value user_id = 7; + google.protobuf.Int64Value user_address_id = 8; } message GetAllUserOrderByFilterResponse { @@ -114,6 +117,7 @@ message GetAllUserOrderByFilterResponseModel bool payment_status = 5; google.protobuf.Timestamp payment_date = 6; int64 user_id = 7; + int64 user_address_id = 8; } message PaginationState diff --git a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Validator/CreateNewUserOrderRequestValidator.cs b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Validator/CreateNewUserOrderRequestValidator.cs index 4d15836..045c35e 100644 --- a/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Validator/CreateNewUserOrderRequestValidator.cs +++ b/src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/Validator/CreateNewUserOrderRequestValidator.cs @@ -14,6 +14,8 @@ public class CreateNewUserOrderRequestValidator : AbstractValidator model.UserId) .NotNull(); + RuleFor(model => model.UserAddressId) + .NotNull(); } public Func>> ValidateValue => async (model, propertyName) => {