update1
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
using CMSMicroservice.Domain.Events;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace CMSMicroservice.Application.OtpTokenCQ.Commands.VerifyOtpToken;
|
||||
|
||||
public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenCommand, VerifyOtpTokenResponseDto>
|
||||
{
|
||||
private readonly IApplicationDbContext _context;
|
||||
@@ -14,8 +16,10 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenComman
|
||||
_hashService = hashService;
|
||||
}
|
||||
|
||||
const int MaxAttempts = 5; // محدودیت تلاش
|
||||
public async Task<VerifyOtpTokenResponseDto> Handle(VerifyOtpTokenCommand request, CancellationToken cancellationToken)
|
||||
const int MaxAttempts = 5; // محدودیت تلاش
|
||||
|
||||
public async Task<VerifyOtpTokenResponseDto> Handle(VerifyOtpTokenCommand request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var mobile = request.Mobile.NormalizeIranMobile();
|
||||
var purpose = request.Purpose?.ToLowerInvariant() ?? "signup";
|
||||
@@ -26,9 +30,12 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenComman
|
||||
.OrderByDescending(o => o.Created)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
|
||||
if (otp is null) return new VerifyOtpTokenResponseDto() { Success = false, Message = "کد پیدا نشد یا منقضی شده است." };
|
||||
if (otp is null)
|
||||
return new VerifyOtpTokenResponseDto() { Success = false, Message = "کد پیدا نشد یا منقضی شده است." };
|
||||
|
||||
if (otp.Attempts >= MaxAttempts) return new VerifyOtpTokenResponseDto() { Success = false, Message = "تعداد تلاشها زیاد است. دوباره کد بگیرید." };
|
||||
if (otp.Attempts >= MaxAttempts)
|
||||
return new VerifyOtpTokenResponseDto()
|
||||
{ Success = false, Message = "تعداد تلاشها زیاد است. دوباره کد بگیرید." };
|
||||
|
||||
otp.Attempts++;
|
||||
|
||||
@@ -50,7 +57,8 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenComman
|
||||
if (request.ParentReferralCode == null)
|
||||
return new VerifyOtpTokenResponseDto() { Success = false, Message = "کد معرف الزامی است." };
|
||||
|
||||
var parent = await _context.Users.FirstOrDefaultAsync(u => u.ReferralCode == request.ParentReferralCode, cancellationToken: cancellationToken);
|
||||
var parent = await _context.Users.FirstOrDefaultAsync(u => u.ReferralCode == request.ParentReferralCode,
|
||||
cancellationToken: cancellationToken);
|
||||
if (parent == null)
|
||||
return new VerifyOtpTokenResponseDto() { Success = false, Message = "معرف وجود ندارد." };
|
||||
|
||||
@@ -70,13 +78,24 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenComman
|
||||
await _context.Users.AddAsync(user, cancellationToken);
|
||||
user.AddDomainEvent(new CreateNewUserEvent(user));
|
||||
await _context.SaveChangesAsync(cancellationToken);
|
||||
await _context.UserRoles.AddAsync(new()
|
||||
|
||||
var userRole = new UserRole
|
||||
{
|
||||
UserId = user.Id,
|
||||
RoleId = 1,//UserRoleEnum.User
|
||||
|
||||
},cancellationToken);
|
||||
user.AddDomainEvent(new CreateNewUserEvent(user));
|
||||
RoleId = 1, //UserRoleEnum.User
|
||||
};
|
||||
|
||||
await _context.UserRoles.AddAsync(userRole, cancellationToken);
|
||||
user.AddDomainEvent(new CreateNewUserRoleEvent(userRole));
|
||||
|
||||
var userWallet = new UserWallet
|
||||
{
|
||||
UserId = user.Id,
|
||||
Balance = 0,
|
||||
NetworkBalance = 0
|
||||
};
|
||||
await _context.UserWallets.AddAsync(userWallet, cancellationToken);
|
||||
user.AddDomainEvent(new CreateNewUserWalletEvent(userWallet));
|
||||
await _context.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
else
|
||||
@@ -98,4 +117,4 @@ public class VerifyOtpTokenCommandHandler : IRequestHandler<VerifyOtpTokenComman
|
||||
RemainingSeconds = (otp.ExpiresAt - now).Seconds
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user