public async Task <TokenSelectRequest> Handle(OtpValidationRequest input, CancellationToken cancellationToken) { var isCodeValid = _otpService.ValidateCode(input.Code, input.Token, input.Phone); if (!isCodeValid) { throw new AppException(ApiResultStatusCode.ServerError, "خطایی رخ داده است."); } var user = await _userRepository.TableNoTracking .SingleOrDefaultAsync(u => u.PhoneNumber.Equals(input.Phone), cancellationToken); if (user == null) { var isUserCreated = await SignUpUser(input.Phone); if (!isUserCreated) { throw new AppException(ApiResultStatusCode.ServerError, "ثبت نام کاربر با مشکل مواجه شد!"); } } var result = await SignInUser(input.Phone, cancellationToken); return(result); }