public static Auth_RegisterUserModel EditUserModel_To_RegisterUserModel(Auth_EditUserModel auth_EditProfileModel)
        {
            Auth_RegisterUserModel auth_RegisterModel = new Auth_RegisterUserModel();

            auth_RegisterModel.username  = auth_EditProfileModel.username;
            auth_RegisterModel.email     = auth_EditProfileModel.email;
            auth_RegisterModel.firstname = auth_EditProfileModel.firstname;
            auth_RegisterModel.lastname  = auth_EditProfileModel.lastname;

            return(auth_RegisterModel);
        }
        public static Auth_UserModel RegisterUserModel_To_UserModel(Auth_RegisterUserModel registerModel)
        {
            Auth_UserModel auth_UserModel = new Auth_UserModel();

            auth_UserModel.username        = registerModel.username;
            auth_UserModel.email           = registerModel.email;
            auth_UserModel.firstname       = registerModel.firstname;
            auth_UserModel.lastname        = registerModel.lastname;
            auth_UserModel.password        = registerModel.password;
            auth_UserModel.googleSubjectID = "";
            auth_UserModel.isAdmin         = false;

            return(auth_UserModel);
        }
        public IActionResult CreateNewUser([FromBody] Auth_RegisterUserModel newUser)
        {
            Console.WriteLine("api/auth/signup");

            // Make it posible to disable this post request!
            if (_DisableSignup)
            {
                return(StatusCode(405, "Creating accounts have been disabled."));
            }

            // Validate user inputed data
            Tuple <bool, string> validation = _inputValidations.Auth_RegisterUserModelValidation(newUser);

            if (!validation.Item1)
            {
                return(StatusCode(405, validation.Item2));
            }

            newUser.password = Hash.HashPassword(newUser.password);

            // Check if user already exist
            if (_authAction.DoesEmailExist(newUser.email))
            {
                return(StatusCode(405, "Email already exist."));
            }
            if (_authAction.DoesUsernameExist(newUser.username))
            {
                return(StatusCode(405, "Username already exist."));
            }

            // Create new user, return user id, update token.
            int userID = _authAction.CreateNewUserUsingRegisterModel(newUser); // <- to determien path to blank profile picture. (proberly is a better way, but for now im going with this)

            if (UpdateToken(userID))
            {
                return(Ok("Successfully created your account!"));
            }
            else
            {
                return(StatusCode(500, "something went wrong"));
            }
        }
        public Tuple <bool, string> Auth_RegisterUserModelValidation(Auth_RegisterUserModel newUser)
        {
            if (!IsValidEmail(newUser.email))
            {
                return(Tuple.Create(false, "Email is not a valid email."));
            }

            string[] stringsToValidate =
            {
                newUser.username,
                newUser.firstname,
                newUser.lastname,
                newUser.email,
                newUser.password
            };
            Tuple <bool, string> doneGeneralValidation  = GeneralInputChecker(stringsToValidate);
            Tuple <bool, string> donePasswordValidation = PasswordInputChecker(newUser.password);
            Tuple <bool, string> doneUsernameValidation = UsernameInputChecker(newUser.username);

            if (AtleastOneSymbol(newUser.firstname) || AtleastOneSymbol(newUser.lastname) || newUser.firstname.Any(char.IsDigit) || newUser.lastname.Any(char.IsDigit))
            {
                return(Tuple.Create(false, "Your name should not contain any symbols or numbers"));
            }
            if (!doneUsernameValidation.Item1)
            {
                return(doneUsernameValidation);
            }
            if (!doneGeneralValidation.Item1)
            {
                return(doneGeneralValidation);
            }
            if (!donePasswordValidation.Item1)
            {
                return(donePasswordValidation);
            }
            return(Tuple.Create(true, String.Empty));
        }
        public int CreateNewUserUsingRegisterModel(Auth_RegisterUserModel newUser)
        {
            Auth_UserModel user = UserModelConverter.RegisterUserModel_To_UserModel(newUser);

            return(authQuery.CreateNewUser(user));
        }