diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bfe24b9..8f8b5ef 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,44 +1,49 @@ + package="me.gilo.wc"> - + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + \ No newline at end of file diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt b/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt index b418963..5eaa7bd 100644 --- a/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt +++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/CouponViewHolder.kt @@ -1,11 +1,13 @@ package me.gilo.wc.adapter.viewholder import android.content.Context +import android.content.Intent import android.support.v7.widget.RecyclerView import android.text.Html import android.view.View import android.widget.TextView import me.gilo.wc.R +import me.gilo.wc.ui.coupon.CouponActivity import me.gilo.woodroid.models.Coupon class CouponViewHolder(val context: Context, itemView: View) : @@ -17,6 +19,13 @@ class CouponViewHolder(val context: Context, itemView: View) : tvTitle.text = coupon.code.toUpperCase() tvDescription.text = Html.fromHtml(coupon.description) + + itemView.setOnClickListener{ + val intent = Intent(context, CouponActivity::class.java) + intent.putExtra("couponId", coupon.id) + + context.startActivity(intent) + } } diff --git a/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java b/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java index 55aa6df..5272fbe 100644 --- a/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java +++ b/app/src/main/java/me/gilo/wc/adapter/viewholder/MenuViewHolder.java @@ -6,7 +6,7 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.TextView; import me.gilo.wc.R; -import me.gilo.wc.ui.coupon.CouponActivity; +import me.gilo.wc.ui.coupon.CouponsActivity; import me.gilo.wc.ui.ShopActivity; public class MenuViewHolder extends RecyclerView.ViewHolder { @@ -37,7 +37,7 @@ public class MenuViewHolder extends RecyclerView.ViewHolder { context.startActivity(intent); break; case "Coupons": - intent = new Intent(context, CouponActivity.class); + intent = new Intent(context, CouponsActivity.class); context.startActivity(intent); break; } diff --git a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt index 27dfdb7..6586e0e 100644 --- a/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/BaseActivity.kt @@ -4,11 +4,20 @@ import android.content.Context import android.support.v7.app.AppCompatActivity import io.github.inflationx.viewpump.ViewPumpContextWrapper import me.gilo.wc.ui.state.ProgressDialogFragment +import me.gilo.woodroid.Woocommerce open class BaseActivity : AppCompatActivity() { private lateinit var progressDialog : ProgressDialogFragment + val woocommerce = Woocommerce.Builder() + .setSiteUrl("http://157.230.131.179") + .setApiVersion(Woocommerce.API_V2) + .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") + .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") + .build() + + override fun attachBaseContext(newBase: Context) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)) } @@ -20,6 +29,10 @@ open class BaseActivity : AppCompatActivity() { progressDialog.show(manager, "progress") } + fun showLoading() { + showLoading("This will only take a sec", "Loading") + } + fun stopShowingLoading() { progressDialog.dismiss() } diff --git a/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt b/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt index 7e25125..fae4799 100644 --- a/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/coupon/AddCouponActivity.kt @@ -5,7 +5,6 @@ import kotlinx.android.synthetic.main.activity_add_coupon.* import kotlinx.android.synthetic.main.content_add_coupon.* import me.gilo.wc.R import me.gilo.wc.ui.BaseActivity -import me.gilo.woodroid.Woocommerce import me.gilo.woodroid.models.Coupon import retrofit2.Call import retrofit2.Callback @@ -13,13 +12,20 @@ import retrofit2.Response class AddCouponActivity : BaseActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_add_coupon) setSupportActionBar(toolbar) + title = "Add Coupon" + bCreate.setOnClickListener { submit() } + + + } private fun submit() { @@ -36,13 +42,6 @@ class AddCouponActivity : BaseActivity() { private fun createCoupon(coupon: Coupon) { showLoading("Loading", "This won't take long") - val woocommerce = Woocommerce.Builder() - .setSiteUrl("http://157.230.131.179") - .setApiVersion(Woocommerce.API_V2) - .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") - .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") - .build() - woocommerce.Coupon().create(coupon).enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { val couponResponse = response.body() diff --git a/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt b/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt index b19619d..afb26f0 100644 --- a/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt +++ b/app/src/main/java/me/gilo/wc/ui/coupon/CouponActivity.kt @@ -1,26 +1,20 @@ package me.gilo.wc.ui.coupon -import android.content.Intent import android.os.Bundle -import android.support.v7.widget.LinearLayoutManager +import android.widget.Toast import kotlinx.android.synthetic.main.activity_coupon.* import kotlinx.android.synthetic.main.content_coupon.* import me.gilo.wc.R -import me.gilo.wc.adapter.CouponAdapter import me.gilo.wc.ui.BaseActivity -import me.gilo.woodroid.Woocommerce import me.gilo.woodroid.models.Coupon import retrofit2.Call import retrofit2.Callback import retrofit2.Response -import java.util.* + + class CouponActivity : BaseActivity() { - - lateinit var adapter : CouponAdapter - lateinit var coupons: ArrayList - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_coupon) @@ -28,44 +22,89 @@ class CouponActivity : BaseActivity() { title = "Coupon" - val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false) - rvCoupons.layoutManager = layoutManager - rvCoupons.isNestedScrollingEnabled = false + val couponId = intent.getIntExtra("couponId", 0) - coupons = ArrayList() + if (couponId != 0){ + getCoupon(couponId) - adapter = CouponAdapter(coupons) - rvCoupons.adapter = adapter + bDelete.setOnClickListener{delete(couponId)} + bUpdate.setOnClickListener{ + val coupon = Coupon() + coupon.id = couponId + coupon.code = etCode.text.toString() + coupon.description = etDescription.text.toString() - coupons() + update(coupon) + } - fab.setOnClickListener{ - startActivity(Intent(baseContext, AddCouponActivity::class.java)) + }else{ + Toast.makeText(baseContext, "You did not pass coupon id", Toast.LENGTH_LONG).show() } } - //Not best practise, but works for purposes of demo - private fun coupons() { - val woocommerce = Woocommerce.Builder() - .setSiteUrl("http://157.230.131.179") - .setApiVersion(Woocommerce.API_V2) - .setConsumerKey("ck_26c61abd7eeff238d87dc56585bf26cb2d1a1ec3") - .setConsumerSecret("cs_062e8e3a7ae0ce08fdebc0c39f8f834d5e87598e") - .build() + private fun getCoupon(couponId: Int) { + showLoading() - woocommerce.Coupon().coupons().enqueue(object : Callback> { - override fun onResponse(call: Call>, response: Response>) { - val couponResponse = response.body() - for (coupon in couponResponse!!) { - coupons.add(coupon) - } + woocommerce.Coupon().coupon(couponId).enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + val coupon = response.body()!! - adapter.notifyDataSetChanged() + etCode.setText(coupon.code.toUpperCase()) + etDescription.setText(coupon.description) + + stopShowingLoading() } - override fun onFailure(call: Call>, t: Throwable) { + override fun onFailure(call: Call, t: Throwable) { + stopShowingLoading() + } + }) + } + private fun delete(couponId: Int) { + showLoading() + + woocommerce.Coupon().delete(couponId).enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful) { + val coupon = response.body()!! + + etCode.setText(coupon.code.toUpperCase()) + etDescription.setText(coupon.description) + + finish() + }else{ + Toast.makeText(this@CouponActivity, "" + response.code() + " : " + response.message(), Toast.LENGTH_SHORT).show() + } + + stopShowingLoading() + } + + override fun onFailure(call: Call, t: Throwable) { + stopShowingLoading() + } + }) + } + + + private fun update(coupon: Coupon) { + showLoading() + + woocommerce.Coupon().update(coupon.id, coupon).enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + val coupon = response.body()!! + + etCode.setText(coupon.code.toUpperCase()) + etDescription.setText(coupon.description) + + stopShowingLoading() + + finish() + } + + override fun onFailure(call: Call, t: Throwable) { + stopShowingLoading() } }) } diff --git a/app/src/main/java/me/gilo/wc/ui/coupon/CouponsActivity.kt b/app/src/main/java/me/gilo/wc/ui/coupon/CouponsActivity.kt new file mode 100644 index 0000000..1486ceb --- /dev/null +++ b/app/src/main/java/me/gilo/wc/ui/coupon/CouponsActivity.kt @@ -0,0 +1,65 @@ +package me.gilo.wc.ui.coupon + +import android.content.Intent +import android.os.Bundle +import android.support.v7.widget.LinearLayoutManager +import kotlinx.android.synthetic.main.activity_coupons.* +import kotlinx.android.synthetic.main.content_coupons.* +import me.gilo.wc.R +import me.gilo.wc.adapter.CouponAdapter +import me.gilo.wc.ui.BaseActivity +import me.gilo.woodroid.models.Coupon +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import java.util.* + +class CouponsActivity : BaseActivity() { + + + lateinit var adapter : CouponAdapter + lateinit var coupons: ArrayList + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_coupons) + setSupportActionBar(toolbar) + + title = "Coupons" + + val layoutManager = LinearLayoutManager(baseContext, LinearLayoutManager.VERTICAL, false) + rvCoupons.layoutManager = layoutManager + rvCoupons.isNestedScrollingEnabled = false + + coupons = ArrayList() + + adapter = CouponAdapter(coupons) + rvCoupons.adapter = adapter + + coupons() + + fab.setOnClickListener{ + startActivity(Intent(baseContext, AddCouponActivity::class.java)) + } + + } + + //Not best practise, but works for purposes of demo + private fun coupons() { + woocommerce.Coupon().coupons().enqueue(object : Callback> { + override fun onResponse(call: Call>, response: Response>) { + val couponResponse = response.body() + for (coupon in couponResponse!!) { + coupons.add(coupon) + } + + adapter.notifyDataSetChanged() + } + + override fun onFailure(call: Call>, t: Throwable) { + + } + }) + } + +} diff --git a/app/src/main/res/layout/activity_coupon.xml b/app/src/main/res/layout/activity_coupon.xml index e9c5180..a27a22b 100644 --- a/app/src/main/res/layout/activity_coupon.xml +++ b/app/src/main/res/layout/activity_coupon.xml @@ -1,36 +1,26 @@ + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.coupon.CouponActivity"> - + - + - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_coupons.xml b/app/src/main/res/layout/activity_coupons.xml new file mode 100644 index 0000000..4330a30 --- /dev/null +++ b/app/src/main/res/layout/activity_coupons.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_add_coupon.xml b/app/src/main/res/layout/content_add_coupon.xml index 5789648..e24de9f 100644 --- a/app/src/main/res/layout/content_add_coupon.xml +++ b/app/src/main/res/layout/content_add_coupon.xml @@ -24,74 +24,36 @@ android:background="@drawable/rect_white" android:orientation="vertical"> - - - - - - - + android:layout_weight="1" + android:cursorVisible="true" + android:hint="Coupon code" + android:paddingLeft="8dp" + android:paddingTop="8dp" + android:paddingRight="8dp" + android:paddingBottom="8dp" + android:textSize="18sp" + /> - - - - - + android:layout_weight="1" + android:cursorVisible="true" + android:gravity="top|left" + android:hint="Enter text here" + android:minLines="3" + android:paddingLeft="8dp" + android:paddingTop="8dp" + android:paddingRight="8dp" + android:paddingBottom="8dp" + android:textSize="18sp" + /> diff --git a/app/src/main/res/layout/content_coupon.xml b/app/src/main/res/layout/content_coupon.xml index 3219115..61421d8 100644 --- a/app/src/main/res/layout/content_coupon.xml +++ b/app/src/main/res/layout/content_coupon.xml @@ -1,20 +1,107 @@ - + - + android:layout_height="wrap_content" + > - \ No newline at end of file + + + + + + + + + + + + + +