diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9298c27..641759d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,21 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> + + + + + + create(Customer customer) { + final WooLiveData callBack = new WooLiveData(); + woocommerce.CustomerRepository().create(customer).enqueue(callBack); + return callBack; + } + + + public WooLiveData customer(int id) { + final WooLiveData callBack = new WooLiveData(); + woocommerce.CustomerRepository().customer(id).enqueue(callBack); + return callBack; + } + + public WooLiveData> customers() { + final WooLiveData> callBack = new WooLiveData(); + + woocommerce.CustomerRepository().customers().enqueue(callBack); + + return callBack; + } + + public WooLiveData> customers(CustomerFilter customerFilter) { + final WooLiveData> callBack = new WooLiveData(); + woocommerce.CustomerRepository().customers(customerFilter).enqueue(callBack); + return callBack; + } + + public WooLiveData update(int id, Customer customer) { + final WooLiveData callBack = new WooLiveData(); + woocommerce.CustomerRepository().update(id, customer).enqueue(callBack); + + return callBack; + } + + public WooLiveData delete(int id) { + final WooLiveData callBack = new WooLiveData(); + woocommerce.CustomerRepository().delete(id).enqueue(callBack); + + return callBack; + } + + public WooLiveData delete(int id, boolean force) { + final WooLiveData callBack = new WooLiveData(); + woocommerce.CustomerRepository().delete(id, force).enqueue(callBack); + + return callBack; + } + + +} diff --git a/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt new file mode 100644 index 0000000..445e157 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt @@ -0,0 +1,41 @@ +package me.gilo.wc.ui + +import android.arch.lifecycle.ViewModel +import android.content.Context +import android.os.Bundle +import android.support.design.widget.Snackbar +import android.support.v7.app.AppCompatActivity +import io.github.inflationx.viewpump.ViewPumpContextWrapper +import me.gilo.wc.R + +import kotlinx.android.synthetic.main.activity_basic_customer_details.* +import me.gilo.raison.ui.user.onboarding.SignInActivity +import me.gilo.wc.common.BaseActivity +import me.gilo.wc.ui.state.ProgressDialogFragment +import me.gilo.wc.viewmodels.CustomerViewModel +import me.gilo.wc.viewmodels.UserViewModel +import java.util.regex.Matcher +import java.util.regex.Pattern + +abstract class WooDroidActivity : BaseActivity() { + + + abstract var viewModel : T + private lateinit var progressDialog: ProgressDialogFragment + + override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) + } + + private fun showLoading(title: String, message: String) { + val manager = supportFragmentManager + progressDialog = ProgressDialogFragment.newInstance(title, message) + progressDialog.isCancelable = false + progressDialog.show(manager, "progress") + } + + private fun stopShowingLoading() { + progressDialog.dismiss() + } + +} diff --git a/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt b/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt new file mode 100644 index 0000000..890b942 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/ui/customer/BasicCustomerDetailsActivity.kt @@ -0,0 +1,38 @@ +package me.gilo.wc.ui.customer + +import android.content.Context +import android.os.Bundle +import android.support.design.widget.Snackbar +import android.support.v7.app.AppCompatActivity +import io.github.inflationx.viewpump.ViewPumpContextWrapper +import me.gilo.wc.R + +import kotlinx.android.synthetic.main.activity_basic_customer_details.* +import me.gilo.raison.ui.user.onboarding.SignInActivity +import me.gilo.wc.common.BaseActivity +import me.gilo.wc.ui.WooDroidActivity +import me.gilo.wc.ui.state.ProgressDialogFragment +import me.gilo.wc.viewmodels.CustomerViewModel +import me.gilo.wc.viewmodels.UserViewModel +import java.util.regex.Matcher +import java.util.regex.Pattern + +class BasicCustomerDetailsActivity : WooDroidActivity() { + + + override lateinit var viewModel : CustomerViewModel + + override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_basic_customer_details) + + viewModel = getViewModel(CustomerViewModel::class.java) + title = "Basic Details" + + } + +} 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 new file mode 100644 index 0000000..91386d4 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/ui/customer/BillingAddressActivity.kt @@ -0,0 +1,28 @@ +package me.gilo.wc.ui.customer + +import android.content.Context +import android.os.Bundle +import io.github.inflationx.viewpump.ViewPumpContextWrapper +import kotlinx.android.synthetic.main.activity_billing_address.* +import me.gilo.wc.R +import me.gilo.wc.ui.WooDroidActivity +import me.gilo.wc.viewmodels.CustomerViewModel + +class BillingAddressActivity : WooDroidActivity() { + + override lateinit var viewModel : CustomerViewModel + + override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_billing_address) + + viewModel = getViewModel(CustomerViewModel::class.java) + title = "Billing Address" + + } + +} 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 new file mode 100644 index 0000000..bb97de8 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/ui/customer/ShippingAddressActivity.kt @@ -0,0 +1,28 @@ +package me.gilo.wc.ui.customer + +import android.content.Context +import android.os.Bundle +import io.github.inflationx.viewpump.ViewPumpContextWrapper +import kotlinx.android.synthetic.main.activity_shipping_address.* +import me.gilo.wc.R +import me.gilo.wc.ui.WooDroidActivity +import me.gilo.wc.viewmodels.CustomerViewModel + +class ShippingAddressActivity : WooDroidActivity() { + + override lateinit var viewModel : CustomerViewModel + + override fun attachBaseContext(newBase: Context) { + super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_shipping_address) + + viewModel = getViewModel(CustomerViewModel::class.java) + title = "Shipping Address" + + } + +} diff --git a/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java b/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java new file mode 100644 index 0000000..ac82fa1 --- /dev/null +++ b/app/src/main/java/me/gilo/wc/viewmodels/CustomerViewModel.java @@ -0,0 +1,51 @@ +package me.gilo.wc.viewmodels; + +import android.arch.lifecycle.ViewModel; +import me.gilo.wc.common.WooLiveData; +import me.gilo.wc.repo.CustomerRepository; +import me.gilo.woodroid.models.Customer; +import me.gilo.woodroid.models.filters.CustomerFilter; + +import javax.inject.Inject; +import java.util.List; + + +public final class CustomerViewModel extends ViewModel { + private final CustomerRepository customerRepository; + + @Inject + CustomerViewModel(CustomerRepository customerRepository) { + this.customerRepository = customerRepository; + + } + + public WooLiveData create(Customer customer) { + return customerRepository.create(customer); + } + + + public WooLiveData customer(int id) { + return customerRepository.customer(id); + } + + public WooLiveData> customers() { + return customerRepository.customers(); + } + + public WooLiveData> customers(CustomerFilter customerFilter) { + return customerRepository.customers(customerFilter); + } + + public WooLiveData update(int id, Customer customer) { + return customerRepository.update(id, customer); + } + + public WooLiveData delete(int id) { + return customerRepository.delete(id); + } + + public WooLiveData delete(int id, boolean force) { + return customerRepository.delete(id, force); + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_basic_customer_details.xml b/app/src/main/res/layout/activity_basic_customer_details.xml new file mode 100644 index 0000000..3f9e183 --- /dev/null +++ b/app/src/main/res/layout/activity_basic_customer_details.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_billing_address.xml b/app/src/main/res/layout/activity_billing_address.xml new file mode 100644 index 0000000..1aa46d1 --- /dev/null +++ b/app/src/main/res/layout/activity_billing_address.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_shipping_address.xml b/app/src/main/res/layout/activity_shipping_address.xml new file mode 100644 index 0000000..d620732 --- /dev/null +++ b/app/src/main/res/layout/activity_shipping_address.xml @@ -0,0 +1,13 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_basic_customer_details.xml b/app/src/main/res/layout/content_basic_customer_details.xml new file mode 100644 index 0000000..277b2b7 --- /dev/null +++ b/app/src/main/res/layout/content_basic_customer_details.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_billing_address.xml b/app/src/main/res/layout/content_billing_address.xml new file mode 100644 index 0000000..f3046e2 --- /dev/null +++ b/app/src/main/res/layout/content_billing_address.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_shipping_address.xml b/app/src/main/res/layout/content_shipping_address.xml new file mode 100644 index 0000000..e1dbbf2 --- /dev/null +++ b/app/src/main/res/layout/content_shipping_address.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 07fede1..46bc7f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -33,5 +33,8 @@ Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry\'s standard dummy text ever since the 1500s MyOrdersActivity UserDetailsActivity + BasicCustomerDetailsActivity + BillingAddressActivity + ShippingAddressActivity