Beispiel #1
0
        /// <summary>
        /// Creates the user into the database
        /// </summary>
        /// <param name="gatewayDTO"> contains the info to create a user </param>
        /// <returns>status of the creation</returns>
        public bool Create(RegGatewayDTO gatewayDTO)
        {
            if (gatewayDTO == null)
            {
                return(false);
            }

            var gateway = new RegistrationGateway();

            return(gateway.Create(gatewayDTO));
        }
        /// <summary>
        /// Validates the user credentials of the registraion information
        /// </summary>
        /// <param name="userCred"> User Credentials of the registration information </param>
        /// <returns> status if the credentials are valid based on business rules </returns>
        public bool ValidateUserCred(UserCredential userCred)
        {
            var messages = new List <string>();

            // Returns error if user credentials are null
            if (userCred == null)
            {
                Response.isSuccessful = false;
                messages.Add(AccountConstants.REGISTRATION_INVALID);
                Response.Messages = messages;
                return(false);
            }
            var validator = new UserCredValidator();
            var results   = validator.Validate(userCred);

            IList <ValidationFailure> failures = results.Errors;

            // Returns any error messages if there was any when validating
            if (failures.Any())
            {
                foreach (ValidationFailure failure in failures)
                {
                    messages.Add(failure.ErrorMessage);
                }
                Response.isSuccessful = false;
                Response.Messages     = messages;
                return(false);
            }

            var dto = new UsernameDTO()
            {
                Username = userCred.Username
            };

            // Checks username in the database
            var gateway         = new RegistrationGateway();
            var gatewayResponse = gateway.CheckUserName(dto);

            // Return error if theres any error messages
            if (!gatewayResponse.isSuccessful)
            {
                Response.isSuccessful = false;
                Response.Messages     = gatewayResponse.Messages;
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Validates the Security Questions and Answers of the Registration Information
        /// </summary>
        /// <param name="questions"> List of Security questions with answers </param>
        /// <returns> status if the security questions and answers are valid based on business rules </returns>
        public bool ValidateQandAs(List <SecurityQuestion> questions)
        {
            var messages = new List <string>();

            // Returns error if questions if null
            if (questions == null)
            {
                Response.isSuccessful = false;
                messages.Add(AccountConstants.QUESTION_INVALID_ERROR);
                Response.Messages = messages;
                return(false);
            }

            var validator = new SecurityQuestionValidator();
            var results   = validator.Validate(questions);

            // Checks if questions and answers fits the required length
            var failures = results.Errors;

            if (failures.Any())
            {
                foreach (ValidationFailure failure in failures)
                {
                    messages.Add(failure.ErrorMessage);
                }
                Response.isSuccessful = false;
                Response.Messages     = messages;
                return(false);
            }

            // Retrieves the questions from the database
            RegistrationGateway gateway = new RegistrationGateway();
            var gatewayResponse         = gateway.GetQuestions();

            if (!gatewayResponse.isSuccessful)
            {
                Response.isSuccessful = false;
                Response.Messages     = gatewayResponse.Messages;
                return(false);
            }
            else
            {
                // Goes through each user's question and checks if its in the list of retrieved question
                var retrievedQuestions = gatewayResponse.Questions;
                foreach (SecurityQuestion question in questions)
                {
                    if (!retrievedQuestions.Contains(question.Question))
                    {
                        Response.isSuccessful = false;
                        messages.Add(AccountConstants.QUESTION_INVALID_ERROR);
                        Response.Messages = messages;
                        return(false);
                    }
                    else
                    {
                        // Removes the question from retrieved to catch duplicates
                        retrievedQuestions.Remove(question.Question);
                    }
                }
            }
            return(true);
        }