diff --git a/app/src/main/java/me/gilo/wc/MainActivity.kt b/app/src/main/java/me/gilo/wc/MainActivity.kt index 78f16b0..551063c 100644 --- a/app/src/main/java/me/gilo/wc/MainActivity.kt +++ b/app/src/main/java/me/gilo/wc/MainActivity.kt @@ -7,6 +7,7 @@ import me.gilo.raison.ui.user.onboarding.SignInActivity import me.gilo.raison.ui.user.onboarding.SignUpActivity import me.gilo.wc.ui.customer.BasicCustomerDetailsActivity import me.gilo.wc.ui.customer.BillingAddressActivity +import me.gilo.wc.ui.customer.ShippingAddressActivity import me.gilo.wc.ui.home.HomeActivity import me.gilo.wc.ui.product.ProductActivity @@ -18,7 +19,7 @@ class MainActivity : AppCompatActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) - startActivity(Intent(baseContext, BillingAddressActivity::class.java)) + startActivity(Intent(baseContext, ShippingAddressActivity::class.java)) // val intent = Intent(baseContext, ProductActivity::class.java) // intent.putExtra("productId", 63) diff --git a/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt index 9852081..7561ca6 100644 --- a/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt @@ -5,6 +5,7 @@ import android.content.Context import android.content.Intent import android.os.Bundle import android.widget.Toast +import com.google.firebase.auth.FirebaseAuth import io.github.inflationx.viewpump.ViewPumpContextWrapper import kotlinx.android.synthetic.main.customer_billing_address.* import kotlinx.android.synthetic.main.drawer_filter.view.* @@ -107,6 +108,8 @@ class BillingAddressActivity : WooDroidActivity() { customer.billingAddress.country = country customer.billingAddress.phone = phone + customer.billingAddress.email = FirebaseAuth.getInstance().currentUser!!.email + viewModel.update(customer.id, customer).observe(this, Observer { response-> when (response!!.status()){ diff --git a/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt index bb97de8..c7b0beb 100644 --- a/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt @@ -1,16 +1,23 @@ package me.gilo.wc.ui.customer +import android.arch.lifecycle.Observer import android.content.Context +import android.content.Intent import android.os.Bundle +import android.widget.Toast import io.github.inflationx.viewpump.ViewPumpContextWrapper -import kotlinx.android.synthetic.main.activity_shipping_address.* +import kotlinx.android.synthetic.main.customer_shipping_address.* import me.gilo.wc.R +import me.gilo.wc.common.Status import me.gilo.wc.ui.WooDroidActivity import me.gilo.wc.viewmodels.CustomerViewModel +import me.gilo.woodroid.models.Customer +import me.gilo.woodroid.models.ShippingAddress class ShippingAddressActivity : WooDroidActivity() { override lateinit var viewModel : CustomerViewModel + lateinit var customer : Customer override fun attachBaseContext(newBase: Context) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) @@ -21,8 +28,160 @@ class ShippingAddressActivity : WooDroidActivity() { setContentView(R.layout.activity_shipping_address) viewModel = getViewModel(CustomerViewModel::class.java) - title = "Shipping Address" + title = "Billing Address" + + customer() } + private fun customer() { + viewModel.currentCustomer().observe(this, Observer { + response-> + when (response!!.status()){ + Status.LOADING ->{ + showLoading("Retrieve customer details", "This will only take a short while") + } + + Status.SUCCESS ->{ + stopShowingLoading() + customer = response.data()[0] + + if (customer.shippingAddress != null) { + etFirstName.setText(customer.shippingAddress.firstName) + etLastName.setText(customer.shippingAddress.firstName) + etCompany.setText(customer.shippingAddress.company) + etStreetAddress.setText(customer.shippingAddress.address1) + etStreetAddress2.setText(customer.shippingAddress.address2) + etCity.setText(customer.shippingAddress.city) + etState.setText(customer.shippingAddress.state) + etZipcode.setText(customer.shippingAddress.postcode) + etCountry.setText(customer.shippingAddress.country) + }else{ + etFirstName.setText(customer.firstName) + etLastName.setText(customer.firstName) + } + } + + Status.ERROR ->{ + stopShowingLoading() + Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show() + } + + Status.EMPTY ->{ + stopShowingLoading() + } + + } + }) + + flSave.setOnClickListener{save()} + + } + + private fun save() { + if (validates()) { + val firstName = etFirstName.text.toString() + val lastName = etLastName.text.toString() + val company = etCompany.text.toString() + val streetAddress = etStreetAddress.text.toString() + val streetAddress2 = etStreetAddress2.text.toString() + val city = etCity.text.toString() + val state = etState.text.toString() + val zipcode = etZipcode.text.toString() + val country = etCountry.text.toString() + + customer.shippingAddress = ShippingAddress() + + customer.shippingAddress.firstName = firstName + customer.shippingAddress.lastName = lastName + customer.shippingAddress.company = company + customer.shippingAddress.address1 = streetAddress + customer.shippingAddress.address2 = streetAddress2 + + customer.shippingAddress.city = city + customer.shippingAddress.state = state + customer.shippingAddress.postcode = zipcode + customer.shippingAddress.country = country + + viewModel.update(customer.id, customer).observe(this, Observer { + response-> + when (response!!.status()){ + Status.LOADING ->{ + showLoading("Uploading account details", "This will only take a short while") + } + + Status.SUCCESS ->{ + stopShowingLoading() + startActivity(Intent(baseContext, BillingAddressActivity::class.java)) + } + + Status.ERROR ->{ + stopShowingLoading() + Toast.makeText(baseContext, response.error().message.toString(), Toast.LENGTH_LONG).show() + } + + Status.EMPTY ->{ + + } + + } + }) + + + + } else { + Toast.makeText(this, "Please correct the information entered", Toast.LENGTH_SHORT).show() + } + } + + private fun validates(): Boolean { + tilFirstName.isErrorEnabled = false + tilLastName.isErrorEnabled = false + tilStreetAddress.isErrorEnabled = false + tilCity.isErrorEnabled = false + tilZipcode.isErrorEnabled = false + tilCountry.isErrorEnabled = false + + var validation = true + + val firstName = etFirstName.text.toString() + val lastName = etLastName.text.toString() + val streetAddress = etStreetAddress.text.toString() + val city = etCity.text.toString() + val zipcode = etZipcode.text.toString() + val country = etCountry.text.toString() + + if (firstName.isEmpty()) { + tilFirstName.error = "Please fill this" + validation = false + } + + if (lastName.isEmpty()) { + tilLastName.error = "Please fill this" + validation = false + } + + if (streetAddress.isEmpty()) { + tilStreetAddress.error = "Please fill this" + validation = false + } + + if (city.isEmpty()) { + tilCity.error = "Please fill this" + validation = false + } + + if (zipcode.isEmpty()) { + tilZipcode.error = "Please fill this" + validation = false + } + + if (country.isEmpty()) { + tilCountry.error = "Please fill this" + validation = false + } + + return validation + } + } diff --git a/app/src/main/res/layout/customer_shipping_address.xml b/app/src/main/res/layout/customer_shipping_address.xml index ebd1465..f9c2d5b 100644 --- a/app/src/main/res/layout/customer_shipping_address.xml +++ b/app/src/main/res/layout/customer_shipping_address.xml @@ -126,7 +126,7 @@ android:layout_height="wrap_content" android:hint="Company" android:id="@+id/etCompany" - android:inputType="textEmailAddress" + android:inputType="text" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -151,7 +151,7 @@ android:layout_height="wrap_content" android:hint="Street Address" android:id="@+id/etStreetAddress" - android:inputType="textPassword" + android:inputType="textPostalAddress" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -174,7 +174,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Street Address 2" - android:inputType="textPassword" + android:inputType="textPostalAddress" android:paddingBottom="16dp" android:id="@+id/etStreetAddress2" android:textColor="#5f6368" @@ -206,7 +206,7 @@ android:layout_height="wrap_content" android:hint="City" android:id="@+id/etCity" - android:inputType="textPassword" + android:inputType="text" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -231,7 +231,7 @@ android:layout_height="wrap_content" android:hint="State" android:id="@+id/etState" - android:inputType="textPassword" + android:inputType="text" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -264,7 +264,7 @@ android:layout_height="wrap_content" android:hint="Zip code" android:id="@+id/etZipcode" - android:inputType="textPassword" + android:inputType="number" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -298,7 +298,7 @@ android:layout_height="wrap_content" android:hint="Country" android:id="@+id/etCountry" - android:inputType="textPassword" + android:inputType="text" android:paddingBottom="16dp" android:textColor="#5f6368" android:textColorHint="#9e9e9e" @@ -308,7 +308,6 @@ -