public CreateCustomerResult AddCustomer(CustomerModel customer)
        {
            var result = new CreateCustomerResult();

            if (Repo.IsCustomerExistByPhoneNumber(customer.PhoneNumber))
            {
                result.IsCreated   = false;
                result.Description = customerExist;
            }
            else
            {
                var convertedCustomer = ConvertCustomer(customer);
                if (Repo.AddUser(convertedCustomer))
                {
                    result.IsCreated   = true;
                    result.Id          = Repo.GetCustomerByPhoneAndPassword(customer.PhoneNumber, customer.Password).UserId;
                    result.Description = customerCreated;
                }
                else
                {
                    result.IsCreated   = false;
                    result.Description = customerFailed;
                }
            }
            return(result);
        }
        public async Task <IActionResult> Execute(CreateCustomerModel data)
        {
            var customer = new Customer(data.Name);
            await _db.AddAsync(customer);

            await _db.SaveChangesAsync();

            var result = new CreateCustomerResult {
                Id = customer.Id, Name = customer.Name
            };

            return(Ok(result));
        }
        public ManagerResponse <CreateCustomerResult, CommerceCustomer> CreateCustomer(CommerceCustomer commerceCustomer)
        {
            Assert.ArgumentNotNull(commerceCustomer, nameof(commerceCustomer));

            var createCustomerRequest = new CreateCustomerRequest(commerceCustomer);

            CreateCustomerResult createCustomerResult =
                this.customerServiceProvider.CreateCustomer(createCustomerRequest);

            if (!createCustomerResult.Success)
            {
                Log.Warn("Create customer failed", this.GetType());
            }

            return(new ManagerResponse <CreateCustomerResult, CommerceCustomer>(createCustomerResult, createCustomerResult.CommerceCustomer));
        }
        protected bool CreateUser()
        {
            Explore.NetSuite.DataAccess.NDAL client = new Explore.NetSuite.DataAccess.NDAL();

                //AccountDropDown.SelectedItem.Value;
                string company = CompanyLabelTextBox.Text;
                if (company == "")
                    company = null;

                PriceLevels thelevel = PriceLevels.Educational;
                switch (AccountDropDown.SelectedItem.Value)
                {
                    case "1":
                        thelevel = PriceLevels.MSRP;
                        break;
                    case "2":
                        thelevel = PriceLevels.Educational;
                        break;
                    case "3":
                        thelevel = PriceLevels.State;
                        break;
                    default: break;
                }
                try
                {
                    CreateCustomerResult newCustomer = new CreateCustomerResult();
                    if (Session["UserID"] == null)
                        newCustomer = client.CreateCustomer(company, PhoneLabelTextBox.Text, EmailTextBox.Text
                        , FirstNameTextBox.Text, LastNameTextBox.Text, thelevel, TitleTextBox.Text, null);

                    bool EmailChanged = false;

                    if (newCustomer != null || Session["UserID"] != null)
                    {

                        // retrive the newly created customer so we can update it with an address and password

                        string customerID = "";

                        if (Session["UserID"] != null)
                            customerID = Session["UserID"].ToString();
                        else
                            customerID = newCustomer.CustomerInternalID;

                        Customer customer = client.GetCustomer(customerID);

                        if (Session["UserID"] != null)
                        {
                            if(customer.Email != EmailTextBox.Text)
                                EmailChanged = true;
                            customer.Email = EmailTextBox.Text;
                            customer.CompanyName = company;
                            customer.Phone = PhoneLabelTextBox.Text;
                            customer.FirstName = FirstNameTextBox.Text;
                            customer.LastName = LastNameTextBox.Text;
                            customer.CustomerType = thelevel;
                            customer.Title = TitleTextBox.Text;
                        }

                        customer.JobRole = GetJobRole(RoleDropDown.SelectedItem.Text);

                        // assign at least one address
                        string state = "";
                        if (StateLabel1RadComboBox.Visible)
                            state = StateLabel1RadComboBox.SelectedItem.Text;
                        else
                            state = StateLabel1TextBox.Text;

                        //create primary address: this is no loger being done by Andrew/John request: bug 2387
                        //Address addr = new Address();
                        //addr.Attention = CompanyLabelTextBox.Text;
                        //addr.CompanyName = CompanyLabelTextBox.Text;
                        //addr.Address1 = Address1LabelTextBox.Text;
                        //addr.Address2 = Address2LabelTextBox.Text;
                        //addr.City = CityLabelTextBox.Text;
                        //addr.State = state;
                        //addr.Zip = ZipLabelTextBox.Text;
                        //addr.DefaultBilling = false;
                        //addr.DefaultShipping = true;
                        //addr.DefaultAccount = false;
                        //addr.DefaultDelivery = false;
                        //DataSet dsCount = doQuery("SELECT * FROM Countries WHERE country_name = '" +
                        //    CountryLabel1RadComboBox.SelectedItem.Text + "'");
                        //addr.Country = dsCount.Tables[0].Rows[0]["country_2_code"].ToString();
                        //addr.Residential = ResidentialCheckBox.Checked;
                        //addr.Phone = PhoneLabelTextBox.Text;

                        //if (exTextBox.Text.Trim() != "")
                        //{
                        //    addr.Phone = PhoneLabelTextBox.Text + " x" + exTextBox.Text.Trim();
                        //}

                        Address addr2 = new Address();
                        addr2.Attention = FirstNameTextBox.Text + " " + LastNameTextBox.Text;
                        addr2.CompanyName = CompanyLabelTextBox.Text;
                        addr2.Address1 = Address1LabelTextBox.Text;
                        addr2.Address2 = Address2LabelTextBox.Text;
                        addr2.City = CityLabelTextBox.Text;
                        addr2.State = state;
                        addr2.Zip = ZipLabelTextBox.Text;
                        addr2.DefaultBilling = false;
                        addr2.DefaultShipping = false;
                        addr2.DefaultAccount = true;
                        addr2.DefaultDelivery = false;

                        DataSet dsCount = doQuery("SELECT * FROM Countries WHERE country_name = '" +
                            CountryLabel1RadComboBox.SelectedItem.Text + "'");
                        addr2.Country = dsCount.Tables[0].Rows[0]["country_2_code"].ToString();
                        addr2.Residential = ResidentialCheckBox.Checked;
                        addr2.Phone = PhoneLabelTextBox.Text;

                        if (exTextBox.Text.Trim() != "")
                        {
                            addr2.Phone = PhoneLabelTextBox.Text + " x" + exTextBox.Text.Trim();
                        }

                        List<NDAL.DataTypes.Address> addresses = new List<NDAL.DataTypes.Address>();
                        //addresses.Add(addr);
                        addresses.Add(addr2);

                        if (Session["UserID"] == null)
                        {
                            customer.Addresses = addresses;
                        }
                        else
                        {
                            for(int j=0;j<customer.Addresses.Count;j++)
                            {
                                if (customer.Addresses[j].DefaultAccount.Value)
                                {
                                    customer.Addresses[j] = addr2;
                                }
                            }
                        }

                        // set a password for this customer
                        customer.Password = PasswordTextBox.Text;

                        // save dynamic fields
                        object refCust = customer;
                        SaveDynamicFields("1", ref refCust);
                        customer = (Customer)refCust;
                        // perform the update, sending back the complete customer object
                        client.UpdateCustomer(customer);
                        Session["HasUserBeenClicked"] = "true";
                        // get the customer again to verify password was set
                        Customer getCustomer = client.GetCustomer(customerID);

                        string custID = "";

                        //Sign the new user in
                        bool isAuth = false;
                        if (Session["UserID"] == null)
                            isAuth = client.Authenticate(EmailTextBox.Text, PasswordTextBox.Text, out custID);
                        else
                        {
                            if (EmailChanged)
                            {
                                isAuth = client.Authenticate(EmailTextBox.Text, PasswordTextBox.Text, out custID);
                            }
                            else
                            {
                                custID = Session["UserID"].ToString();
                            }
                        }

                        Session["UserID"] = custID;
                        Session["UserType"] = getCustomer.CustomerType;
                        Session["User"] = getCustomer.FirstName;
                        Session["UserSalesRep"] = getCustomer.SalesRepID;

                        string groups = "";
                        groups = "1";
                        UserTracking();
                        FormsAuthenticationTicket authTicket =
                                        new FormsAuthenticationTicket(1, EmailTextBox.Text.Trim(),
                                                      DateTime.Now,
                                                      DateTime.Now.AddMinutes(60),
                                                      false, groups);

                        // Now encrypt the ticket.
                        string encryptedTicket =
                          FormsAuthentication.Encrypt(authTicket);
                        // Create a cookie and add the encrypted ticket to the
                        // cookie as data.
                        HttpCookie authCookie =
                                     new HttpCookie(FormsAuthentication.FormsCookieName,
                                                    encryptedTicket);
                        // Add the cookie to the outgoing cookies collection.
                        Response.Cookies.Add(authCookie);
                        //}
                        //catch (CommandErrorException ex)
                        //{
                        //    Console.WriteLine("Oh No! Code: {0} Message: {1}", ex.ErrorCode, ex.Message);

                        //}
                        //catch (TimeoutException ex)
                        //{
                        //    Console.WriteLine("WCF client network request timed out, message: {0}", ex.Message);

                        //}
                        //catch (CommunicationException ex)
                        //{
                        //    Console.WriteLine("WCF communication exception, message: {0}", ex.Message);

                        //}
                        Static1Messages.Text = "";
                        return true;

                    }
                    else
                    {

                        Static1Messages.Text = "A customer with this email address already exists.";
                        return false;
                    }
                }
                catch (Exception ex)
                {
                    if (ex.ToString().Contains("Existing Customer"))
                    {
                        Static1Messages.Text = "A customer with this email address already exists.";
                    }
                    else
                    {
                        ErrorLabel.Text = ex.ToString();
                    }
                    return false;
                }
        }