Merge pull request #7 from shaulascr/gracia

Gracia
This commit is contained in:
Gracia Hotmauli
2025-03-28 23:03:06 +07:00
committed by GitHub
30 changed files with 473 additions and 2 deletions

1
.idea/misc.xml generated
View File

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CodeInsightWorkspaceSettings">
<option name="optimizeImportsOnTheFly" value="true" />

View File

@ -9,7 +9,7 @@ plugins {
android {
namespace = "com.alya.ecommerce_serang"
compileSdk = 34
compileSdk = 35
defaultConfig {
applicationId = "com.alya.ecommerce_serang"
@ -60,6 +60,7 @@ dependencies {
implementation(libs.androidx.fragment.ktx)
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.androidx.recyclerview)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)

View File

@ -20,6 +20,9 @@
<activity
android:name=".ui.product.ReviewProductActivity"
android:exported="false" />
<activity
android:name=".ui.profile.mystore.sells.SellsActivity"
android:exported="false" />
<activity
android:name=".ui.profile.mystore.balance.BalanceActivity"
android:exported="false" />

View File

@ -0,0 +1,8 @@
package com.alya.ecommerce_serang.data.model
data class BalanceTransaction(
val date: String,
val balanceTransTitle: String,
val balanceTransDesc: String,
val balanceTransAmount: String,
)

View File

@ -0,0 +1,9 @@
package com.alya.ecommerce_serang.ui.profile.mystore.balance
import com.alya.ecommerce_serang.data.model.BalanceTransaction
class BalanceTransactionAdapter(private val balanceTransactionList: List<BalanceTransaction>) :
RecyclerView.Adapter<BalanceTransactionAdapter.TransactionViewHolder>() {
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.alya.ecommerce_serang.R
class SellsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sells)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.sells_fragment_container, SellsFragment())
.commit()
}
}
}

View File

@ -0,0 +1,42 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells
import androidx.lifecycle.ViewModelProvider
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import com.alya.ecommerce_serang.R
class SellsFragment : Fragment() {
private lateinit var viewModel: SellsViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_sells, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(this).get(SellsViewModel::class.java)
val tabs = listOf(
"Semua Pesanan", "Perlu Tagihan", "Konfirmasi Pembayaran",
"Perlu Dikirim", "Dikirim", "Selesai",
"Pembatalan", "Klaim Pembayaran", "Pengiriman Gagal"
)
val adapter = SellsPagerAdapter(this, tabs.size)
val viewPager: ViewPager2 = view.findViewById(R.id.view_pager_sells)
viewPager.adapter = adapter
TabLayoutMediator(view.findViewById(R.id.tab_layout_sells), viewPager) { tab, position ->
tab.text = tabs[position]
}.attach()
}
}

View File

@ -0,0 +1,34 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells.AllSellsFragment
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.order.OrderFragment
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.shipped.ShippedFragment
class SellsPagerAdapter(fragment: Fragment, private val itemCount: Int) :
FragmentStateAdapter(fragment) {
override fun getItemCount(): Int = itemCount
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> AllSellsFragment()
1 -> OrderFragment()
2 -> PaymentFragment()
3 -> ShipmentFragment()
4 -> ShippedFragment()
5 -> FinishedFragment()
6 -> CancellationFragment()
7 -> FailedPaymentFragment()
8 -> FailedShipmentFragment()
else -> Fragment()
}
}
}

View File

@ -0,0 +1,7 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells
import androidx.lifecycle.ViewModel
class SellsViewModel : ViewModel() {
// TODO: Implement the ViewModel
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.all_sells
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 AllSellsFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.cancellation
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 CancellationFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,19 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.failed_payment
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 FailedPaymentFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.failed_shipment
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 FailedShipmentFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.order
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 OrderFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.payment
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 PaymentFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.shipment
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 ShipmentFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,18 @@
package com.alya.ecommerce_serang.ui.profile.mystore.sells.shipped
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 ShippedFragment : Fragment() {
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)
}
}

View File

@ -0,0 +1,8 @@
<?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:id="@+id/sells_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.profile.mystore.sells.SellsActivity"/>

View File

@ -0,0 +1,17 @@
<?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"
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>

View File

@ -0,0 +1,17 @@
<?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.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>

View File

@ -0,0 +1,17 @@
<?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.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>

View File

@ -0,0 +1,17 @@
<?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.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>

View File

@ -0,0 +1,17 @@
<?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>

View File

@ -0,0 +1,17 @@
<?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.order.OrderFragment"
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>

View File

@ -0,0 +1,17 @@
<?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.payment.PaymentFragment"
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>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sells"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.profile.mystore.sells.SellsFragment">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout_sells"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager_sells"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>

View File

@ -0,0 +1,17 @@
<?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.shipment.ShipmentFragment"
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>

View File

@ -0,0 +1,17 @@
<?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.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>

View File

@ -17,10 +17,12 @@ lifecycleViewmodelKtx = "2.8.7"
fragmentKtx = "1.5.6"
navigationFragmentKtx = "2.8.5"
navigationUiKtx = "2.8.5"
recyclerview = "1.4.0"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
androidx-hilt-lifecycle-viewmodel = { module = "androidx.hilt:hilt-lifecycle-viewmodel", version.ref = "hiltLifecycleViewmodel" }
androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" }
hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }