mirror of
https://github.com/shaulascr/ecommerce_serang.git
synced 2025-08-13 10:42:21 +00:00
update sells
This commit is contained in:
@ -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<OrderItemsItem?>? = null
|
||||||
|
)
|
@ -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
|
||||||
|
)
|
@ -13,36 +13,3 @@ data class KonfirmasiTagihanResponse(
|
|||||||
@field:SerializedName("updatedItems")
|
@field:SerializedName("updatedItems")
|
||||||
val updatedItems: List<Any?>? = null
|
val updatedItems: List<Any?>? = 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
|
|
||||||
)
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.alya.ecommerce_serang.data.api.response.store.orders
|
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
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
data class OrderListResponse(
|
data class OrderListResponse(
|
||||||
@ -115,54 +116,3 @@ data class Payment(
|
|||||||
@field:SerializedName("payment_id")
|
@field:SerializedName("payment_id")
|
||||||
val paymentId: Any? = null
|
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<OrderItemsItem?>? = null
|
|
||||||
)
|
|
||||||
|
@ -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.AddressResponse
|
||||||
import com.alya.ecommerce_serang.data.api.response.customer.profile.CreateAddressResponse
|
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.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.DeleteProductResponse
|
||||||
import com.alya.ecommerce_serang.data.api.response.store.product.UpdateProductResponse
|
import com.alya.ecommerce_serang.data.api.response.store.product.UpdateProductResponse
|
||||||
import retrofit2.Call
|
import retrofit2.Call
|
||||||
@ -171,4 +172,12 @@ interface ApiService {
|
|||||||
@GET("provinces")
|
@GET("provinces")
|
||||||
suspend fun getListProv(
|
suspend fun getListProv(
|
||||||
): Response<ListProvinceResponse>
|
): Response<ListProvinceResponse>
|
||||||
|
|
||||||
|
@GET("mystore/orders")
|
||||||
|
suspend fun getAllOrders(): Response<OrderListResponse>
|
||||||
|
|
||||||
|
@GET("mystore/orders/{status}")
|
||||||
|
suspend fun getOrdersByStatus(
|
||||||
|
@Query("status") status: String
|
||||||
|
): Response<OrderListResponse>
|
||||||
}
|
}
|
@ -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.CreateAddressRequest
|
||||||
import com.alya.ecommerce_serang.data.api.dto.OrderRequest
|
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.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.cart.DataItem
|
||||||
import com.alya.ecommerce_serang.data.api.response.customer.order.CourierCostResponse
|
import com.alya.ecommerce_serang.data.api.response.customer.order.CourierCostResponse
|
||||||
import com.alya.ecommerce_serang.data.api.response.customer.order.CreateOrderResponse
|
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
|
return if (response.isSuccessful) response.body() else null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun fetchSells(): List<OrdersItem?> {
|
||||||
|
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<OrdersItem?> {
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -64,8 +64,8 @@ class MyStoreActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private fun myStoreProfileOverview(store: Store){
|
private fun myStoreProfileOverview(store: Store){
|
||||||
|
|
||||||
binding.tvStoreName.setText(store.storeName.toString())
|
binding.tvStoreName.text = store.storeName
|
||||||
binding.tvStoreType.setText(store.storeType.toString())
|
binding.tvStoreType.text = store.storeType
|
||||||
|
|
||||||
store.storeImage.let {
|
store.storeImage.let {
|
||||||
Glide.with(this)
|
Glide.with(this)
|
||||||
|
@ -169,30 +169,30 @@ class StoreProductDetailActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun populateForm(product: Product) {
|
private fun populateForm(product: Product?) {
|
||||||
binding.edtNamaProduk.setText(product.name)
|
binding.edtNamaProduk.setText(product?.name)
|
||||||
binding.edtDeskripsiProduk.setText(product.description)
|
binding.edtDeskripsiProduk.setText(product?.description)
|
||||||
binding.edtHargaProduk.setText(product.price.toString())
|
binding.edtHargaProduk.setText(product?.price.toString())
|
||||||
binding.edtStokProduk.setText(product.stock.toString())
|
binding.edtStokProduk.setText(product?.stock.toString())
|
||||||
binding.edtMinOrder.setText(product.minOrder.toString())
|
binding.edtMinOrder.setText(product?.minOrder.toString())
|
||||||
binding.edtBeratProduk.setText(product.weight.toString())
|
binding.edtBeratProduk.setText(product?.weight.toString())
|
||||||
binding.switchIsPreOrder.isChecked = product.isPreOrder ?: false
|
binding.switchIsPreOrder.isChecked = product?.isPreOrder ?: false
|
||||||
binding.switchIsActive.isChecked = product.status == "active"
|
binding.switchIsActive.isChecked = product?.status == "active"
|
||||||
binding.spinnerKondisiProduk.setSelection(if (product.condition == "Baru") 0 else 1)
|
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 })
|
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()
|
binding.switcherFotoProduk.showNext()
|
||||||
|
|
||||||
product.sppirt?.let {
|
product?.sppirt?.let {
|
||||||
binding.tvSppirtName.text = getFileName(it.toUri())
|
binding.tvSppirtName.text = getFileName(it.toUri())
|
||||||
binding.switcherSppirt.showNext()
|
binding.switcherSppirt.showNext()
|
||||||
}
|
}
|
||||||
|
|
||||||
product.halal?.let {
|
product?.halal?.let {
|
||||||
binding.tvHalalName.text = getFileName(it.toUri())
|
binding.tvHalalName.text = getFileName(it.toUri())
|
||||||
binding.switcherHalal.showNext()
|
binding.switcherHalal.showNext()
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.alya.ecommerce_serang.ui.profile.mystore.sells
|
|||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import com.alya.ecommerce_serang.R
|
import com.alya.ecommerce_serang.R
|
||||||
|
import com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells.AllSellsFragment
|
||||||
|
|
||||||
class SellsActivity : AppCompatActivity() {
|
class SellsActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@ -11,7 +12,7 @@ class SellsActivity : AppCompatActivity() {
|
|||||||
setContentView(R.layout.activity_sells)
|
setContentView(R.layout.activity_sells)
|
||||||
if (savedInstanceState == null) {
|
if (savedInstanceState == null) {
|
||||||
supportFragmentManager.beginTransaction()
|
supportFragmentManager.beginTransaction()
|
||||||
.replace(R.id.sells_fragment_container, SellsFragment())
|
.replace(R.id.sells_fragment_container, AllSellsFragment())
|
||||||
.commit()
|
.commit()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class SellsFragment : Fragment() {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
viewModel = ViewModelProvider(this).get(SellsViewModel::class.java)
|
viewModel = ViewModelProvider(this)[SellsViewModel::class.java]
|
||||||
|
|
||||||
val tabs = listOf(
|
val tabs = listOf(
|
||||||
"Semua Pesanan", "Perlu Tagihan", "Konfirmasi Pembayaran",
|
"Semua Pesanan", "Perlu Tagihan", "Konfirmasi Pembayaran",
|
||||||
|
@ -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.cancellation.CancellationFragment
|
||||||
import com.alya.ecommerce_serang.ui.profile.mystore.sells.failed_payment.FailedPaymentFragment
|
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.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.order.OrderFragment
|
||||||
import com.alya.ecommerce_serang.ui.profile.mystore.sells.payment.PaymentFragment
|
import com.alya.ecommerce_serang.ui.profile.mystore.sells.payment.PaymentFragment
|
||||||
import com.alya.ecommerce_serang.ui.profile.mystore.sells.shipment.ShipmentFragment
|
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()
|
2 -> PaymentFragment()
|
||||||
3 -> ShipmentFragment()
|
3 -> ShipmentFragment()
|
||||||
4 -> ShippedFragment()
|
4 -> ShippedFragment()
|
||||||
5 -> FinishedFragment()
|
5 -> CompletedFragment()
|
||||||
6 -> CancellationFragment()
|
6 -> CancellationFragment()
|
||||||
7 -> FailedPaymentFragment()
|
7 -> FailedPaymentFragment()
|
||||||
8 -> FailedShipmentFragment()
|
8 -> FailedShipmentFragment()
|
||||||
|
@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentAllSellsBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class AllSellsFragment : Fragment() {
|
class AllSellsFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentAllSellsBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentAllSellsBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_all_sells, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentCancellationBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class CancellationFragment : Fragment() {
|
class CancellationFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentCancellationBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentCancellationBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_cancellation, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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)
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
}
|
@ -6,14 +6,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentFailedPaymentBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class FailedPaymentFragment : Fragment() {
|
class FailedPaymentFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentFailedPaymentBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentFailedPaymentBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_failed_payment, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentFailedShipmentBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class FailedShipmentFragment : Fragment() {
|
class FailedShipmentFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentFailedShipmentBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentFailedShipmentBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_failed_shipment, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
@ -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<OrderAdapter.OrderViewHolder>() {
|
||||||
|
|
||||||
|
private var orderList: List<OrdersItem?>? = emptyList()
|
||||||
|
|
||||||
|
fun submitList(orders: List<OrdersItem?>?) {
|
||||||
|
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}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,14 +5,36 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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() {
|
class OrderFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentOrderBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentOrderBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_order, 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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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<PaymentAdapter.PaymentViewHolder>() {
|
||||||
|
|
||||||
|
private var paymentList: List<OrdersItem?>? = emptyList()
|
||||||
|
|
||||||
|
fun submitList(orders: List<OrdersItem?>?) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,14 +5,36 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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() {
|
class PaymentFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentPaymentBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentPaymentBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_payment, 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)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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<ShipmentAdapter.ShipmentViewHolder>() {
|
||||||
|
|
||||||
|
private var shipmentList: List<OrdersItem> = emptyList()
|
||||||
|
|
||||||
|
fun submitList(orders: List<OrdersItem>) {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentShipmentBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class ShipmentFragment : Fragment() {
|
class ShipmentFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentShipmentBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentShipmentBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_shipment, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -5,14 +5,37 @@ import androidx.fragment.app.Fragment
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
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.R
|
||||||
|
import com.alya.ecommerce_serang.databinding.FragmentShippedBinding
|
||||||
|
import com.alya.ecommerce_serang.utils.viewmodel.SellsViewModel
|
||||||
|
|
||||||
class ShippedFragment : Fragment() {
|
class ShippedFragment : Fragment() {
|
||||||
|
private lateinit var viewModel: SellsViewModel
|
||||||
|
private lateinit var binding: FragmentShippedBinding
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater, container: ViewGroup?,
|
inflater: LayoutInflater, container: ViewGroup?,
|
||||||
savedInstanceState: Bundle?
|
savedInstanceState: Bundle?
|
||||||
): View? {
|
): View? {
|
||||||
// Inflate the layout for this fragment
|
binding = FragmentShippedBinding.inflate(inflater, container, false)
|
||||||
return inflater.inflate(R.layout.fragment_shipped, 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)
|
||||||
|
// })
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,26 @@
|
|||||||
package com.alya.ecommerce_serang.utils.viewmodel
|
package com.alya.ecommerce_serang.utils.viewmodel
|
||||||
|
|
||||||
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
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() {
|
class SellsViewModel(private val repository: OrderRepository) : ViewModel() {
|
||||||
// TODO: Implement the ViewModel
|
private val _sellsList = MutableLiveData<List<OrdersItem?>>()
|
||||||
|
val sellsList: LiveData<List<OrdersItem?>> get() = _sellsList
|
||||||
|
|
||||||
|
fun loadOrdersByStatus(status: String) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
val result = if (status == "all") {
|
||||||
|
repository.fetchSells()
|
||||||
|
} else {
|
||||||
|
repository.fetchOrdersByStatus(status)
|
||||||
|
}
|
||||||
|
_sellsList.value = result
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,8 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/sells_fragment_container"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.profile.mystore.sells.SellsActivity"/>
|
tools:context=".ui.profile.mystore.sells.SellsActivity">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/sells_fragment_container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -1,17 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/rv_all_sells"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"/>
|
||||||
android:padding="13dp"
|
|
||||||
tools:context=".ui.profile.mystore.sells.all_sells.AllSellsFragment">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_semua_pesanan"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Semua Pesanan"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_cancellation"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"/>
|
||||||
tools:context=".ui.profile.mystore.sells.cancellation.CancellationFragment"
|
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_pembatalan"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Pembatalan"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
7
app/src/main/res/layout/fragment_completed.xml
Normal file
7
app/src/main/res/layout/fragment_completed.xml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_completed"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"/>
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_failed_payment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"/>
|
||||||
tools:context=".ui.profile.mystore.sells.failed_payment.FailedPaymentFragment"
|
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_klaim_pembayaran"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Klaim Pembayaran"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_failed_shipment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"/>
|
||||||
tools:context=".ui.profile.mystore.sells.failed_shipment.FailedShipmentFragment"
|
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_pengiriman_gagal"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Pengiriman Gagal"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context=".ui.profile.mystore.sells.finished.FinishedFragment"
|
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_selesai"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Selesai"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_order"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.profile.mystore.sells.order.OrderFragment"
|
tools:listitem="@layout/item_sells_order" />
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_perlu_tagihan"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Perlu Tagihan"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_payment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.profile.mystore.sells.payment.PaymentFragment"
|
tools:listitem="@layout/item_sells_payment"/>
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_konfirmasi_pembayaran"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Konfirmasi Pembayaran"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,19 +1,25 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/sells"
|
android:id="@+id/sells"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
|
||||||
tools:context=".ui.profile.mystore.sells.SellsFragment">
|
tools:context=".ui.profile.mystore.sells.SellsFragment">
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabLayout
|
<com.google.android.material.tabs.TabLayout
|
||||||
android:id="@+id/tab_layout_sells"
|
android:id="@+id/tab_layout_sells"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:tabMode="scrollable" />
|
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"/>
|
||||||
|
|
||||||
<androidx.viewpager2.widget.ViewPager2
|
<androidx.viewpager2.widget.ViewPager2
|
||||||
android:id="@+id/view_pager_sells"
|
android:id="@+id/view_pager_sells"
|
||||||
@ -21,4 +27,4 @@
|
|||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
</LinearLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_shipment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".ui.profile.mystore.sells.shipment.ShipmentFragment"
|
tools:listitem="@layout/item_sells_shipment" />
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_perlu_dikirim"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Perlu Dikirim"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
@ -1,17 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/rv_shipped"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"/>
|
||||||
tools:context=".ui.profile.mystore.sells.shipped.ShippedFragment"
|
|
||||||
android:padding="13dp">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/tv_dikirim"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Dikirim"
|
|
||||||
style="@style/label_medium_prominent"
|
|
||||||
android:textColor="@color/black_300"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
Reference in New Issue
Block a user