# createCustomer

### Create a customer in the Cloud4Wi account&#x20;

This method initiative the customer object in the Cloud4Wi account. This method must be invoked before installing the WiFi Profile.

```java
/**
     * Create a customer in the Cloud4Wi account
     *
     * @param customer - user you want to create
     * @param deduplicate - attribute that will be used for customer deduplication.
     * @param onSuccess - invoked if customer successfully created
     * @param onError - invoked if exception occurred
     *
     * @return future with CustomerCreateResponse object which represents saved customer
     */
    public Future<CustomerCreateResponse> createCustomer(
                   Customer customer,
                   String deduplicate, 
                   Callback<CustomerCreateResponse> onSuccess, 
                   Callback<MobileSDKException> onError);
```

Calling this function It is equivalent to a make a login. The success of this function opens a session with the customer returned. To close the session use `logout()` method.&#x20;

### Customer deduplication

The `deduplicate` string is optional. If set, the system will check if an existing customer with a matching attribute already exists in the same Cloud4Wi account.&#x20;

If a matching record exists, the `createCustomer` method will override the existing matching customer attributes with the one passed in the `createCustomer` (except for `username, password,` and `source` )

Pssible values of `deduplicate` string are:

```
"phoneNumber", "email", "extId", "extProp1", "extProp2"
```

To create a customer without any deduplicaiton check, set `deduplicate` string to `null.`

```
cloud4wiSDK.createCustomer(customer, null, ...)
```

### Customer username and password

If `username` and `password` are not set in the Customer object, they are assigned randomly during the customer creation and returned to the app in the CustomerCreate Response object.

###

## Examples

### Create customer&#x20;

```swift
Customer customer = new Customer();
customer.setFirstName("Luigi");
customer.setEmail("luigi@cloud4wi.com");

customer.addPolicy("termsOfUse", true);
customer.addPolicy("privacy", true);

//deduplication on email attributes
cloud4wiSDK.createCustomer(customer, "email", ...)
```

### Create customer without deduplication

```swift
cloud4wiSDK.createCustomer(customer, null, ...)
```
