]> git.mxchange.org Git - pizzaservice-war.git/commitdiff
Fix for multi-page registration:
authorRoland Häder <roland@mxchange.org>
Fri, 13 May 2016 08:36:02 +0000 (10:36 +0200)
committerRoland Haeder <roland@mxchange.org>
Fri, 13 May 2016 19:43:26 +0000 (21:43 +0200)
- a contact instance is needed to check for email address as it is stored there
- so first create a "half" contact instance (no gender, ...) and then check email address
- user name can be only checked, if required

src/java/org/mxchange/pizzaapplication/beans/register/PizzaUserRegisterWebSessionBean.java

index 7334b8b96dde3bbfd5776e52a273aca0b9dc4b6f..7bbe9d8e3711a85be6c0039d33f152fc6c8cefbb 100644 (file)
@@ -27,6 +27,8 @@ import javax.inject.Named;
 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
+import org.mxchange.jcontacts.contact.Contact;
+import org.mxchange.jcontacts.contact.UserContact;
 import org.mxchange.jusercore.events.registration.RegisteredUserEvent;
 import org.mxchange.jusercore.events.registration.UserRegisteredEvent;
 import org.mxchange.jusercore.exceptions.DataRepeatMismatchException;
@@ -165,21 +167,31 @@ public class PizzaUserRegisterWebSessionBean extends BasePizzaController impleme
                // Get user instance
                User user = this.userController.createUserInstance();
 
-               // Page 1 has only email address and maybe user name
+               // First check if user is not null and user name is not used + if same email address is entered
                if (null == user) {
                        // user must be set
                        throw new NullPointerException("user is null after createUserInstance() was called"); //NOI18N
                } else if ((this.userController.isUserNameRequired()) && (this.userController.isUserNameRegistered(user))) {
                        // User name is already used
                        throw new FaceletException(new UserNameAlreadyRegisteredException(user));
-               } else if (this.contactController.isEmailAddressRegistered(user.getUserContact())) {
-                       // Email address has already been taken
-                       throw new FaceletException(new EmailAddressAlreadyRegisteredException(user));
                } else if (!this.contactController.isSameEmailAddressEntered()) {
                        // Not same email address entered
                        throw new FaceletException(new DataRepeatMismatchException(MessageFormat.format("Email addresses not matching: {0} != {1}", this.contactController.getEmailAddress(), this.contactController.getEmailAddressRepeat()))); //NOI18N
                }
 
+               // Create half contact instance with email address
+               Contact contact = new UserContact();
+               contact.setContactEmailAddress(this.contactController.getEmailAddress());
+
+               // Set contact in user
+               user.setUserContact(contact);
+
+               // Check if email address is registered
+               if (this.contactController.isEmailAddressRegistered(user.getUserContact())) {
+                       // Email address has already been taken
+                       throw new FaceletException(new EmailAddressAlreadyRegisteredException(user));
+               }
+
                // Now only redirect to next page as the JSF does it
                return "register_page2"; //NOI18N
        }