public void ThrowExceptionIfInvalidVerficationCode(Guid smsRef, string verficationCode, UserVerificationReason reason) { VerificationRequestResult result = CheckVerificationCode(smsRef, verficationCode, reason); if (!result.IsValid) { throw new BusinessRuleException(result.Message); } }
public VerificationRequestResult CheckVerificationCode(int userId, string verificationCode, UserVerificationReason reason) { VerificationRequestResult result = new VerificationRequestResult(); if (userId == 0) { throw new ArgumentNullException(nameof(userId), "Must not be null"); } if (string.IsNullOrWhiteSpace(verificationCode)) { throw new BusinessRuleException(nameof(UserSmsVerification), ""); } IQueryConstraints <UserSmsVerification> constraints = new QueryConstraints <UserSmsVerification>() .Where(v => v.UserId == userId) .AndAlso(v => v.Code == verificationCode.Trim()) .AndAlso(v => v.UserVerificationReasonId == reason.UserVerificationReasonId); UserSmsVerification verificationRequest = queryRepository.SingleOrDefault(constraints); if (verificationRequest == null) { result.IsValid = false; result.Message = "الرجاء التأكد من رمز التحقق المدخل"; } else if (!verificationRequest.IsAlive) { result.IsValid = false; result.Message = "انتهى الوقت المخصص لهذا الرمز، الرجاء إعادة إرسال رمز التحقق وإدخاله فور وصوله"; } else { result.IsValid = true; result.Message = ""; } if (!result.IsValid) { constraints = new QueryConstraints <UserSmsVerification>() .Where(v => v.UserId == userId) .AndAlso(v => v.UserVerificationReasonId == reason.UserVerificationReasonId); UserSmsVerification userVerificationRequest = queryRepository.Single(constraints); result.ResendTimeout = userVerificationRequest.ResendTimeout; } return(result); }