public async Task <IActionResult> ResendCode([FromQuery] string phone) { try { SMSVerification model = await _unitOfWork.VerificationRepository.GetDbSet().SingleOrDefaultAsync(v => v.Phone == phone); if (model == null) { return(BadRequest("Phone is not regestred yet")); } else { long code = StaticTools.GenerateCode(); try { string response = await _messageService.SendSMS(phone, code); model.Code = code; _unitOfWork.VerificationRepository.Update(model); _unitOfWork.Commit(); return(Ok("Code sent")); } catch (Exception ex) { return(BadRequest(ex.Message)); } } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
private async Task <IActionResult> AdminLoginHandler([FromQuery] string phone) { try { if (StaticTools.PhoneValidator(phone)) { User user = await _unitOfWork.UserRepository.GetDbSet().SingleOrDefaultAsync(u => u.Phone == phone); long code = StaticTools.GenerateCode(); string response = await _messageService.SendSMS(phone, code); if (user == null) { try { SMSVerification verification = new SMSVerification(code, phone); User newUser = new User(phone) { Role = "Admin" }; _unitOfWork.UserRepository.Insert(newUser); verification.User = newUser; _unitOfWork.VerificationRepository.Insert(verification); _unitOfWork.Commit(); return(Ok("Code sent")); } catch (Exception) { _unitOfWork.Rollback(); return(Problem("Database error")); } } else { SMSVerification verification = await _unitOfWork.VerificationRepository.GetDbSet().SingleOrDefaultAsync(v => v.User.Phone == phone); try { verification.Code = code; user.Role = "Admin"; _unitOfWork.VerificationRepository.Update(verification); _unitOfWork.UserRepository.Update(user); _unitOfWork.Commit(); return(Ok("Code sent")); } catch (Exception) { _unitOfWork.Rollback(); return(Problem("Database error")); } } } else { return(BadRequest(StaticTools.PhoneValidationError)); } } catch (Exception e) { _logger.Log(LogLevel.Error, e, e.Message); return(Problem(e.Message)); } }