]> git.mxchange.org Git - pizzaservice-war.git/blobdiff - src/java/org/mxchange/pizzaapplication/beans/customer/PizzaAdminCustomerWebRequestBean.java
Continued a bit:
[pizzaservice-war.git] / src / java / org / mxchange / pizzaapplication / beans / customer / PizzaAdminCustomerWebRequestBean.java
index 7c9bbd62b4c1d20268e4e6b142d807e9aeaf0f09..0c16549d1112d5ec0009c8fb8dc74a4784c2548f 100644 (file)
@@ -16,6 +16,7 @@
  */
 package org.mxchange.pizzaapplication.beans.customer;
 
+import java.text.MessageFormat;
 import javax.annotation.PostConstruct;
 import javax.enterprise.context.RequestScoped;
 import javax.enterprise.event.Event;
@@ -29,13 +30,16 @@ import javax.naming.NamingException;
 import org.mxchange.jcontacts.contact.Contact;
 import org.mxchange.jcontacts.contact.gender.Gender;
 import org.mxchange.jcontacts.exceptions.ContactAlreadyAddedException;
-import org.mxchange.jcustomercore.events.AdminAddedCustomerEvent;
-import org.mxchange.jcustomercore.events.CustomerAdminAddedEvent;
+import org.mxchange.jcustomercore.events.customer.added.AdminAddedCustomerEvent;
+import org.mxchange.jcustomercore.events.customer.added.CustomerAdminAddedEvent;
 import org.mxchange.jcustomercore.exceptions.CustomerAlreadyRegisteredException;
 import org.mxchange.jcustomercore.model.customer.Customer;
 import org.mxchange.jcustomercore.model.customer.status.CustomerAccountStatus;
+import org.mxchange.pizzaapplication.beans.BasePizzaController;
 import org.mxchange.pizzaapplication.beans.contact.PizzaAdminContactWebRequestController;
 import org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote;
+import org.mxchange.pizzaapplication.model.customer.PizzaCustomer;
+import org.mxchange.pizzaapplication.beans.helper.PizzaWebRequestController;
 
 /**
  * Administrative customer bean (controller)
@@ -44,7 +48,7 @@ import org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBea
  */
 @Named ("adminCustomerController")
 @RequestScoped
-public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRequestController {
+public class PizzaAdminCustomerWebRequestBean extends BasePizzaController implements PizzaAdminCustomerWebRequestController {
 
        /**
         * Serial number
@@ -62,6 +66,12 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe
         */
        private PizzaAdminCustomerSessionBeanRemote adminCustomerBean;
 
+       /**
+        * Admin helper instance
+        */
+       @Inject
+       private PizzaWebRequestController adminHelper;
+
        /**
         * An event being fired when an administrator has added a new customer
         */
@@ -85,7 +95,7 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe
                        Context context = new InitialContext();
 
                        // Try to lookup
-                       this.adminCustomerBean = (PizzaAdminCustomerSessionBeanRemote) context.lookup("java:global/PizzaService-ejb/admincustomer!org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote"); //NOI18N
+                       this.adminCustomerBean = (PizzaAdminCustomerSessionBeanRemote) context.lookup("java:global/pizzaservice-ejb/admincustomer!org.mxchange.pizzaapplication.model.customer.PizzaAdminCustomerSessionBeanRemote"); //NOI18N
                } catch (final NamingException e) {
                        // Throw again
                        throw new FaceletException(e);
@@ -95,13 +105,22 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe
        @Override
        public String addCustomer () {
                // Are at least some fields added?
-               if (!this.isCustomerDataSet()) {
+               if ((this.adminHelper.getContact() == null) && (!this.isCustomerDataSet())) {
                        // Not all customer data is set
                        throw new FaceletException("Please provide minimum personal data: gender, first_name, family_name"); //NOI18N
                }
 
-               // Get contact instance
-               Contact contact = this.adminContactController.createContactInstance();
+               // Init contact
+               Contact contact;
+
+               // Is the contact set in helper?
+               if (this.adminHelper.getContact() instanceof Contact) {
+                       // Get from helper
+                       contact = this.adminHelper.getContact();
+               } else {
+                       // Get new contact instance
+                       contact = this.adminContactController.createContactInstance();
+               }
 
                // Ask the EJB for a free customer number
                String customerNumber = this.adminCustomerBean.createCustomerNumber();
@@ -113,16 +132,22 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe
                Customer updatedCustomer;
 
                try {
-                       // Add customer and return updated
-                       updatedCustomer = this.adminCustomerBean.addCustomer(customer);
+                       // Add/link customer and return updated
+                       if (this.adminHelper.getContact() instanceof Contact) {
+                               // Link customer
+                               updatedCustomer = this.adminCustomerBean.linkCustomer(customer);
+
+                               // Remove contact instance
+                               this.adminHelper.setContact(null);
+                       } else {
+                               // Add new customer instance
+                               updatedCustomer = this.adminCustomerBean.addCustomer(customer);
+                       }
                } catch (final CustomerAlreadyRegisteredException | ContactAlreadyAddedException ex) {
                        // Throw again
                        throw new FaceletException(ex);
                }
 
-               // Add customer to list
-               this.customerController.addCustomer(updatedCustomer);
-
                // Fire event
                this.customerAddedEvent.fire(new CustomerAdminAddedEvent(updatedCustomer));
 
@@ -130,6 +155,32 @@ public class PizzaAdminCustomerWebRequestBean implements PizzaAdminCustomerWebRe
                return "admin_list_customer"; //NOI18N
        }
 
+       @Override
+       public void copyCustomerToController (final Customer customer) {
+               // Parameters must be valid
+               if (null == customer) {
+                       // Throw NPE
+                       throw new NullPointerException("customer is null"); //NOI18N
+               } else if (customer.getCustomerId() == null) {
+                       // Throw again ...
+                       throw new NullPointerException("customer.customerId is null"); //NOI18N
+               } else if (customer.getCustomerId() < 1) {
+                       // Invalid id number
+                       throw new IllegalArgumentException(MessageFormat.format("customer.customerId={0} is not valid", customer.getCustomerId())); //NOI18N
+               } else if (customer.getCustomerContact() == null) {
+                       // Throw NPE again
+                       throw new NullPointerException("customer.customerContact is null"); //NOI18N
+               } else if (customer.getCustomerContact().getContactId() == null) {
+                       // .. and again
+                       throw new NullPointerException("customer.customerContact.contactId is null"); //NOI18N
+               } else if (customer.getCustomerContact().getContactId() < 1) {
+                       // Invalid id
+                       throw new IllegalArgumentException(MessageFormat.format("customer.customerContact.contactId={0} is not valid", customer.getCustomerContact().getContactId())); //NOI18N
+               }
+
+               // @TODO Set all data
+       }
+
        /**
         * Post-initialization of this class
         */