public Result ActivateUser(int userId, String code) { String[] errors = ValidateText("User Code", code); if(errors.Length > 0) { return new Result(errors); } UserCodeProvider userCodeProvider = new UserCodeProvider(); int attemptsMade = 0; bool isActivated = userCodeProvider.TryActivatingCode(userId, code, out attemptsMade); if(!isActivated) { if(attemptsMade >= MAX_USERCODE_ATTEMPTS) { UserCode userCode = new UserCode { UserId = userId, DateExpires = DateTime.Now.AddDays(USER_CODE_EXPIRATION_DAYS), Attempts = 0, Code = UserCodeGenerator.GenerateCode((int)userId) }; userCodeProvider.CreateNewUserCode(userCode); //TODO: Send Email return new Result(new String[] { Result.INVALID_CODE_MAX_ERROR }); } return new Result(new String[] { Result.INVALID_CODE_ERROR }); } userCodeProvider.RemoveUserCode(userId); UserProvider userProvider = new UserProvider(); userProvider.ActivateUser(userId); //TODO: Send Success email return new Result(); }