Exemple #1
0
        public DatabaseOperationResult RegisterUser(RegisterViewModel model)
        {
            var result = new DatabaseOperationResult();
            model.Email = model.Email.Trim();
            if (this.FindUserByEmail(model.Email) != null)
            {
                result.AddError("The email has already been taken.");
                return result;
            }
            if (this.FindUserByUsername(model.Username) != null)
            {
                result.AddError("The username has already been taken.");
                return result;
            }

            var encryptedPassword = _webHelper.EncryptToMd5(model.Password);
            var currentIpAddress = _webHelper.GetCurrentIpAddress();

            var getUserRole = _unitOfWork.UserRoleRepository.Table()
                .FirstOrDefault(x => x.Name == SystemUserRoleNames.User);
            if (getUserRole == null)
            {
                result.AddError("User acceptance is currently off, please contact to administrator.");
                return result;
            }

            _unitOfWork.UserRepository.Insert(new User
            {
                Email = model.Email.Trim(),
                IPAddress = currentIpAddress,
                LastActivity = System.DateTime.Now,
                Password = encryptedPassword,
                Username = model.Username,
                UserRoleId = getUserRole.Id
            });
            _unitOfWork.Save();
            return result;
        }
        public ActionResult Register(RegisterViewModel model, bool captchaValid)
        {
            if (!captchaValid)
                ModelState.AddModelError("", "Wrong captcha !");

            if (ModelState.IsValid)
            {
                var result = _userService.RegisterUser(model);
                if (result.Success)
                {
                    ViewBag.Message = "Your account created successfuly.";
                    return View();
                }
                foreach (var error in result.Errors)
                    ModelState.AddModelError("", error);
            }
            return View(model);
        }