From 1ec0747e26214e1312af7dc0be83824edb7e7dec Mon Sep 17 00:00:00 2001 From: Gilbert Kimutai Date: Thu, 25 Apr 2019 06:15:39 +0300 Subject: [PATCH] complete order page --- .../wc/adapter/viewholder/OrderViewHolder.kt | 24 +++ .../java/me/gilo/wc/ui/WooDroidActivity.kt | 94 +++++++++-- .../java/me/gilo/wc/ui/home/HomeActivity.kt | 19 ++- .../me/gilo/wc/ui/order/MyOrdersActivity.kt | 4 - .../me/gilo/wc/ui/product/CartActivity.kt | 2 +- app/src/main/res/layout/single_order_item.xml | 147 ++++++++++++++++-- .../java/me/gilo/woodroid/models/Order.java | 13 ++ 7 files changed, 264 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/OrderViewHolder.kt b/app/src/main/java/me/gilo/wc/adapter/viewholder/OrderViewHolder.kt index fb7d05b..6a6a0ef 100644 --- a/app/src/main/java/me/gilo/wc/adapter/viewholder/OrderViewHolder.kt +++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/OrderViewHolder.kt @@ -4,10 +4,13 @@ import android.content.Context import android.content.Intent import android.support.v7.widget.RecyclerView import android.text.Html +import android.text.SpannableString import android.view.View import android.widget.TextView import me.gilo.wc.R import me.gilo.wc.ui.product.ShopActivity +import me.gilo.wc.utils.DateUtils +import me.gilo.wc.utils.StringFormatter import me.gilo.woodroid.models.Category import me.gilo.woodroid.models.Order @@ -16,7 +19,28 @@ class OrderViewHolder(val context: Context, itemView: View) : fun renderView(order: Order) { val tvTitle = itemView.findViewById(R.id.tvTitle) + val tvDescription = itemView.findViewById(R.id.tvDescription) + val tvPrice = itemView.findViewById(R.id.tvPrice) + val tvStatus = itemView.findViewById(R.id.tvStatus) + val tvDate = itemView.findViewById(R.id.tvDate) + + + tvTitle.text = "#" + order.orderNumber + tvStatus.text = order.status + + tvDate.text = DateUtils.getDateString_shortAndSmart(order.getDateCreated()) + + tvPrice.text = SpannableString("Ksh${order.total}") + + var description = "" + + for (lineItem in order.lineItems){ + description += lineItem.name + "(" + lineItem.quantity + "), " + } + + + tvDescription.text = description } diff --git a/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt index ed97fc1..eac5f9a 100644 --- a/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/WooDroidActivity.kt @@ -2,21 +2,23 @@ package me.gilo.wc.ui import android.arch.lifecycle.ViewModel import android.content.Context +import android.content.Intent import android.os.Bundle -import android.support.design.widget.Snackbar -import android.support.v7.app.AppCompatActivity +import android.os.PersistableBundle +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.FrameLayout +import android.widget.TextView import android.widget.Toast 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.common.Status +import me.gilo.wc.ui.product.CartActivity 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 +import me.gilo.wc.viewmodels.CartViewModel +import me.gilo.wc.viewmodels.ProductViewModel abstract class WooDroidActivity : BaseActivity() { @@ -26,6 +28,13 @@ abstract class WooDroidActivity : BaseActivity() { override fun attachBaseContext(newBase: Context) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) + + } + + override fun onResume() { + super.onResume() + + cart() } fun showLoading() { @@ -47,4 +56,71 @@ abstract class WooDroidActivity : BaseActivity() { Toast.makeText(baseContext, text, Toast.LENGTH_LONG).show() } + var tvCartCounter : TextView? = null + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.product, menu) + + val item = menu.findItem(me.gilo.wc.R.id.menu_cart) + val rootView = item.actionView as FrameLayout + tvCartCounter = rootView.findViewById(R.id.tvCart_counter) + + rootView.setOnClickListener{startActivity(Intent(baseContext, CartActivity::class.java))} + + return true + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + return when (item.itemId) { + R.id.menu_cart -> { + + true + } + + else -> super.onOptionsItemSelected(item) + } + } + + open fun cart() { + var viewModel = getViewModel(CartViewModel::class.java) + + viewModel.cart().observe(this, android.arch.lifecycle.Observer { response -> + when (response!!.status()) { + Status.LOADING -> { + + } + + Status.SUCCESS -> { + for (cartItem in response.data()){ + + } + + if ( response.data().size == 0 && tvCartCounter != null){ + tvCartCounter?.visibility = View.GONE + }else{ + tvCartCounter?.visibility = View.VISIBLE + tvCartCounter?.text = response.data().size.toString() + } + + + } + + Status.ERROR -> { + + } + + Status.EMPTY -> { + if ( response.data().size == 0 && tvCartCounter != null){ + tvCartCounter?.visibility = View.GONE + }else{ + tvCartCounter?.visibility = View.VISIBLE + tvCartCounter?.text = response.data().size.toString() + } + } + } + + }) + + } + } diff --git a/app/src/main/java/me/gilo/wc/ui/home/HomeActivity.kt b/app/src/main/java/me/gilo/wc/ui/home/HomeActivity.kt index f564cad..5e1096f 100644 --- a/app/src/main/java/me/gilo/wc/ui/home/HomeActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/home/HomeActivity.kt @@ -1,19 +1,20 @@ package me.gilo.wc.ui.home -import android.content.Context import android.os.Bundle import android.support.design.widget.BottomNavigationView import android.support.v4.app.Fragment -import io.github.inflationx.viewpump.ViewPumpContextWrapper +import android.view.View import kotlinx.android.synthetic.main.activity_home.* import me.gilo.wc.R -import me.gilo.wc.common.BaseActivity +import me.gilo.wc.common.Status +import me.gilo.wc.models.CartLineItem +import me.gilo.wc.ui.WooDroidActivity +import me.gilo.wc.viewmodels.CartViewModel +import me.gilo.wc.viewmodels.ProductViewModel +import me.gilo.woodroid.models.CartItem -class HomeActivity : BaseActivity() { - - override fun attachBaseContext(newBase: Context) { - super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) - } +class HomeActivity : WooDroidActivity() { + override lateinit var viewModel: CartViewModel private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> @@ -42,6 +43,8 @@ class HomeActivity : BaseActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) + setSupportActionBar(toolbar) + navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) val transaction = supportFragmentManager.beginTransaction() diff --git a/app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt b/app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt index 519a0a4..f6998f5 100644 --- a/app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/order/MyOrdersActivity.kt @@ -25,10 +25,6 @@ class MyOrdersActivity : WooDroidActivity() { lateinit var adapter: OrderAdapter - override fun attachBaseContext(newBase: Context) { - super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my_orders) diff --git a/app/src/main/java/me/gilo/wc/ui/product/CartActivity.kt b/app/src/main/java/me/gilo/wc/ui/product/CartActivity.kt index 3875706..51a1a43 100644 --- a/app/src/main/java/me/gilo/wc/ui/product/CartActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/product/CartActivity.kt @@ -73,7 +73,7 @@ class CartActivity : WooDroidActivity() { } - private fun cart() { + override fun cart() { viewModel.cart().observe(this, android.arch.lifecycle.Observer { response -> when (response!!.status()) { Status.LOADING -> { diff --git a/app/src/main/res/layout/single_order_item.xml b/app/src/main/res/layout/single_order_item.xml index c157954..fb63b5c 100644 --- a/app/src/main/res/layout/single_order_item.xml +++ b/app/src/main/res/layout/single_order_item.xml @@ -1,29 +1,142 @@ - + - + android:gravity="top" + android:orientation="horizontal" + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - diff --git a/woodroid/src/main/java/me/gilo/woodroid/models/Order.java b/woodroid/src/main/java/me/gilo/woodroid/models/Order.java index cd8050d..6a48f72 100644 --- a/woodroid/src/main/java/me/gilo/woodroid/models/Order.java +++ b/woodroid/src/main/java/me/gilo/woodroid/models/Order.java @@ -3,6 +3,7 @@ package me.gilo.woodroid.models; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -12,6 +13,10 @@ public class Order { public String orderNumber; @SerializedName("created_at") public String createdAt; + + @SerializedName("date_created") + public Date dateCreated; + @SerializedName("updated_at") public String updatedAt; @SerializedName("completed_at") @@ -305,4 +310,12 @@ public class Order { public void setCustomer(Customer customer) { this.customer = customer; } + + public Date getDateCreated() { + return dateCreated; + } + + public void setDateCreated(Date dateCreated) { + this.dateCreated = dateCreated; + } }