Пример #1
0
        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));
            }
        }
Пример #2
0
 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));
     }
 }
Пример #3
0
        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));
            }
        }
Пример #4
0
        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));
            }
        }