public IActionResult GetUserUndoneFactors([FromQuery] string phone) { try { if (StaticTools.PhoneValidator(phone)) { if (!_unitOfWork.UserRepository.GetDbSet().Any(u => u.Phone == phone)) { return(NotFound("User not found")); } IEnumerable <PreFactor> result = _unitOfWork.PreFactorRepository.GetDbSet().Include(f => f.Images).Include(f => f.User).Where(f => f.User.Phone == phone && !f.IsDone).OrderBy(f => f.CreationDate).AsEnumerable(); var x = from item in result select new { item.Id, item.Title, UserId = item.User.Id, Images = StaticTools.GetImages(item.Images, _configuration.GetValue <string>("url")), item.IsDone, item.SubmittedFactorId }; return(Ok(x)); } else { return(BadRequest(StaticTools.PhoneValidationError)); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
public async Task <IActionResult> AdminLogin([FromQuery] string phone) { try { if (StaticTools.PhoneValidator(phone)) { bool check = _configuration.GetSection("AdminPhones").Get <string[]>().Any(s => s == phone); if (check) { return(await AdminLoginHandler(phone)); } else { return(Unauthorized("access denied")); } } else { return(BadRequest(StaticTools.PhoneValidationError)); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
public async Task <IActionResult> IsUserVerified([FromQuery] string phone) { try { if (StaticTools.PhoneValidator(phone)) { User user = await _unitOfWork.UserRepository.GetDbSet().SingleOrDefaultAsync(u => u.Phone == phone); if (user == null) { return(NotFound("user not found")); } else { return(Ok(user.IsVerified())); } } else { return(BadRequest(StaticTools.PhoneValidationError)); } } 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)); } }