From d8dda02d69f160f3cec2358b366755eb8e4b7615 Mon Sep 17 00:00:00 2001 From: Gracia Date: Thu, 24 Apr 2025 01:21:37 +0700 Subject: [PATCH] update sells --- .../data/api/dto/OrdersItem.kt | 59 ++++++++++++++++++ .../data/api/dto/UpdatedOrder.kt | 36 +++++++++++ .../store/orders/KonfirmasiTagihanResponse.kt | 33 ---------- .../store/orders/OrderListResponse.kt | 52 +--------------- .../data/api/retrofit/ApiService.kt | 9 +++ .../data/repository/OrderRepository.kt | 31 ++++++++++ .../ui/profile/mystore/MyStoreActivity.kt | 4 +- .../product/StoreProductDetailActivity.kt | 28 ++++----- .../ui/profile/mystore/sells/SellsActivity.kt | 3 +- .../ui/profile/mystore/sells/SellsFragment.kt | 2 +- .../mystore/sells/SellsPagerAdapter.kt | 4 +- .../sells/all_sells/AllSellsFragment.kt | 27 +++++++- .../cancellation/CancellationFragment.kt | 27 +++++++- .../sells/completed/CompletedFragment.kt | 41 +++++++++++++ .../failed_payment/FailedPaymentFragment.kt | 27 +++++++- .../failed_shipment/FailedShipmentFragment.kt | 27 +++++++- .../sells/finished/FinishedFragment.kt | 18 ------ .../mystore/sells/order/OrderAdapter.kt | 60 ++++++++++++++++++ .../mystore/sells/order/OrderFragment.kt | 28 ++++++++- .../mystore/sells/payment/PaymentAdapter.kt | 61 +++++++++++++++++++ .../mystore/sells/payment/PaymentFragment.kt | 28 ++++++++- .../mystore/sells/shipment/ShipmentAdapter.kt | 56 +++++++++++++++++ .../sells/shipment/ShipmentFragment.kt | 27 +++++++- .../mystore/sells/shipped/ShippedFragment.kt | 27 +++++++- .../utils/viewmodel/SellsViewModel.kt | 23 ++++++- app/src/main/res/layout/activity_sells.xml | 12 +++- .../main/res/layout/fragment_all_sells.xml | 19 ++---- .../main/res/layout/fragment_cancellation.xml | 18 ++---- .../main/res/layout/fragment_completed.xml | 7 +++ .../res/layout/fragment_failed_payment.xml | 18 ++---- .../res/layout/fragment_failed_shipment.xml | 18 ++---- app/src/main/res/layout/fragment_finished.xml | 17 ------ app/src/main/res/layout/fragment_order.xml | 16 +---- app/src/main/res/layout/fragment_payment.xml | 17 ++---- app/src/main/res/layout/fragment_sells.xml | 14 +++-- app/src/main/res/layout/fragment_shipment.xml | 16 +---- app/src/main/res/layout/fragment_shipped.xml | 18 ++---- 37 files changed, 652 insertions(+), 276 deletions(-) create mode 100644 app/src/main/java/com/alya/ecommerce_serang/data/api/dto/OrdersItem.kt create mode 100644 app/src/main/java/com/alya/ecommerce_serang/data/api/dto/UpdatedOrder.kt create mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/completed/CompletedFragment.kt delete mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/finished/FinishedFragment.kt create mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderAdapter.kt create mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentAdapter.kt create mode 100644 app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentAdapter.kt create mode 100644 app/src/main/res/layout/fragment_completed.xml delete mode 100644 app/src/main/res/layout/fragment_finished.xml diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/OrdersItem.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/OrdersItem.kt new file mode 100644 index 0000000..53ad7fb --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/OrdersItem.kt @@ -0,0 +1,59 @@ +package com.alya.ecommerce_serang.data.api.dto + +import com.alya.ecommerce_serang.data.api.response.store.orders.Address +import com.alya.ecommerce_serang.data.api.response.store.orders.OrderItemsItem +import com.alya.ecommerce_serang.data.api.response.store.orders.Payment +import com.alya.ecommerce_serang.data.api.response.store.orders.Shipment +import com.alya.ecommerce_serang.data.api.response.store.orders.Voucher +import com.google.gson.annotations.SerializedName + +data class OrdersItem( + + @field:SerializedName("address") + val address: Address? = null, + + @field:SerializedName("shipment") + val shipment: Shipment? = null, + + @field:SerializedName("voucher") + val voucher: Voucher? = null, + + @field:SerializedName("address_id") + val addressId: Int? = null, + + @field:SerializedName("is_negotiable") + val isNegotiable: Boolean? = null, + + @field:SerializedName("created_at") + val createdAt: String? = null, + + @field:SerializedName("payment_method_id") + val paymentMethodId: Int? = null, + + @field:SerializedName("updated_at") + val updatedAt: String? = null, + + @field:SerializedName("user_id") + val userId: Int? = null, + + @field:SerializedName("total_amount") + val totalAmount: String? = null, + + @field:SerializedName("voucher_id") + val voucherId: Any? = null, + + @field:SerializedName("payment") + val payment: Payment? = null, + + @field:SerializedName("order_id") + val orderId: Int? = null, + + @field:SerializedName("username") + val username: String? = null, + + @field:SerializedName("status") + val status: String? = null, + + @field:SerializedName("order_items") + val orderItems: List? = null +) diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/UpdatedOrder.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/UpdatedOrder.kt new file mode 100644 index 0000000..56b0102 --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/dto/UpdatedOrder.kt @@ -0,0 +1,36 @@ +package com.alya.ecommerce_serang.data.api.dto + +import com.google.gson.annotations.SerializedName + +data class UpdatedOrder( + + @field:SerializedName("payment_method_id") + val paymentMethodId: Int? = null, + + @field:SerializedName("updated_at") + val updatedAt: String? = null, + + @field:SerializedName("total_amount") + val totalAmount: String? = null, + + @field:SerializedName("user_id") + val userId: Int? = null, + + @field:SerializedName("address_id") + val addressId: Int? = null, + + @field:SerializedName("is_negotiable") + val isNegotiable: Boolean? = null, + + @field:SerializedName("created_at") + val createdAt: String? = null, + + @field:SerializedName("voucher_id") + val voucherId: Any? = null, + + @field:SerializedName("id") + val id: Int? = null, + + @field:SerializedName("status") + val status: String? = null +) diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/KonfirmasiTagihanResponse.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/KonfirmasiTagihanResponse.kt index a8608c6..af331d4 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/KonfirmasiTagihanResponse.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/KonfirmasiTagihanResponse.kt @@ -13,36 +13,3 @@ data class KonfirmasiTagihanResponse( @field:SerializedName("updatedItems") val updatedItems: List? = null ) - -data class UpdatedOrder( - - @field:SerializedName("payment_method_id") - val paymentMethodId: Int? = null, - - @field:SerializedName("updated_at") - val updatedAt: String? = null, - - @field:SerializedName("total_amount") - val totalAmount: String? = null, - - @field:SerializedName("user_id") - val userId: Int? = null, - - @field:SerializedName("address_id") - val addressId: Int? = null, - - @field:SerializedName("is_negotiable") - val isNegotiable: Boolean? = null, - - @field:SerializedName("created_at") - val createdAt: String? = null, - - @field:SerializedName("voucher_id") - val voucherId: Any? = null, - - @field:SerializedName("id") - val id: Int? = null, - - @field:SerializedName("status") - val status: String? = null -) diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/OrderListResponse.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/OrderListResponse.kt index ec5d048..64725ae 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/OrderListResponse.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/response/store/orders/OrderListResponse.kt @@ -1,5 +1,6 @@ package com.alya.ecommerce_serang.data.api.response.store.orders +import com.alya.ecommerce_serang.data.api.dto.OrdersItem import com.google.gson.annotations.SerializedName data class OrderListResponse( @@ -115,54 +116,3 @@ data class Payment( @field:SerializedName("payment_id") val paymentId: Any? = null ) - -data class OrdersItem( - - @field:SerializedName("address") - val address: Address? = null, - - @field:SerializedName("shipment") - val shipment: Shipment? = null, - - @field:SerializedName("voucher") - val voucher: Voucher? = null, - - @field:SerializedName("address_id") - val addressId: Int? = null, - - @field:SerializedName("is_negotiable") - val isNegotiable: Boolean? = null, - - @field:SerializedName("created_at") - val createdAt: String? = null, - - @field:SerializedName("payment_method_id") - val paymentMethodId: Int? = null, - - @field:SerializedName("updated_at") - val updatedAt: String? = null, - - @field:SerializedName("user_id") - val userId: Int? = null, - - @field:SerializedName("total_amount") - val totalAmount: String? = null, - - @field:SerializedName("voucher_id") - val voucherId: Any? = null, - - @field:SerializedName("payment") - val payment: Payment? = null, - - @field:SerializedName("order_id") - val orderId: Int? = null, - - @field:SerializedName("username") - val username: String? = null, - - @field:SerializedName("status") - val status: String? = null, - - @field:SerializedName("order_items") - val orderItems: List? = null -) diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/api/retrofit/ApiService.kt b/app/src/main/java/com/alya/ecommerce_serang/data/api/retrofit/ApiService.kt index 43528f2..e4f3fc8 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/api/retrofit/ApiService.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/api/retrofit/ApiService.kt @@ -32,6 +32,7 @@ import com.alya.ecommerce_serang.data.api.response.customer.product.StoreRespons import com.alya.ecommerce_serang.data.api.response.customer.profile.AddressResponse import com.alya.ecommerce_serang.data.api.response.customer.profile.CreateAddressResponse import com.alya.ecommerce_serang.data.api.response.customer.profile.ProfileResponse +import com.alya.ecommerce_serang.data.api.response.store.orders.OrderListResponse import com.alya.ecommerce_serang.data.api.response.store.product.DeleteProductResponse import com.alya.ecommerce_serang.data.api.response.store.product.UpdateProductResponse import retrofit2.Call @@ -171,4 +172,12 @@ interface ApiService { @GET("provinces") suspend fun getListProv( ): Response + + @GET("mystore/orders") + suspend fun getAllOrders(): Response + + @GET("mystore/orders/{status}") + suspend fun getOrdersByStatus( + @Query("status") status: String + ): Response } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/data/repository/OrderRepository.kt b/app/src/main/java/com/alya/ecommerce_serang/data/repository/OrderRepository.kt index f3b2bcf..4bff99b 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/data/repository/OrderRepository.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/data/repository/OrderRepository.kt @@ -5,6 +5,8 @@ import com.alya.ecommerce_serang.data.api.dto.CourierCostRequest import com.alya.ecommerce_serang.data.api.dto.CreateAddressRequest import com.alya.ecommerce_serang.data.api.dto.OrderRequest import com.alya.ecommerce_serang.data.api.dto.OrderRequestBuy +import com.alya.ecommerce_serang.data.api.dto.OrdersItem +import com.alya.ecommerce_serang.data.api.dto.ProductsItem import com.alya.ecommerce_serang.data.api.response.customer.cart.DataItem import com.alya.ecommerce_serang.data.api.response.customer.order.CourierCostResponse import com.alya.ecommerce_serang.data.api.response.customer.order.CreateOrderResponse @@ -207,4 +209,33 @@ class OrderRepository(private val apiService: ApiService) { return if (response.isSuccessful) response.body() else null } + suspend fun fetchSells(): List { + return try { + val response = apiService.getAllOrders() // Replace with the actual method from your ApiService + if (response.isSuccessful) { + response.body()?.orders ?: emptyList() // Assuming the response body has 'orders' + } else { + Log.e("OrderRepository", "Error fetching all sells. Code: ${response.code()}") + emptyList() + } + } catch (e: Exception) { + Log.e("OrderRepository", "Exception fetching sells", e) + emptyList() + } + } + + suspend fun fetchOrdersByStatus(status: String): List { + return try { + val response = apiService.getOrdersByStatus(status) // Replace with actual method for status-based fetch + if (response.isSuccessful) { + response.body()?.orders?.filterNotNull() ?: emptyList() // Assuming the response body has 'orders' + } else { + Log.e("OrderRepository", "Error fetching orders by status ($status). Code: ${response.code()}") + emptyList() + } + } catch (e: Exception) { + Log.e("OrderRepository", "Exception fetching orders by status", e) + emptyList() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt index f39331b..08efbbe 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/MyStoreActivity.kt @@ -64,8 +64,8 @@ class MyStoreActivity : AppCompatActivity() { private fun myStoreProfileOverview(store: Store){ - binding.tvStoreName.setText(store.storeName.toString()) - binding.tvStoreType.setText(store.storeType.toString()) + binding.tvStoreName.text = store.storeName + binding.tvStoreType.text = store.storeType store.storeImage.let { Glide.with(this) diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/StoreProductDetailActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/StoreProductDetailActivity.kt index 41bef9a..9d28bcf 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/StoreProductDetailActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/product/StoreProductDetailActivity.kt @@ -169,30 +169,30 @@ class StoreProductDetailActivity : AppCompatActivity() { } } - private fun populateForm(product: Product) { - binding.edtNamaProduk.setText(product.name) - binding.edtDeskripsiProduk.setText(product.description) - binding.edtHargaProduk.setText(product.price.toString()) - binding.edtStokProduk.setText(product.stock.toString()) - binding.edtMinOrder.setText(product.minOrder.toString()) - binding.edtBeratProduk.setText(product.weight.toString()) - binding.switchIsPreOrder.isChecked = product.isPreOrder ?: false - binding.switchIsActive.isChecked = product.status == "active" - binding.spinnerKondisiProduk.setSelection(if (product.condition == "Baru") 0 else 1) + private fun populateForm(product: Product?) { + binding.edtNamaProduk.setText(product?.name) + binding.edtDeskripsiProduk.setText(product?.description) + binding.edtHargaProduk.setText(product?.price.toString()) + binding.edtStokProduk.setText(product?.stock.toString()) + binding.edtMinOrder.setText(product?.minOrder.toString()) + binding.edtBeratProduk.setText(product?.weight.toString()) + binding.switchIsPreOrder.isChecked = product?.isPreOrder ?: false + binding.switchIsActive.isChecked = product?.status == "active" + binding.spinnerKondisiProduk.setSelection(if (product?.condition == "Baru") 0 else 1) - product.categoryId?.let { + product?.categoryId?.let { binding.spinnerKategoriProduk.setSelection(categoryList.indexOfFirst { it.id == product.categoryId }) } - Glide.with(this).load(product.image).into(binding.ivPreviewFoto) + Glide.with(this).load(product?.image).into(binding.ivPreviewFoto) binding.switcherFotoProduk.showNext() - product.sppirt?.let { + product?.sppirt?.let { binding.tvSppirtName.text = getFileName(it.toUri()) binding.switcherSppirt.showNext() } - product.halal?.let { + product?.halal?.let { binding.tvHalalName.text = getFileName(it.toUri()) binding.switcherHalal.showNext() } diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsActivity.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsActivity.kt index 6c9a570..ebe50a4 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsActivity.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsActivity.kt @@ -3,6 +3,7 @@ package com.alya.ecommerce_serang.ui.profile.mystore.sells import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells.AllSellsFragment class SellsActivity : AppCompatActivity() { @@ -11,7 +12,7 @@ class SellsActivity : AppCompatActivity() { setContentView(R.layout.activity_sells) if (savedInstanceState == null) { supportFragmentManager.beginTransaction() - .replace(R.id.sells_fragment_container, SellsFragment()) + .replace(R.id.sells_fragment_container, AllSellsFragment()) .commit() } } diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsFragment.kt index fdc05ae..91d202e 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsFragment.kt @@ -24,7 +24,7 @@ class SellsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + viewModel = ViewModelProvider(this)[SellsViewModel::class.java] val tabs = listOf( "Semua Pesanan", "Perlu Tagihan", "Konfirmasi Pembayaran", diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsPagerAdapter.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsPagerAdapter.kt index 737632f..d6fd44a 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsPagerAdapter.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/SellsPagerAdapter.kt @@ -6,7 +6,7 @@ import com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells.AllSellsFrag import com.alya.ecommerce_serang.ui.profile.mystore.sells.cancellation.CancellationFragment import com.alya.ecommerce_serang.ui.profile.mystore.sells.failed_payment.FailedPaymentFragment import com.alya.ecommerce_serang.ui.profile.mystore.sells.failed_shipment.FailedShipmentFragment -import com.alya.ecommerce_serang.ui.profile.mystore.sells.finished.FinishedFragment +import com.alya.ecommerce_serang.ui.profile.mystore.sells.completed.CompletedFragment import com.alya.ecommerce_serang.ui.profile.mystore.sells.order.OrderFragment import com.alya.ecommerce_serang.ui.profile.mystore.sells.payment.PaymentFragment import com.alya.ecommerce_serang.ui.profile.mystore.sells.shipment.ShipmentFragment @@ -24,7 +24,7 @@ class SellsPagerAdapter(fragment: Fragment, private val itemCount: Int) : 2 -> PaymentFragment() 3 -> ShipmentFragment() 4 -> ShippedFragment() - 5 -> FinishedFragment() + 5 -> CompletedFragment() 6 -> CancellationFragment() 7 -> FailedPaymentFragment() 8 -> FailedShipmentFragment() diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/all_sells/AllSellsFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/all_sells/AllSellsFragment.kt index 7a060d5..0b45642 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/all_sells/AllSellsFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/all_sells/AllSellsFragment.kt @@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentAllSellsBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class AllSellsFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentAllSellsBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_all_sells, container, false) + binding = FragmentAllSellsBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvAllSells.layoutManager = LinearLayoutManager(context) +// binding.rvAllSells.adapter = adapter +// +// viewModel.loadAllSells() +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { sells -> +// adapter.submitList(sells) +// }) } } diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/cancellation/CancellationFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/cancellation/CancellationFragment.kt index 48b9d41..c8b93de 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/cancellation/CancellationFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/cancellation/CancellationFragment.kt @@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentCancellationBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class CancellationFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentCancellationBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_cancellation, container, false) + binding = FragmentCancellationBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvCancellation.layoutManager = LinearLayoutManager(context) +// binding.rvCancellation.adapter = adapter +// +// viewModel.loadOrdersByStatus("cancelled") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { cancellations -> +// adapter.submitList(cancellations) +// }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/completed/CompletedFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/completed/CompletedFragment.kt new file mode 100644 index 0000000..a5928b6 --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/completed/CompletedFragment.kt @@ -0,0 +1,41 @@ +package com.alya.ecommerce_serang.ui.profile.mystore.sells.completed + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager +import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentCompletedBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel + +class CompletedFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentCompletedBinding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentCompletedBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvCompleted.layoutManager = LinearLayoutManager(context) +// binding.rvCompleted.adapter = adapter +// +// viewModel.loadOrdersByStatus("delivered") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { completed -> +// adapter.submitList(completed) +// }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_payment/FailedPaymentFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_payment/FailedPaymentFragment.kt index 2baaf3c..eb01dac 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_payment/FailedPaymentFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_payment/FailedPaymentFragment.kt @@ -6,14 +6,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentFailedPaymentBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class FailedPaymentFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentFailedPaymentBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_failed_payment, container, false) + binding = FragmentFailedPaymentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvFailedPayment.layoutManager = LinearLayoutManager(context) +// binding.rvFailedPayment.adapter = adapter +// +// viewModel.loadOrdersByStatus("failedPayment") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { failedPayments -> +// adapter.submitList(failedPayments) +// }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_shipment/FailedShipmentFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_shipment/FailedShipmentFragment.kt index d4d6530..1e67efa 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_shipment/FailedShipmentFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/failed_shipment/FailedShipmentFragment.kt @@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentFailedShipmentBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class FailedShipmentFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentFailedShipmentBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_failed_shipment, container, false) + binding = FragmentFailedShipmentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvFailedShipment.layoutManager = LinearLayoutManager(context) +// binding.rvFailedShipment.adapter = adapter +// +// viewModel.loadOrdersByStatus("failedShipment") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { failedShipments -> +// adapter.submitList(failedShipments) +// }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/finished/FinishedFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/finished/FinishedFragment.kt deleted file mode 100644 index 745974c..0000000 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/finished/FinishedFragment.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.alya.ecommerce_serang.ui.profile.mystore.sells.finished - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import com.alya.ecommerce_serang.R - -class FinishedFragment : Fragment() { - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_finished, container, false) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderAdapter.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderAdapter.kt new file mode 100644 index 0000000..5683546 --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderAdapter.kt @@ -0,0 +1,60 @@ +package com.alya.ecommerce_serang.ui.profile.mystore.sells.order + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.data.api.dto.OrdersItem + +class OrderAdapter : RecyclerView.Adapter() { + + private var orderList: List? = emptyList() + + fun submitList(orders: List?) { + orderList = orders + notifyDataSetChanged() + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): OrderViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_order, parent, false) + return OrderViewHolder(view) + } + + override fun onBindViewHolder(holder: OrderViewHolder, position: Int) { + val order = orderList?.get(position) + holder.bind(order) + } + + override fun getItemCount(): Int = orderList?.size ?: 0 + + class OrderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val tvOrderNumber: TextView = itemView.findViewById(R.id.tv_order_number) + private val tvOrderCustomer: TextView = itemView.findViewById(R.id.tv_order_customer) + private val tvOrderDue: TextView = itemView.findViewById(R.id.tv_order_due) + private val ivOrderProduct: ImageView = itemView.findViewById(R.id.iv_order_product) + private val tvOrderProductName: TextView = itemView.findViewById(R.id.tv_order_product_name) + private val tvOrderProductVariant: TextView = itemView.findViewById(R.id.tv_order_product_variant) + private val tvOrderProductQty: TextView = itemView.findViewById(R.id.tv_order_product_qty) + private val tvOrderProductPrice: TextView = itemView.findViewById(R.id.tv_order_product_price) + private val tvOrderQty: TextView = itemView.findViewById(R.id.tv_order_qty) + private val tvOrderPrice: TextView = itemView.findViewById(R.id.tv_order_price) + private val tvSeeMore: TextView = itemView.findViewById(R.id.tv_see_more) + private val btnEditOrder: Button = itemView.findViewById(R.id.btn_edit_order) + private val btnConfirmOrder: Button = itemView.findViewById(R.id.btn_confirm_order) + + fun bind(order: OrdersItem?) { + tvOrderNumber.text = "No. Pesanan: ${order?.orderId}" + tvOrderCustomer.text = order?.username + tvOrderDue.text = order?.createdAt + 7 + tvOrderQty.text = "${order?.orderItems?.size} produk" + tvOrderPrice.text = "Rp${order?.totalAmount}" + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderFragment.kt index f1271b9..60c9de8 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/order/OrderFragment.kt @@ -5,14 +5,36 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.alya.ecommerce_serang.R +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager +import com.alya.ecommerce_serang.databinding.FragmentOrderBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class OrderFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentOrderBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_order, container, false) + binding = FragmentOrderBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + val adapter = OrderAdapter() + + binding.rvOrder.layoutManager = LinearLayoutManager(context) + binding.rvOrder.adapter = adapter + + viewModel.loadOrdersByStatus("pending") + viewModel.sellsList.observe(viewLifecycleOwner, Observer { orders -> + adapter.submitList(orders) + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentAdapter.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentAdapter.kt new file mode 100644 index 0000000..32ff37c --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentAdapter.kt @@ -0,0 +1,61 @@ +package com.alya.ecommerce_serang.ui.profile.mystore.sells.payment + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.data.api.dto.OrdersItem + +class PaymentAdapter : RecyclerView.Adapter() { + + private var paymentList: List? = emptyList() + + fun submitList(orders: List?) { + paymentList = orders + notifyDataSetChanged() + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): PaymentViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_payment, parent, false) + return PaymentViewHolder(view) + } + + override fun onBindViewHolder(holder: PaymentViewHolder, position: Int) { + val order = paymentList?.get(position) + holder.bind(order) + } + + override fun getItemCount(): Int = paymentList?.size ?: 0 + + class PaymentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ + private val tvPaymentNumber: TextView = itemView.findViewById(R.id.tv_payment_number) + private val tvPaymentDue: TextView = itemView.findViewById(R.id.tv_payment_due) + private val ivPaymentProduct: ImageView = itemView.findViewById(R.id.iv_payment_product) + private val tvPaymentProductName: TextView = itemView.findViewById(R.id.tv_payment_product_name) + private val tvPaymentProductVariant: TextView = itemView.findViewById(R.id.tv_payment_product_variant) + private val tvPaymentProductQty: TextView = itemView.findViewById(R.id.tv_payment_product_qty) + private val tvPaymentProductPrice: TextView = itemView.findViewById(R.id.tv_payment_product_price) + private val tvPaymentQty: TextView = itemView.findViewById(R.id.tv_payment_qty) + private val tvPaymentPrice: TextView = itemView.findViewById(R.id.tv_payment_price) + private val tvPaymentCustomer: TextView = itemView.findViewById(R.id.tv_payment_customer) + private val tvPaymentLocation: TextView = itemView.findViewById(R.id.tv_payment_location) + private val tvSeeMore: TextView = itemView.findViewById(R.id.tv_see_more) + private val btnConfirmPayment: Button = itemView.findViewById(R.id.btn_confirm_payment) + + fun bind(order: OrdersItem?) { + tvPaymentNumber.text = "No. Pesanan: ${order?.orderId}" + tvPaymentDue.text = order?.createdAt + 7 + tvPaymentQty.text = "${order?.orderItems?.size} produk" + tvPaymentPrice.text = "Rp${order?.totalAmount}" + tvPaymentCustomer.text = order?.username + tvPaymentLocation.text = order?.address?.subdistrict + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentFragment.kt index fd00c11..7c5214c 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/payment/PaymentFragment.kt @@ -5,14 +5,36 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import com.alya.ecommerce_serang.R +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager +import com.alya.ecommerce_serang.databinding.FragmentPaymentBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class PaymentFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentPaymentBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_payment, container, false) + binding = FragmentPaymentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + val adapter = PaymentAdapter() + + binding.rvPayment.layoutManager = LinearLayoutManager(context) + binding.rvPayment.adapter = adapter + + viewModel.loadOrdersByStatus("paid") + viewModel.sellsList.observe(viewLifecycleOwner, Observer { payments -> + adapter.submitList(payments) + }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentAdapter.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentAdapter.kt new file mode 100644 index 0000000..faf911e --- /dev/null +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentAdapter.kt @@ -0,0 +1,56 @@ +package com.alya.ecommerce_serang.ui.profile.mystore.sells.shipment + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.data.api.dto.OrdersItem + +class ShipmentAdapter : RecyclerView.Adapter() { + + private var shipmentList: List = emptyList() + + fun submitList(orders: List) { + shipmentList = orders + notifyDataSetChanged() + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ShipmentAdapter.ShipmentViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_sells_shipment, parent, false) + return ShipmentViewHolder(view) + } + + override fun onBindViewHolder(holder: ShipmentAdapter.ShipmentViewHolder, position: Int) { + val order = shipmentList[position] + holder.bind(order) + } + + override fun getItemCount(): Int = shipmentList.size + + class ShipmentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val tvShipmentNumber: TextView = itemView.findViewById(R.id.tv_shipment_number) + private val tvShipmentDue: TextView = itemView.findViewById(R.id.tv_shipment_due) + private val ivShipmentProduct: ImageView = itemView.findViewById(R.id.iv_shipment_product) + private val tvShipmentProductName: TextView = itemView.findViewById(R.id.tv_shipment_product_name) + private val tvShipmentProductVariant: TextView = itemView.findViewById(R.id.tv_shipment_product_variant) + private val tvShipmentProductQty: TextView = itemView.findViewById(R.id.tv_shipment_product_qty) + private val tvShipmentCustomer: TextView = itemView.findViewById(R.id.tv_shipment_customer) + private val tvShipmentLocation: TextView = itemView.findViewById(R.id.tv_shipment_location) + private val tvSeeMore: TextView = itemView.findViewById(R.id.tv_see_more) + private val btnConfirmPayment: Button = itemView.findViewById(R.id.btn_confirm_payment) + + fun bind(order: OrdersItem) { + tvShipmentNumber.text = "No. Pesanan: ${order.orderId}" + tvShipmentDue.text = order.createdAt + 7 + tvShipmentCustomer.text = order.username + tvShipmentLocation.text = order.address?.subdistrict + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentFragment.kt index a6012a1..4b0f1d8 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipment/ShipmentFragment.kt @@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentShipmentBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class ShipmentFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentShipmentBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_shipment, container, false) + binding = FragmentShipmentBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + val adapter = ShipmentAdapter() + + binding.rvShipment.layoutManager = LinearLayoutManager(context) +// binding.rvShipment.adapter = adapter +// +// viewModel.loadOrdersByStatus("processed") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { shipments -> +// adapter.submitList(shipments) +// }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipped/ShippedFragment.kt b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipped/ShippedFragment.kt index 0234b7c..379d9d9 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipped/ShippedFragment.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/ui/profile/mystore/sells/shipped/ShippedFragment.kt @@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider +import androidx.recyclerview.widget.LinearLayoutManager import com.alya.ecommerce_serang.R +import com.alya.ecommerce_serang.databinding.FragmentShippedBinding +import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel class ShippedFragment : Fragment() { + private lateinit var viewModel: SellsViewModel + private lateinit var binding: FragmentShippedBinding + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_shipped, container, false) + binding = FragmentShippedBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + viewModel = ViewModelProvider(this).get(SellsViewModel::class.java) + +// val adapter = SellsAdapter() +// binding.rvShipped.layoutManager = LinearLayoutManager(context) +// binding.rvShipped.adapter = adapter +// +// viewModel.loadOrdersByStatus("shipped") +// viewModel.sellsList.observe(viewLifecycleOwner, Observer { shipped -> +// adapter.submitList(shipped) +// }) } } \ No newline at end of file diff --git a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/SellsViewModel.kt b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/SellsViewModel.kt index 3cd2f00..a7d46bc 100644 --- a/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/SellsViewModel.kt +++ b/app/src/main/java/com/alya/ecommerce_serang/utils/viewmodel/SellsViewModel.kt @@ -1,7 +1,26 @@ package com.alya.ecommerce_serang.utils.viewmodel +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.liveData +import androidx.lifecycle.viewModelScope +import com.alya.ecommerce_serang.data.api.dto.OrdersItem +import com.alya.ecommerce_serang.data.repository.OrderRepository +import kotlinx.coroutines.launch -class SellsViewModel : ViewModel() { - // TODO: Implement the ViewModel +class SellsViewModel(private val repository: OrderRepository) : ViewModel() { + private val _sellsList = MutableLiveData>() + val sellsList: LiveData> get() = _sellsList + + fun loadOrdersByStatus(status: String) { + viewModelScope.launch { + val result = if (status == "all") { + repository.fetchSells() + } else { + repository.fetchOrdersByStatus(status) + } + _sellsList.value = result + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_sells.xml b/app/src/main/res/layout/activity_sells.xml index 91a3c0c..8056d96 100644 --- a/app/src/main/res/layout/activity_sells.xml +++ b/app/src/main/res/layout/activity_sells.xml @@ -1,8 +1,14 @@ - \ No newline at end of file + tools:context=".ui.profile.mystore.sells.SellsActivity"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_all_sells.xml b/app/src/main/res/layout/fragment_all_sells.xml index bced9c7..dc03543 100644 --- a/app/src/main/res/layout/fragment_all_sells.xml +++ b/app/src/main/res/layout/fragment_all_sells.xml @@ -1,17 +1,6 @@ - - - - - \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_cancellation.xml b/app/src/main/res/layout/fragment_cancellation.xml index 2e4f3f0..86c48e5 100644 --- a/app/src/main/res/layout/fragment_cancellation.xml +++ b/app/src/main/res/layout/fragment_cancellation.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_completed.xml b/app/src/main/res/layout/fragment_completed.xml new file mode 100644 index 0000000..fc5c715 --- /dev/null +++ b/app/src/main/res/layout/fragment_completed.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_failed_payment.xml b/app/src/main/res/layout/fragment_failed_payment.xml index be821b7..5587090 100644 --- a/app/src/main/res/layout/fragment_failed_payment.xml +++ b/app/src/main/res/layout/fragment_failed_payment.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_failed_shipment.xml b/app/src/main/res/layout/fragment_failed_shipment.xml index 740ee44..0707558 100644 --- a/app/src/main/res/layout/fragment_failed_shipment.xml +++ b/app/src/main/res/layout/fragment_failed_shipment.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_finished.xml b/app/src/main/res/layout/fragment_finished.xml deleted file mode 100644 index c9a4541..0000000 --- a/app/src/main/res/layout/fragment_finished.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_order.xml b/app/src/main/res/layout/fragment_order.xml index 53552f9..6accc4e 100644 --- a/app/src/main/res/layout/fragment_order.xml +++ b/app/src/main/res/layout/fragment_order.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + tools:listitem="@layout/item_sells_order" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_payment.xml b/app/src/main/res/layout/fragment_payment.xml index b18b7d3..1131b57 100644 --- a/app/src/main/res/layout/fragment_payment.xml +++ b/app/src/main/res/layout/fragment_payment.xml @@ -1,17 +1,8 @@ - - - - - \ No newline at end of file + tools:listitem="@layout/item_sells_payment"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_sells.xml b/app/src/main/res/layout/fragment_sells.xml index b70a73a..9992f7c 100644 --- a/app/src/main/res/layout/fragment_sells.xml +++ b/app/src/main/res/layout/fragment_sells.xml @@ -1,19 +1,25 @@ - + app:tabMode="scrollable" + app:tabTextAppearance="@style/label_medium_prominent" + app:tabSelectedTextAppearance="@style/label_medium_prominent" + app:tabIndicatorColor="@color/blue_500" + app:tabSelectedTextColor="@color/blue_500" + app:tabTextColor="@color/black_300" + app:tabBackground="@color/white" + app:tabPadding="13dp"/> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_shipment.xml b/app/src/main/res/layout/fragment_shipment.xml index 6d6fd62..4b2902e 100644 --- a/app/src/main/res/layout/fragment_shipment.xml +++ b/app/src/main/res/layout/fragment_shipment.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + tools:listitem="@layout/item_sells_shipment" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_shipped.xml b/app/src/main/res/layout/fragment_shipped.xml index ab1cdd0..907ec43 100644 --- a/app/src/main/res/layout/fragment_shipped.xml +++ b/app/src/main/res/layout/fragment_shipped.xml @@ -1,17 +1,7 @@ - - - - - \ No newline at end of file + android:layout_height="match_parent"/> \ No newline at end of file