Commit 0607c1d8 by nick2905

Push Seminar Update

parent 6bb9881d
......@@ -6,6 +6,10 @@ android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
androidExtensions {
experimental = true
}
defaultConfig {
applicationId "com.proyek.akhir.kodel"
minSdkVersion 21
......
......@@ -12,13 +12,34 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".ui.koperasi.beranda.jatuhtempo.JatuhTempoActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.tariksaldo.TarikSaldoActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.isisaldo.IsiSaldoActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.pengguna.PenggunaActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.kupon.addKupon.TambahKuponActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.produk.addProduk.TambahProdukActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.produk.detail.DetailProdukActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.pinjaman.confirmPeminjam.ConfirmasiPeminjamActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.pinjaman.PeminjamKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name="com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity"
android:name=".ui.koperasi.berita.detailBerita.AddBeritaKoperasiActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.koperasi.beranda.history.HistoryKoperasiActivity"
......@@ -54,9 +75,6 @@
<activity
android:name=".ui.user.dashboard.ajuanPinjaman.AjuanPinjamanActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity
android:name=".ui.user.produk.detail.DetailProdukActivity"
android:theme="@style/Theme.Design.NoActionBar" />
<activity android:name=".ui.user.dashboard.detailPenunggak.DetailPenunggakActivity" />
<activity
android:name=".ui.user.dashboard.history.HistoryActivity"
......
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Berita : ArrayList<BeritaItem>()
@Parcelize
data class BeritaItem(
val descBerita: Any,
val fileBerita: Any,
val descBerita: String,
val fileBerita: String,
val idBerita: Int,
val judulBerita: String,
val tglBerita: String
)
\ No newline at end of file
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class BeritaResponse(
val berita: Beritas
)
@Parcelize
data class Beritas(
val descBerita: String,
val fileBerita: String,
val id: Int,
val idBerita: Int,
val judulBerita: String,
val tglBerita: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
class IsiSaldo : ArrayList<IsiSaldoItem>()
data class IsiSaldoItem(
val idAnggota: Int,
val imgAnggota: String,
val jlhSaldo: Int,
val namaAnggota: String,
val statusIsi: String
)
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class IsiSaldoResponse(
val isiSaldo: IsiSaldos
)
@Parcelize
data class IsiSaldos(
val id: Int,
val idAnggota: Int,
val imgAnggota: String,
val jlhSaldo: Int,
val namaAnggota: String,
val statusIsi: Boolean
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Kupon : ArrayList<KuponItem>()
@Parcelize
data class KuponItem(
val codekupon: String,
val desckupon: String,
val validity: String,
val valuekupon: Int
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class KuponResponse(
val kupon: Kupons
)
@Parcelize
data class Kupons(
val codeKupon: String,
val descKupon: String,
val id: Int,
val validity: String,
val valueKupon: Int
):Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Pinjam : ArrayList<PinjamItem>()
@Parcelize
data class PinjamItem(
val idAnggota: Int,
val jlhPinjam: Int,
val namaPeminjam: String,
val statusPinjam: String,
val tglPinjam: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class PinjamResponse(
val pinjam: Pinjams
)
@Parcelize
data class Pinjams(
val id: Int,
val idAnggota: Int,
val jlhPinjam: Int,
val namaPeminjam: String,
val statusPinjam: Boolean,
val tglPinjam: String
) : Parcelable
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Produk : ArrayList<ProdukItem>()
@Parcelize
data class ProdukItem(
val gambarProduk: String,
val hargaProduk: Int,
val idProduk: Int,
val namaProduk: String,
val satuanProduk: String
)
\ No newline at end of file
) : Parcelable
//data class Produk(
// val produk: ProdukX
//)
//
//data class ProdukX(
// val gambarProduk: String,
// val hargaProduk: Int,
// val id: Int,
// val idProduk: Int,
// val namaProduk: String,
// val satuanProduk: String
//)
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class ProdukResponse(
val produk: Produks
)
@Parcelize
data class Produks(
val gambarProduk: String,
val hargaProduk: Int,
val id: Int,
val idProduk: Int,
val namaProduk: String,
val satuanProduk: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class TarikSaldo : ArrayList<TarikSaldoItem>()
@Parcelize
data class TarikSaldoItem(
val idAnggota: Int,
val jlhSaldo: Int,
val namaPengguna: String,
val statusTarik: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
data class TarikSaldoResponse(
val tarikSaldo: TarikSaldos
)
@Parcelize
data class TarikSaldos(
val id: Int,
val idAnggota: Int,
val jlhSaldo: Int,
val namaPengguna: String,
val statusTarik: Boolean
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.data.response
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
class Transaksi : ArrayList<TransaksiItem>()
@Parcelize
data class TransaksiItem(
val descTransaksi: String,
val idPengguna: Int,
val jlhSaldo: Int,
val namaPengguna: String,
val tglTransaksi: String
) : Parcelable
\ No newline at end of file
......@@ -7,9 +7,11 @@ class Utang : ArrayList<UtangItem>()
@Parcelize
data class UtangItem(
val fotoDiriAnggota: String,
val idAnggota: Int,
val isJatuhTempo: Boolean,
val isMenunggak: Boolean,
val jlhUtang: Int,
val namaAnggota: String,
val tglPinjam: String
) : Parcelable
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
......@@ -10,6 +12,8 @@ import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.google.android.material.snackbar.Snackbar
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.koperasi.beranda.history.HistoryKoperasiActivity
import com.proyek.akhir.kodel.ui.koperasi.berita.BeritaKoperasiActivity
import kotlinx.android.synthetic.main.activity_beranda.*
import kotlinx.android.synthetic.main.app_bar_beranda.*
......@@ -26,8 +30,7 @@ class BerandaActivity : AppCompatActivity() {
fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
startActivity(Intent(this, BeritaKoperasiActivity::class.java))
}
......@@ -36,7 +39,10 @@ class BerandaActivity : AppCompatActivity() {
// menu should be considered as top level destinations.
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_beranda, R.id.nav_informasi_koperasi, R.id.nav_produk_koperasi
R.id.nav_beranda,
R.id.nav_informasi_koperasi,
R.id.nav_produk_koperasi,
R.id.nav_kupon_koperasi
), drawer_layout
)
setupActionBarWithNavController(navController, appBarConfiguration)
......@@ -53,4 +59,11 @@ class BerandaActivity : AppCompatActivity() {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_settings) {
startActivity(Intent(this, HistoryKoperasiActivity::class.java))
}
return true
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
......@@ -10,56 +11,94 @@ import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.data.response.UtangItem
import com.proyek.akhir.kodel.ui.koperasi.beranda.isisaldo.IsiSaldoActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.jatuhtempo.JatuhTempoActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.pengguna.PenggunaActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.PeminjamKoperasiActivity
import com.proyek.akhir.kodel.ui.koperasi.beranda.tariksaldo.TarikSaldoActivity
import com.proyek.akhir.kodel.ui.user.dashboard.DashboardViewModel
import kotlinx.android.synthetic.main.fragment_beranda.*
import kotlinx.android.synthetic.main.fragment_beranda.view.*
import kotlinx.android.synthetic.main.fragment_beranda.view.penunggakKoperasi
import kotlinx.android.synthetic.main.fragment_beranda.view.rvPenunggakKoperasi
import kotlinx.android.synthetic.main.item_isi_saldo.view.*
class BerandaFragment : Fragment() {
private val listPenunggak: MutableList<Penunggak> = mutableListOf()
private val listPenunggak: MutableList<UtangItem> = mutableListOf()
private lateinit var penunggakKoperasiAdapter: PenunggakKoperasiAdapter
private lateinit var homeViewModel: HomeViewModel
private lateinit var dashboardViewModel: DashboardViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
dashboardViewModel =
ViewModelProvider(this).get(DashboardViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_beranda, container, false)
root.rvPenunggakKoperasi.setHasFixedSize(true)
listPenunggak.addAll(getListPenunggak())
root.rvPenunggakKoperasi.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
root.swipeBarBeranda.setOnRefreshListener {
root.swipeBarBeranda.isRefreshing = true
callPenunggak()
root.swipeBarBeranda.isRefreshing = false
}
penunggakKoperasiAdapter = PenunggakKoperasiAdapter(listPenunggak)
root.rvPenunggakKoperasi.adapter = penunggakKoperasiAdapter
//val textView: TextView = root.findViewById(R.id.text_home)
homeViewModel.text.observe(viewLifecycleOwner, Observer {
// textView.text = it
})
root.btnPinjaman.setOnClickListener {
startActivity(Intent(activity, PeminjamKoperasiActivity::class.java))
}
root.btnIsiSaldoKoperasi.setOnClickListener {
startActivity(Intent(activity, IsiSaldoActivity::class.java))
}
root.btnJatuhTempo.setOnClickListener {
startActivity(Intent(activity, JatuhTempoActivity::class.java))
}
root.btnTarikSaldoKoperasi.setOnClickListener {
startActivity(Intent(activity, TarikSaldoActivity::class.java))
}
root.penggunaKoperasi.setOnClickListener {
startActivity(Intent(activity, PenggunaActivity::class.java))
}
root.swipeBarBeranda.isRefreshing = true
callPenunggak()
return root
}
private fun getListPenunggak(): ArrayList<Penunggak> {
val dataImage = resources.obtainTypedArray(R.array.img_penunggak)
val dataName = resources.getStringArray(R.array.name_penunggak)
val dataHari = resources.getStringArray(R.array.hari_penunggak)
val listPenunggakAll = ArrayList<Penunggak>()
listPenunggak.clear()
for (i in 0 until dataImage.length()) {
val penunggak = Penunggak(
dataImage.getResourceId(i, 0),
dataName[i],
dataHari[i]
)
listPenunggakAll.add(penunggak)
}
dataImage.recycle()
return listPenunggakAll
private fun callPenunggak() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataPenunggak().observe(viewLifecycleOwner, Observer { penunggak ->
if (penunggak != null) {
swipeBarBeranda.isRefreshing = false
listPenunggak.clear()
if (penunggak.size < 2) {
penunggakKoperasi.visibility = View.GONE
} else {
penunggakKoperasi.visibility = View.VISIBLE
}
for (i in 0 until penunggak.size) {
listPenunggak.add(penunggak[i])
}
} else {
swipeBarBeranda.isRefreshing = false
lnrPenunggakKoperasi.visibility = View.INVISIBLE
rvPenunggakKoperasi.visibility = View.INVISIBLE
}
})
}
}
......@@ -3,11 +3,84 @@ package com.proyek.akhir.kodel.ui.koperasi.beranda
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.IsiSaldo
import com.proyek.akhir.kodel.data.response.TarikSaldo
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class HomeViewModel : ViewModel() {
private val anggotaKoperasi = MutableLiveData<Anggota>()
private val anggotaIsiSaldo = MutableLiveData<IsiSaldo>()
private val anggotaTarikSaldo = MutableLiveData<TarikSaldo>()
private val _text = MutableLiveData<String>().apply {
value = "This is beranda Fragment"
}
val text: LiveData<String> = _text
fun getAnggotaKoperasi() {
ApiClient().getServiceDel().getAllAnggota().enqueue(object : Callback<Anggota> {
override fun onFailure(call: Call<Anggota>, t: Throwable) {
anggotaKoperasi.value = null
}
override fun onResponse(call: Call<Anggota>, response: Response<Anggota>) {
if (response.isSuccessful) {
anggotaKoperasi.value = response.body()
} else {
anggotaKoperasi.value = null
}
}
})
}
fun getAnggotaIsiSaldo() {
ApiClient().getServiceDel().getAllIsiSaldo().enqueue(object : Callback<IsiSaldo> {
override fun onFailure(call: Call<IsiSaldo>, t: Throwable) {
anggotaIsiSaldo.value = null
}
override fun onResponse(call: Call<IsiSaldo>, response: Response<IsiSaldo>) {
if (response.isSuccessful) {
anggotaIsiSaldo.value = response.body()
} else {
anggotaIsiSaldo.value = null
}
}
})
}
fun getTarikSaldo() {
ApiClient().getServiceDel().getAllTarikSaldo().enqueue(object : Callback<TarikSaldo> {
override fun onFailure(call: Call<TarikSaldo>, t: Throwable) {
anggotaTarikSaldo.value = null
}
override fun onResponse(call: Call<TarikSaldo>, response: Response<TarikSaldo>) {
if (response.isSuccessful) {
anggotaTarikSaldo.value = response.body()
} else {
anggotaTarikSaldo.value = null
}
}
})
}
fun setDataAnggota(): MutableLiveData<Anggota> {
return anggotaKoperasi
}
fun setDataIsiSaldo(): MutableLiveData<IsiSaldo> {
return anggotaIsiSaldo
}
fun setDataTarikSaldo(): MutableLiveData<TarikSaldo> {
return anggotaTarikSaldo
}
}
\ No newline at end of file
......@@ -6,23 +6,33 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.UtangItem
import kotlinx.android.synthetic.main.item_penunggak.view.*
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.hariPenunggak
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.imgPenunggak
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.namePenunggak
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit
class PenunggakKoperasiAdapter(private val listPenunggak: List<Penunggak>) :
class PenunggakKoperasiAdapter(private val listPenunggak: List<UtangItem>) :
RecyclerView.Adapter<PenunggakKoperasiAdapter.PenunggakViewHolder>() {
inner class PenunggakViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(penunggak: Penunggak) {
fun bind(penunggak: UtangItem) {
with(itemView) {
Glide.with(itemView.context)
.load(penunggak.imgPenunggak)
.load(penunggak.fotoDiriAnggota)
.into(imgPenunggak)
namePenunggak.text = penunggak.namePenunggak
hariPenunggak.text = penunggak.hariPenunggak
namePenunggak.text = penunggak.namaAnggota
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val datePinjamApi = inputFormatter.parse(penunggak.tglPinjam)!!
val millionSeconds = datePinjamApi.time.minus(Calendar.getInstance().timeInMillis)
hariPenunggak.text = context.getString(
R.string.menunggak_x_hari,
millionSeconds.let { TimeUnit.MILLISECONDS.toDays(it).toString() })
deletePenunggakBeranda.visibility = View.VISIBLE
}
}
......@@ -35,7 +45,13 @@ class PenunggakKoperasiAdapter(private val listPenunggak: List<Penunggak>) :
)
)
override fun getItemCount(): Int = 3
override fun getItemCount(): Int {
return if (listPenunggak.size > 5) {
3
} else {
listPenunggak.size
}
}
override fun onBindViewHolder(holder: PenunggakViewHolder, position: Int) {
holder.bind(listPenunggak[position])
......
......@@ -2,45 +2,50 @@ package com.proyek.akhir.kodel.ui.koperasi.beranda.history
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.data.response.TransaksiItem
import com.proyek.akhir.kodel.ui.user.dashboard.history.HistoryViewModel
import kotlinx.android.synthetic.main.activity_history_koperasi.*
class HistoryKoperasiActivity : AppCompatActivity() {
private val listHistoryKoperasi: MutableList<History> = mutableListOf()
private lateinit var historyKoperasiAdapter: HistoryKoperasiAdapter
private lateinit var historyViewModel: HistoryViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_history_koperasi)
rvHistoryKoperasi.setHasFixedSize(true)
rvHistoryKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
listHistoryKoperasi.addAll(getListHistory())
refreshHistoryKoperasi.setOnRefreshListener {
refreshHistoryKoperasi.isRefreshing = true
showRecyclerView()
}
refreshHistoryKoperasi.isRefreshing = tr=ue
showRecyclerView()
}
private fun getListHistory(): ArrayList<History> {
val data = resources.getStringArray(R.array.history)
val listHistoryAll = ArrayList<History>()
for (i in data.indices) {
val history = History(
data[i],
data[i]
)
listHistoryAll.add(history)
}
return listHistoryAll
}
private fun showRecyclerView() {
rvHistoryKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
historyKoperasiAdapter = HistoryKoperasiAdapter(listHistoryKoperasi)
rvHistoryKoperasi.adapter = historyKoperasiAdapter
historyViewModel = ViewModelProvider(this).get(HistoryViewModel::class.java)
historyViewModel.setDataTransaksi().observe(this, Observer { transaksi ->
if(transaksi != null){
showDataTransaksi(transaksi)
refreshHistoryKoperasi.isRefreshing = false
}else{
refreshHistoryKoperasi.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showDataTransaksi(transaksi: List<TransaksiItem>){
rvHistoryKoperasi.adapter = HistoryKoperasiAdapter(transaksi)
}
}
......@@ -6,21 +6,24 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity
import com.proyek.akhir.kodel.data.response.TransaksiItem
import com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.AddBeritaKoperasiActivity
import kotlinx.android.synthetic.main.item_history.view.*
class HistoryKoperasiAdapter(private val listHistory: List<History>) :
class HistoryKoperasiAdapter(private val listHistory: List<TransaksiItem>) :
RecyclerView.Adapter<HistoryKoperasiAdapter.HistoryViewHolder>() {
inner class HistoryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(history: History) {
fun bind(history: TransaksiItem) {
with(itemView) {
itemView.setOnClickListener {
textView4.text =
context.getString(R.string.pengisian_saldo_sebesar_x, history.jlhSaldo.toString())
context.startActivity(
Intent(
this.context,
DetailBeritaKoperasiActivity::class.java
AddBeritaKoperasiActivity::class.java
)
)
}
......
package com.proyek.akhir.kodel.ui.koperasi.beranda.isisaldo
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.IsiSaldoItem
import com.proyek.akhir.kodel.data.response.IsiSaldoResponse
import com.proyek.akhir.kodel.data.response.IsiSaldos
import com.proyek.akhir.kodel.ui.koperasi.beranda.HomeViewModel
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_isi_saldo2.*
import retrofit2.Call
import retrofit2.Response
class IsiSaldoActivity : AppCompatActivity() {
private lateinit var IsiSaldoViewModel: HomeViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_isi_saldo2)
rvIsiSaldo.setHasFixedSize(true)
rvIsiSaldo.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshIsiSaldo.setOnRefreshListener {
refreshIsiSaldo.isRefreshing = true
showRecycler()
}
refreshIsiSaldoKoperasi.visibility = View.INVISIBLE
refreshIsiSaldo.isRefreshing = true
showRecycler()
}
private fun showRecycler() {
IsiSaldoViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
IsiSaldoViewModel.getAnggotaIsiSaldo()
IsiSaldoViewModel.setDataIsiSaldo().observe(this, Observer { isiSaldo ->
if (isiSaldo != null) {
refreshIsiSaldo.isRefreshing = false
showData(isiSaldo)
} else {
refreshIsiSaldo.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(item: List<IsiSaldoItem>) {
rvIsiSaldo.adapter = IsiSaldoAdapter(item)
}
fun postIsiSaldo(isinya: IsiSaldos){
refreshIsiSaldoKoperasi.visibility = View.VISIBLE
val isi = IsiSaldoResponse(isinya)
ApiClient().postServicePeople().editIsiSaldo(isi).enqueue(object:retrofit2.Callback<IsiSaldoResponse>{
override fun onFailure(call: Call<IsiSaldoResponse>, t: Throwable) {
refreshIsiSaldoKoperasi.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
"Mengisi Saldo...",
Toast.LENGTH_SHORT
).show()
}
override fun onResponse(
call: Call<IsiSaldoResponse>,
response: Response<IsiSaldoResponse>
) {
if(response.isSuccessful){
showRecycler()
refreshIsiSaldoKoperasi.visibility = View.INVISIBLE
}else{
refreshIsiSaldoKoperasi.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
"Mengisi Saldo..",
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.isisaldo
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.IsiSaldoItem
import com.proyek.akhir.kodel.data.response.IsiSaldos
import kotlinx.android.synthetic.main.item_isi_saldo.view.*
class IsiSaldoAdapter(private val listIsiSaldo: List<IsiSaldoItem>) :
RecyclerView.Adapter<IsiSaldoAdapter.IsiSaldoViewHolder>() {
inner class IsiSaldoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(isiSaldo: IsiSaldoItem) {
with(itemView) {
Glide.with(itemView.context)
.load(isiSaldo.imgAnggota)
.into(imgPenggunaIsiSaldo)
namePenggunaIsiSaldo.text = isiSaldo.namaAnggota
jlhIsiSaldo.text = isiSaldo.jlhSaldo.toString()
confirmIsiSaldo.setOnClickListener {
val isiSaldo = IsiSaldos(
1,
isiSaldo.idAnggota,
isiSaldo.imgAnggota,
isiSaldo.jlhSaldo,
isiSaldo.namaAnggota,
true
)
(context as IsiSaldoActivity).postIsiSaldo(isiSaldo)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IsiSaldoViewHolder =
IsiSaldoViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_isi_saldo, parent, false
)
)
override fun getItemCount(): Int = listIsiSaldo.size
override fun onBindViewHolder(holder: IsiSaldoViewHolder, position: Int) {
holder.bind(listIsiSaldo[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.jatuhtempo
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.UtangItem
import com.proyek.akhir.kodel.ui.user.dashboard.DashboardViewModel
import kotlinx.android.synthetic.main.activity_jatuh_tempo.*
class JatuhTempoActivity : AppCompatActivity() {
private lateinit var jatuhTempoViewModel: DashboardViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_jatuh_tempo)
rvPenunggakKoperasi.setHasFixedSize(true)
rvPenunggakKoperasi.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshJatuhTempo.setOnRefreshListener {
refreshJatuhTempo.isRefreshing = true
showRecyclerPenunggak()
}
refreshJatuhTempo.isRefreshing = true
showRecyclerPenunggak()
}
private fun showRecyclerPenunggak() {
jatuhTempoViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
jatuhTempoViewModel.setDataJatuhTempo().observe(this, Observer { item ->
if (item != null) {
refreshJatuhTempo.isRefreshing = false
showData(item)
} else {
refreshJatuhTempo.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(item: List<UtangItem>){
rvPenunggakKoperasi.adapter = JatuhTempoAdapter(item)
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.jatuhtempo
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.UtangItem
import kotlinx.android.synthetic.main.item_penunggak_pengingat.view.*
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit
class JatuhTempoAdapter(private val listJatuhTempo: List<UtangItem>) :
RecyclerView.Adapter<JatuhTempoAdapter.JatuhTempoViewHolder>() {
inner class JatuhTempoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: UtangItem) {
with(itemView) {
Glide.with(itemView)
.load(item.fotoDiriAnggota)
.into(imgPenunggak)
namePenunggak.text = item.namaAnggota
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val datePinjamApi = inputFormatter.parse(item.tglPinjam)
val millionSeconds = datePinjamApi?.time?.minus(Calendar.getInstance().timeInMillis)
hariPenunggak.text = context.getString(
R.string.menunggak_x_hari,
millionSeconds!!.let { TimeUnit.MILLISECONDS.toDays(it).toString() })
ingatkanPenunggakBeranda.setOnClickListener { item ->
Toast.makeText(item.context, "Diingatkan!", Toast.LENGTH_SHORT).show()
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): JatuhTempoViewHolder =
JatuhTempoViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_penunggak_pengingat, parent, false
)
)
override fun getItemCount(): Int = listJatuhTempo.size
override fun onBindViewHolder(holder: JatuhTempoViewHolder, position: Int) {
holder.bind(listJatuhTempo[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.pengguna
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.AnggotaItem
import com.proyek.akhir.kodel.ui.koperasi.beranda.HomeViewModel
import kotlinx.android.synthetic.main.activity_pengguna.*
class PenggunaActivity : AppCompatActivity() {
private lateinit var viewModelPengguna: HomeViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pengguna)
rvPenggunaKoperasi.setHasFixedSize(true)
rvPenggunaKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshPenggunaKoperasi.setOnRefreshListener {
refreshPenggunaKoperasi.isRefreshing = true
showRecyclerView()
}
refreshPenggunaKoperasi.isRefreshing = true
showRecyclerView()
}
private fun showRecyclerView() {
viewModelPengguna = ViewModelProvider(this).get(HomeViewModel::class.java)
viewModelPengguna.getAnggotaKoperasi()
viewModelPengguna.setDataAnggota().observe(this, Observer { pengguna ->
if (pengguna != null) {
refreshPenggunaKoperasi.isRefreshing = false
showDataAnggota(pengguna)
} else {
refreshPenggunaKoperasi.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showDataAnggota(anggotaItem: List<AnggotaItem>) {
rvPenggunaKoperasi.adapter = PenggunaAdapter(anggotaItem)
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.pengguna
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.AnggotaItem
import kotlinx.android.synthetic.main.item_pengguna.view.*
class PenggunaAdapter(private val listPengguna: List<AnggotaItem>) :
RecyclerView.Adapter<PenggunaAdapter.PenggunaViewHolder>() {
inner class PenggunaViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(pengguna: AnggotaItem) {
with(itemView){
Glide.with(itemView.context)
.load(pengguna.fotoDiriAnggota)
.into(imgPenggunaKoperasi)
namaPengguna.text = pengguna.namaAnggota
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PenggunaViewHolder =
PenggunaViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_pengguna, parent, false
)
)
override fun getItemCount(): Int = listPengguna.size
override fun onBindViewHolder(holder: PenggunaViewHolder, position: Int) {
holder.bind(listPengguna[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.PinjamItem
import com.proyek.akhir.kodel.ui.user.dashboard.DashboardViewModel
import kotlinx.android.synthetic.main.activity_peminjam_koperasi.*
class PeminjamKoperasiActivity : AppCompatActivity() {
private lateinit var peminjamViewModel: DashboardViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_peminjam_koperasi)
rvPeminjamKoperasi.setHasFixedSize(true)
rvPeminjamKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshPeminjam.setOnRefreshListener {
refreshPeminjam.isRefreshing = true
showAllRecyclePenunggak()
}
refreshPeminjam.isRefreshing = true
showAllRecyclePenunggak()
}
private fun showAllRecyclePenunggak() {
peminjamViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
peminjamViewModel.getAllPeminjam()
peminjamViewModel.setDataPeminjam().observe(this, Observer { peminjam ->
if (peminjam != null) {
Toast.makeText(this, peminjam[0].idAnggota.toString(), Toast.LENGTH_SHORT).show()
showData(peminjam)
refreshPeminjam.isRefreshing = false
} else {
refreshPeminjam.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(peminjam: ArrayList<PinjamItem>) {
rvPeminjamKoperasi.adapter = PeminjamKoperasiAdapter(peminjam)
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman
import android.content.Intent
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.PinjamItem
import com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.confirmPeminjam.ConfirmasiPeminjamActivity
import kotlinx.android.synthetic.main.item_peminjam.view.*
class PeminjamKoperasiAdapter(private val listPeminjam: ArrayList<PinjamItem>) :
RecyclerView.Adapter<PeminjamKoperasiAdapter.PeminjamViewHolder>() {
inner class PeminjamViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(peminjam: PinjamItem) {
with(itemView) {
namaPeminjam.text = peminjam.namaPeminjam
jlhPinjam.text =
context.getString(R.string.peminjaman_x, peminjam.jlhPinjam.toString())
itemView.setOnClickListener {
val intent = Intent(this.context, ConfirmasiPeminjamActivity::class.java)
intent.putExtra("idAnggota", peminjam.idAnggota.toString())
context.startActivity(intent)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PeminjamViewHolder =
PeminjamViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_peminjam, parent, false
)
)
override fun getItemCount(): Int = listPeminjam.size
override fun onBindViewHolder(holder: PeminjamViewHolder, position: Int) {
holder.bind(listPeminjam[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.confirmPeminjam
import android.content.Intent
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.koperasi.beranda.pinjaman.PeminjamKoperasiActivity
import com.proyek.akhir.kodel.ui.user.profil.ProfilViewModel
import kotlinx.android.synthetic.main.activity_confirmasi_peminjam.*
import kotlinx.android.synthetic.main.activity_confirmasi_peminjam.imgPengguna
import kotlinx.android.synthetic.main.fragment_profil.*
class ConfirmasiPeminjamActivity : AppCompatActivity() {
lateinit var profilViewModel: ProfilViewModel
lateinit var idAnggota: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_confirmasi_peminjam)
idAnggota = intent.getStringExtra("idAnggota")
refreshConfirmPeminjam.setOnRefreshListener {
refreshConfirmPeminjam.isRefreshing = true
showAllData(idAnggota)
}
btnTerimaPermohonan.setOnClickListener {
startActivity(Intent(this, PeminjamKoperasiActivity::class.java))
finish()
}
btnTolakPermohonan.setOnClickListener {
startActivity(Intent(this, PeminjamKoperasiActivity::class.java))
finish()
}
refreshConfirmPeminjam.isRefreshing = true
showAllData(idAnggota)
}
private fun showAllData(idAnggota: String) {
profilViewModel = ViewModelProvider(this).get(ProfilViewModel::class.java)
profilViewModel.getItemAnggota(idAnggota)
profilViewModel.setDataAnggotaItem().observe(this, Observer { anggota ->
if (anggota != null) {
refreshConfirmPeminjam.isRefreshing = false
Glide.with(this)
.load(anggota[0].fotoDiriAnggota)
.into(imgPengguna)
if (anggota[0].fotoKkAnggota != null) {
lnrKKStatus.setBackgroundColor(Color.parseColor(R.color.colorGreen.toString()))
txtStatusKk.text = "Ganti KK"
lnrKTPStatus.setBackgroundColor(Color.parseColor(R.color.colorGreen.toString()))
txtStatusKtp.text = "Ganti KTP"
}
namaPengguna.text = anggota[0].namaAnggota
emailPengguna.text = anggota[0].emailAnggota
nomorPengguna.text = anggota[0].noTelpAnggota.toString()
alamatPengguna.text = anggota[0].alamatAnggota
penghasilanAnggota.text =
getString(R.string.rp_x, anggota[0].penghasilanAnggota.toString())
} else {
Toast.makeText(this, "Jaringan Lemah!", Toast.LENGTH_SHORT).show()
}
})
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.tariksaldo
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.TarikSaldoItem
import com.proyek.akhir.kodel.ui.koperasi.beranda.HomeViewModel
import kotlinx.android.synthetic.main.activity_tarik_saldo2.*
class TarikSaldoActivity : AppCompatActivity() {
private lateinit var tarikSaldoViewModel: HomeViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tarik_saldo2)
rvTarikSaldo.setHasFixedSize(true)
rvTarikSaldo.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshTarikSaldo.setOnRefreshListener {
refreshTarikSaldo.isRefreshing = true
showAllData()
}
refreshTarikSaldo.isRefreshing = true
showAllData()
}
private fun showAllData() {
tarikSaldoViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
tarikSaldoViewModel.getTarikSaldo()
tarikSaldoViewModel.setDataTarikSaldo().observe(this, Observer { item ->
if (item != null) {
refreshTarikSaldo.isRefreshing = false
showData(item)
} else {
refreshTarikSaldo.isRefreshing = false
Toast.makeText(this, "Koneksi Lemah, Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(item: List<TarikSaldoItem>) {
rvTarikSaldo.adapter = TarikSaldoAdapter(item)
}
}
package com.proyek.akhir.kodel.ui.koperasi.beranda.tariksaldo
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.TarikSaldoItem
import kotlinx.android.synthetic.main.item_tarik_saldo.view.*
class TarikSaldoAdapter(private val listTarikSaldo: List<TarikSaldoItem>) :
RecyclerView.Adapter<TarikSaldoAdapter.TarikSaldoViewHolder>() {
inner class TarikSaldoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(item: TarikSaldoItem) {
with(itemView) {
namePenggunaTarikSaldo.text = item.namaPengguna
jlhTarikSaldo.text =
context.getString(R.string.penarikan_x, item.jlhSaldo.toString())
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TarikSaldoViewHolder =
TarikSaldoViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_tarik_saldo, parent, false
)
)
override fun getItemCount(): Int = listTarikSaldo.size
override fun onBindViewHolder(holder: TarikSaldoViewHolder, position: Int) {
holder.bind(listTarikSaldo[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.berita
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.BeritaItem
import com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita.AddBeritaKoperasiActivity
import com.proyek.akhir.kodel.ui.user.dashboard.DashboardViewModel
import kotlinx.android.synthetic.main.activity_berita_koperasi.*
class BeritaKoperasiActivity : AppCompatActivity() {
private lateinit var dashboardViewModel: DashboardViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_berita_koperasi)
rvBeritaKoperasi.setHasFixedSize(true)
rvBeritaKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
swipeBeritaKoperasi.setOnRefreshListener {
swipeBeritaKoperasi.isRefreshing = true
callBerita()
}
addBeritaKoperasi.setOnClickListener {
startActivity(Intent(this, AddBeritaKoperasiActivity::class.java))
}
swipeBeritaKoperasi.isRefreshing = true
callBerita()
}
private fun callBerita() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataBerita().observe(this, Observer { berita ->
if (berita != null) {
showData(berita)
} else {
Toast.makeText(this, "Harap Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(berita: List<BeritaItem>) {
rvBeritaKoperasi.adapter = BeritaKoperasiAdapter(berita)
}
}
package com.proyek.akhir.kodel.ui.koperasi.berita
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.BeritaItem
import kotlinx.android.synthetic.main.item_berita.view.*
import java.text.SimpleDateFormat
import java.util.*
class BeritaKoperasiAdapter(private val listBerita: List<BeritaItem>) :
RecyclerView.Adapter<BeritaKoperasiAdapter.BeritaKoperasiViewHolder>() {
inner class BeritaKoperasiViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(berita: BeritaItem) {
with(itemView) {
judulBerita.text = berita.judulBerita
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val outputFormatter = SimpleDateFormat("dd-MM-yyyy", Locale.US)
val answer : Date = inputFormatter.parse(berita.tglBerita)
val tanggal = outputFormatter.format(answer)
tglBerita.text = tanggal.toString()
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BeritaKoperasiViewHolder =
BeritaKoperasiViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_berita, parent, false
)
)
override fun getItemCount(): Int = listBerita.size
override fun onBindViewHolder(holder: BeritaKoperasiViewHolder, position: Int) {
holder.bind(listBerita[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.berita.detailBerita
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.BeritaResponse
import com.proyek.akhir.kodel.data.response.Beritas
import com.proyek.akhir.kodel.ui.koperasi.berita.BeritaKoperasiActivity
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_detail_berita_koperasi.*
import retrofit2.Call
import retrofit2.Response
import java.text.SimpleDateFormat
import java.util.*
class AddBeritaKoperasiActivity : AppCompatActivity() {
lateinit var judulBerita: String
lateinit var isiBerita: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_berita_koperasi)
val c: Date = Calendar.getInstance().time
val df = SimpleDateFormat("dd/MM/yyyy")
val formattedDate: String = df.format(c)
progressTambahBerita.visibility = View.INVISIBLE
btnTambahBerita.setOnClickListener {
judulBerita = judulBeritaValue.text.toString()
isiBerita = isiBeritaValue.text.toString()
val beritas = Beritas(
isiBerita,
"",
1,
7,
judulBerita,
formattedDate
)
postBerita(beritas)
}
}
private fun postBerita(berita: Beritas) {
progressTambahBerita.visibility = View.VISIBLE
val beritas = BeritaResponse(berita)
ApiClient().postServicePeople().postBerita(beritas)
.enqueue(object : retrofit2.Callback<BeritaResponse> {
override fun onFailure(call: Call<BeritaResponse>, t: Throwable) {
progressTambahBerita.visibility = View.INVISIBLE
Toast.makeText(
this@AddBeritaKoperasiActivity,
"Jaringan Lemah!",
Toast.LENGTH_SHORT
).show()
}
override fun onResponse(
call: Call<BeritaResponse>,
response: Response<BeritaResponse>
) {
if (response.isSuccessful) {
progressTambahBerita.visibility = View.INVISIBLE
startActivity(
Intent(
this@AddBeritaKoperasiActivity,
BeritaKoperasiActivity::class.java
)
)
finish()
} else {
progressTambahBerita.visibility = View.INVISIBLE
Toast.makeText(
this@AddBeritaKoperasiActivity,
"Jaringan Lemah!",
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
package com.proyek.akhir.kodel.ui.koperasi.kupon
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.KuponItem
import com.proyek.akhir.kodel.utils.DateConverter
import kotlinx.android.synthetic.main.item_kupon_koperasi.view.*
class KuponAdapter(private val listKupon: List<KuponItem>) :
RecyclerView.Adapter<KuponAdapter.KuponViewHolder>() {
inner class KuponViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(kupon: KuponItem) {
with(itemView) {
judulKupon.text = kupon.desckupon
codeKupon.text = kupon.codekupon
tglKupon.text = DateConverter().dateKuponConverter(kupon.validity)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KuponViewHolder =
KuponViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_kupon_koperasi, parent, false
)
)
override fun getItemCount(): Int = listKupon.size
override fun onBindViewHolder(holder: KuponAdapter.KuponViewHolder, position: Int) {
holder.bind(listKupon[position])
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.kupon
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.KuponItem
import com.proyek.akhir.kodel.ui.koperasi.kupon.addKupon.TambahKuponActivity
import kotlinx.android.synthetic.main.activity_kupon_koperasi.*
class KuponKoperasiActivity : AppCompatActivity() {
lateinit var viewModelKuponKoperasi: KuponViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_kupon_koperasi)
rvKuponKoperasi.setHasFixedSize(true)
rvKuponKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
swipeKuponKoperasi.setOnRefreshListener {
swipeKuponKoperasi.isRefreshing = true
callKupon()
swipeKuponKoperasi.isRefreshing = false
}
addKuponKoperasi.setOnClickListener {
startActivity(Intent(this, TambahKuponActivity::class.java))
}
swipeKuponKoperasi.isRefreshing = true
callKupon()
swipeKuponKoperasi.isRefreshing = false
}
private fun callKupon() {
viewModelKuponKoperasi = ViewModelProvider(this).get(KuponViewModel::class.java)
viewModelKuponKoperasi.setDataKupon().observe(this, Observer { kupon ->
if (kupon != null) {
showData(kupon)
} else {
Toast.makeText(this, "Internet Lemah!", Toast.LENGTH_SHORT).show()
}
})
}
private fun showData(kupon: List<KuponItem>) {
rvKuponKoperasi.adapter = KuponAdapter(kupon)
}
}
package com.proyek.akhir.kodel.ui.koperasi.kupon
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Kupon
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Response
class KuponViewModel : ViewModel() {
private val koperasiKupon = MutableLiveData<Kupon>()
init {
getKupon()
}
private fun getKupon() {
ApiClient().getServiceKode().getAllCupon().enqueue(object: retrofit2.Callback<Kupon>{
override fun onFailure(call: Call<Kupon>, t: Throwable) {
koperasiKupon.value = null
}
override fun onResponse(call: Call<Kupon>, response: Response<Kupon>) {
if(response.isSuccessful){
koperasiKupon.value = response.body()
}else{
koperasiKupon.value = null
}
}
})
}
fun setDataKupon(): MutableLiveData<Kupon>{
return koperasiKupon
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.ui.koperasi.kupon.addKupon
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.KuponResponse
import com.proyek.akhir.kodel.data.response.Kupons
import com.proyek.akhir.kodel.ui.koperasi.kupon.KuponKoperasiActivity
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_tambah_kupon.*
import retrofit2.Call
import retrofit2.Response
class TambahKuponActivity : AppCompatActivity() {
lateinit var kodeKupon: String
lateinit var descKupon: String
lateinit var jlhDisc: String
lateinit var dateKupon: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tambah_kupon)
swipeBarDetailProduk.setOnRefreshListener {
swipeBarDetailProduk.isRefreshing = true
}
btnTambahKupon.setOnClickListener {
kodeKupon = codeKuponValue.text.toString()
descKupon = descKuponValue.text.toString()
jlhDisc = valueKuponJlh.text.toString()
dateKupon =
dateValidasi.dayOfMonth.toString() + "/" + dateValidasi.month.toString() + "/" + dateValidasi.year.toString()
val kuponItem = Kupons(
kodeKupon,
descKupon,
1,
dateKupon,
jlhDisc.toInt()
)
postKupon(kuponItem)
}
}
private fun postKupon(kupon: Kupons) {
progressTambahKupon.visibility = View.VISIBLE
val kupons = KuponResponse(kupon)
ApiClient().postServicePeople().postKupon(kupons)
.enqueue(object : retrofit2.Callback<KuponResponse> {
override fun onFailure(call: Call<KuponResponse>, t: Throwable) {
progressTambahKupon.visibility = View.INVISIBLE
Toast.makeText(this@TambahKuponActivity, "Jaringan Lemah", Toast.LENGTH_SHORT)
.show()
}
override fun onResponse(
call: Call<KuponResponse>,
response: Response<KuponResponse>
) {
if (response.isSuccessful) {
progressTambahKupon.visibility = View.GONE
startActivity(
Intent(
this@TambahKuponActivity,
KuponKoperasiActivity::class.java
)
)
finish()
} else {
progressTambahKupon.visibility = View.INVISIBLE
Toast.makeText(
this@TambahKuponActivity,
"Jaringan Lemah",
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
package com.proyek.akhir.kodel.ui.koperasi.produk
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.google.android.material.snackbar.Snackbar
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Produk
import com.proyek.akhir.kodel.data.response.ProdukItem
import com.proyek.akhir.kodel.ui.koperasi.produk.addProduk.TambahProdukActivity
import com.proyek.akhir.kodel.ui.user.produk.ProdukAdapter
import com.proyek.akhir.kodel.ui.user.produk.ProdukViewModel
import kotlinx.android.synthetic.main.activity_produk_koperasi.*
class ProdukKoperasiActivity : AppCompatActivity() {
private val listProdukKoperasi: MutableList<Produk> = mutableListOf()
private lateinit var produkKoperasiAdapter: ProdukKoperasiAdapter
private lateinit var produkViewModel: ProdukViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_produk_koperasi)
rvProdukKoperasi.setHasFixedSize(true)
listProdukKoperasi.addAll(getListProduk())
rvProdukKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
refreshProductKoperasi.setOnRefreshListener {
refreshProductKoperasi.isRefreshing = true
showRecyclerProduk()
}
refreshProductKoperasi.isRefreshing = true
showRecyclerProduk()
addProdukKoperasi.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
startActivity(Intent(this, TambahProdukActivity::class.java))
}
}
private fun showRecyclerProduk() {
rvProdukKoperasi.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
produkKoperasiAdapter = ProdukKoperasiAdapter(listProdukKoperasi)
rvProdukKoperasi.adapter = produkKoperasiAdapter
produkViewModel = ViewModelProvider(this).get(ProdukViewModel::class.java)
produkViewModel.setDataProduk().observe(this, Observer { produk ->
if (produk != null) {
showProduct(produk)
refreshProductKoperasi.isRefreshing = false
} else {
refreshProductKoperasi.isRefreshing = false
Toast.makeText(this, "Jaringan Lemah", Toast.LENGTH_SHORT).show()
}
})
}
private fun getListProduk(): ArrayList<Produk> {
val dataImage = resources.obtainTypedArray(R.array.img_produk)
val dataName = resources.getStringArray(R.array.nama_produk)
val dataPrice = resources.getStringArray(R.array.harga_produk)
val dataCategory = resources.getStringArray(R.array.category_produk)
val listProdukAll = ArrayList<Produk>()
listProdukAll.clear()
for (i in 0 until dataImage.length()) {
val produk = Produk(
dataImage.getResourceId(i, 0),
dataName[i],
dataPrice[i],
dataCategory[i]
)
listProdukAll.add(produk)
}
dataImage.recycle()
return listProdukAll
private fun showProduct(item: List<ProdukItem>) {
rvProdukKoperasi.adapter = ProdukAdapter(item)
}
}
package com.proyek.akhir.kodel.ui.koperasi.produk.addProduk
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.ProdukResponse
import com.proyek.akhir.kodel.data.response.Produks
import com.proyek.akhir.kodel.ui.koperasi.produk.ProdukKoperasiActivity
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_tambah_produk.*
import retrofit2.Call
import retrofit2.Response
class TambahProdukActivity : AppCompatActivity() {
lateinit var nameProduk: String
lateinit var hargaProduk: String
lateinit var satuanProduk: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tambah_produk)
progressTambahKupon.visibility = View.INVISIBLE
btnTambahProduk.setOnClickListener {
progressTambahKupon.visibility = View.VISIBLE
nameProduk = productName.text.toString()
hargaProduk = hargaProdukValue.text.toString()
satuanProduk = kategoryProduk.text.toString()
val produk = Produks(
"",
hargaProduk.toInt(),
5,
8,
nameProduk,
satuanProduk
)
postProduk(produk)
}
}
private fun postProduk(produks: Produks) {
progressTambahKupon.visibility = View.VISIBLE
val produks = ProdukResponse(produks)
ApiClient().postServicePeople().postProduk(produks)
.enqueue(object : retrofit2.Callback<ProdukResponse> {
override fun onFailure(call: Call<ProdukResponse>, t: Throwable) {
Toast.makeText(this@TambahProdukActivity, "Jaringan Lemah", Toast.LENGTH_SHORT)
.show()
}
override fun onResponse(
call: Call<ProdukResponse>,
response: Response<ProdukResponse>
) {
if (response.isSuccessful) {
progressTambahKupon.visibility = View.GONE
startActivity(
Intent(
this@TambahProdukActivity,
ProdukKoperasiActivity::class.java
)
)
finish()
} else {
progressTambahKupon.visibility = View.INVISIBLE
Toast.makeText(
this@TambahProdukActivity,
"Jaringan Lemah!",
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
......@@ -7,6 +7,8 @@ import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.BeritaItem
import kotlinx.android.synthetic.main.item_berita.view.*
import java.text.SimpleDateFormat
import java.util.*
class BeritaDashboardAdapter(private val listBerita: List<BeritaItem>) :
RecyclerView.Adapter<BeritaDashboardAdapter.BeritaViewHolder>() {
......@@ -15,8 +17,11 @@ class BeritaDashboardAdapter(private val listBerita: List<BeritaItem>) :
fun bind(berita: BeritaItem) {
with(itemView) {
judulBerita.text = berita.judulBerita
tglBerita.text = berita.tglBerita
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val outputFormatter = SimpleDateFormat("dd-MM-yyyy", Locale.US)
val answer : Date = inputFormatter.parse(berita.tglBerita)
val tanggal = outputFormatter.format(answer)
tglBerita.text = tanggal.toString()
}
}
......
......@@ -6,13 +6,12 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Berita
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.AnggotaItem
import com.proyek.akhir.kodel.data.response.BeritaItem
import com.proyek.akhir.kodel.data.response.UtangItem
......@@ -26,15 +25,20 @@ import kotlinx.android.synthetic.main.fragment_dashboard.view.*
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit
import kotlin.collections.ArrayList
class DashboardFragment : Fragment() {
private val listPenunggak: MutableList<Penunggak> = mutableListOf()
private lateinit var penunggakDashboardAdapter: PenunggakDashboardAdapter
private val listPenunggak: MutableList<UtangItem> = mutableListOf()
private val listBerita: MutableList<BeritaItem> = mutableListOf()
private lateinit var dashboardViewModel: DashboardViewModel
private lateinit var saldoUserTotal: String
lateinit var nameUser: String
lateinit var idAnggota: String
lateinit var imgUser: String
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
......@@ -44,29 +48,28 @@ class DashboardFragment : Fragment() {
ViewModelProvider(this).get(DashboardViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_dashboard, container, false)
root.viewDashboard.visibility = View.GONE
root.dashboardLoading.visibility = View.VISIBLE
root.lnrUtang.visibility = View.GONE
root.txtNameHallo.visibility = View.GONE
root.pengingatPenunggak.visibility = View.GONE
root.rvPenunggakBeranda.setHasFixedSize(true)
listPenunggak.addAll(getListPenunggak())
root.rvPenunggakBeranda.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
penunggakDashboardAdapter = PenunggakDashboardAdapter(listPenunggak)
root.rvPenunggakBeranda.adapter = penunggakDashboardAdapter
root.isiSaldoDashboard.setOnClickListener {
startActivity(Intent(activity, IsiSaldoActivity::class.java))
val intent = Intent(activity, IsiSaldoActivity::class.java)
intent.putExtra("idAnggota", idAnggota)
intent.putExtra("nameAnggota", nameUser)
intent.putExtra("imgUser", imgUser)
startActivity(intent)
}
root.tarikSaldoDashboard.setOnClickListener {
startActivity(Intent(activity, TarikSaldoActivity::class.java))
var intent = Intent(activity, TarikSaldoActivity::class.java)
intent.putExtra("saldoUser", saldoUserTotal)
intent.putExtra("nameUser", nameUser)
intent.putExtra("idAnggota", idAnggota)
startActivity(intent)
}
root.historyBellButton.setOnClickListener {
......@@ -78,55 +81,47 @@ class DashboardFragment : Fragment() {
}
root.ajuanPinjamDashboard.setOnClickListener {
startActivity(Intent(activity, AjuanPinjamanActivity::class.java))
}
root.refreshDashboardUser.setOnRefreshListener {
root.refreshDashboardUser.isRefreshing = true
callAnggota()
callUtang()
callBerita()
val intent = Intent(activity, AjuanPinjamanActivity::class.java)
intent.putExtra("nameUser", nameUser)
startActivity(intent)
}
callAnggota()
callUtang()
callBerita()
callPenunggak()
return root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
rvBeritaKabarDashboard.setHasFixedSize(true)
view.rvBeritaKabarDashboard.setHasFixedSize(true)
view.rvPenunggakBeranda.setHasFixedSize(true)
rvBeritaKabarDashboard.layoutManager =
view.rvBeritaKabarDashboard.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
callBerita()
view.rvPenunggakBeranda.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
}
view.rvBeritaKabarDashboard.adapter = BeritaDashboardAdapter(listBerita)
private fun getListPenunggak(): ArrayList<Penunggak> {
val dataImage = resources.obtainTypedArray(R.array.img_penunggak)
val dataName = resources.getStringArray(R.array.name_penunggak)
val dataHari = resources.getStringArray(R.array.hari_penunggak)
val listPenunggakAll = ArrayList<Penunggak>()
listPenunggak.clear()
for (i in 0 until dataImage.length()) {
val penunggak = Penunggak(
dataImage.getResourceId(i, 0),
dataName[i],
dataHari[i]
)
listPenunggakAll.add(penunggak)
view.rvPenunggakBeranda.adapter = PenunggakDashboardAdapter(listPenunggak)
view.refreshDashboardUser.setOnRefreshListener {
viewDashboard.visibility = View.GONE
refreshDashboardUser.isRefreshing = true
callAnggota()
callUtang()
callBerita()
callPenunggak()
}
dataImage.recycle()
return listPenunggakAll
}
private fun callAnggota() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataAnggota().observe(viewLifecycleOwner, Observer { item ->
......@@ -150,17 +145,42 @@ class DashboardFragment : Fragment() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataBerita().observe(viewLifecycleOwner, Observer { berita ->
if (berita != null) {
showBerita(berita)
listBerita.clear()
for (i in 0 until berita.size) {
listBerita.add(berita[i])
}
viewDashboard.visibility = View.VISIBLE
dashboardLoading.visibility = View.GONE
refreshDashboardUser.isRefreshing = false
} else {
dashboardLoading.visibility = View.GONE
lnrBeritaKabar.visibility = View.GONE
rvBeritaKabarDashboard.visibility = View.GONE
refreshDashboardUser.isRefreshing = false
Toast.makeText(context, "Harap Refresh!", Toast.LENGTH_SHORT).show()
}
})
}
private fun callPenunggak() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.setDataPenunggak().observe(viewLifecycleOwner, Observer { penunggak ->
if (penunggak != null) {
listPenunggak.clear()
if (penunggak.size < 2) {
detailPenunggak.visibility = View.GONE
} else {
detailPenunggak.visibility = View.VISIBLE
}
for (i in 0 until penunggak.size) {
listPenunggak.add(penunggak[i])
}
} else {
lnrPenunggak.visibility = View.INVISIBLE
rvPenunggakBeranda.visibility = View.INVISIBLE
}
})
}
private fun showUtang(utang: List<UtangItem>) {
......@@ -176,13 +196,8 @@ class DashboardFragment : Fragment() {
// var answer: String = current.format(formatter)
} else {
val date: Date = Calendar.getInstance().time
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
// val outputFormatter = SimpleDateFormat("dd-MM-yyyy")
// val answer = inputFormatter.format(date)
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val datePinjamApi = inputFormatter.parse(utang[0].tglPinjam)
val millionSeconds = datePinjamApi?.time?.minus(Calendar.getInstance().timeInMillis)
if (millionSeconds!! <= 0) {
......@@ -201,18 +216,16 @@ class DashboardFragment : Fragment() {
private fun showData(anggota: List<AnggotaItem>) {
saldoUser.text = getString(R.string.saldo_user_value, anggota[0].saldoAnggota)
saldoUserTotal = anggota[0].saldoAnggota.toString()
//Nama Anggota
var name = anggota[0].namaAnggota
nameUser = anggota[0].namaAnggota
idAnggota = anggota[0].idAnggota.toString()
imgUser = anggota[0].fotoDiriAnggota
val arr: Array<String> = name.split(" ").toTypedArray()
val firstWord = arr[0]
txtNameHallo.visibility = View.VISIBLE
txtNameHallo.text = getString(R.string.halo_name, firstWord)
}
private fun showBerita(berita: List<BeritaItem>) {
rvBeritaKabarDashboard.adapter = BeritaDashboardAdapter(berita)
}
}
......@@ -4,6 +4,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.Berita
import com.proyek.akhir.kodel.data.response.Pinjam
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
......@@ -14,14 +15,20 @@ class DashboardViewModel : ViewModel() {
private val anggotaKoperasi = MutableLiveData<Anggota>()
private val anggotaUtang = MutableLiveData<Utang>()
private val anggotaBerita = MutableLiveData<Berita>()
private val anggotaPenunggak = MutableLiveData<Utang>()
private val anggotaJatuhTempo = MutableLiveData<Utang>()
private val anggotaPeminjam = MutableLiveData<Pinjam>()
init {
getAnggotaKoperasi()
getAnggotaUtang()
getGetAnggotaBerita()
getAllPenunggak()
getAllJatuhTemp()
}
private fun getAnggotaKoperasi() {
ApiClient().getServicePeople().getAnggota().enqueue(object : retrofit2.Callback<Anggota> {
ApiClient().getServiceDel().getAnggota().enqueue(object : Callback<Anggota> {
override fun onFailure(call: Call<Anggota>, t: Throwable) {
anggotaKoperasi.value = null
}
......@@ -38,7 +45,7 @@ class DashboardViewModel : ViewModel() {
}
private fun getAnggotaUtang() {
ApiClient().getServicePeople().getUtang().enqueue(object : retrofit2.Callback<Utang> {
ApiClient().getServiceDel().getUtang().enqueue(object : retrofit2.Callback<Utang> {
override fun onFailure(call: Call<Utang>, t: Throwable) {
anggotaUtang.value = null
}
......@@ -53,22 +60,75 @@ class DashboardViewModel : ViewModel() {
})
}
private fun getGetAnggotaBerita(){
ApiClient().getServicePeople().getBerita().enqueue(object : Callback<Berita>{
private fun getGetAnggotaBerita() {
ApiClient().getServiceKode().getBerita().enqueue(object : Callback<Berita> {
override fun onFailure(call: Call<Berita>, t: Throwable) {
anggotaBerita.value = null
}
override fun onResponse(call: Call<Berita>, response: Response<Berita>) {
if(response.isSuccessful){
if (response.isSuccessful) {
anggotaBerita.value = response.body()
}else{
} else {
anggotaBerita.value = null
}
}
})
}
private fun getAllPenunggak() {
ApiClient().getServiceDel().getUtangAll().enqueue(object : Callback<Utang> {
override fun onFailure(call: Call<Utang>, t: Throwable) {
anggotaPenunggak.value = null
}
override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
if (response.isSuccessful) {
anggotaPenunggak.value = response.body()
} else {
anggotaPenunggak.value = null
}
}
})
}
private fun getAllJatuhTemp() {
ApiClient().getServiceDel().getAllPenunggak().enqueue(object : Callback<Utang> {
override fun onFailure(call: Call<Utang>, t: Throwable) {
anggotaJatuhTempo.value = null
}
override fun onResponse(call: Call<Utang>, response: Response<Utang>) {
if (response.isSuccessful) {
anggotaJatuhTempo.value = response.body()
} else {
anggotaJatuhTempo.value = null
}
}
})
}
fun getAllPeminjam() {
ApiClient().getServiceKode().getAllPinjam().enqueue(object : Callback<Pinjam> {
override fun onFailure(call: Call<Pinjam>, t: Throwable) {
anggotaPeminjam.value = null
}
override fun onResponse(
call: Call<Pinjam>,
response: Response<Pinjam>
) {
if (response.isSuccessful) {
anggotaPeminjam.value = response.body()
} else {
anggotaPeminjam.value = null
}
}
})
}
fun setDataAnggota(): MutableLiveData<Anggota> {
return anggotaKoperasi
}
......@@ -77,9 +137,21 @@ class DashboardViewModel : ViewModel() {
return anggotaUtang
}
fun setDataBerita(): MutableLiveData<Berita>{
fun setDataBerita(): MutableLiveData<Berita> {
return anggotaBerita
}
fun setDataPenunggak(): MutableLiveData<Utang> {
return anggotaPenunggak
}
fun setDataJatuhTempo(): MutableLiveData<Utang> {
return anggotaJatuhTempo
}
fun setDataPeminjam(): MutableLiveData<Pinjam> {
return anggotaPeminjam
}
// val anggota : Int? = anggotaKoperasi.value?.get(0)?.saldoAnggota
......
......@@ -7,19 +7,30 @@ import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.Penunggak
import com.proyek.akhir.kodel.data.response.UtangItem
import kotlinx.android.synthetic.main.item_penunggak.view.*
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit
class PenunggakDashboardAdapter(private val listPenunggak: List<Penunggak>) :
class PenunggakDashboardAdapter(private val listPenunggak: List<UtangItem>) :
RecyclerView.Adapter<PenunggakDashboardAdapter.PenunggakViewHolder>() {
inner class PenunggakViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(penunggak: Penunggak) {
fun bind(penunggak: UtangItem) {
with(itemView) {
Glide.with(itemView.context)
.load(penunggak.imgPenunggak)
.load(penunggak.fotoDiriAnggota)
.into(imgPenunggak)
namePenunggak.text = penunggak.namePenunggak
hariPenunggak.text = penunggak.hariPenunggak
namePenunggak.text = penunggak.namaAnggota
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val datePinjamApi = inputFormatter.parse(penunggak.tglPinjam)!!
val millionSeconds = datePinjamApi.time.minus(Calendar.getInstance().timeInMillis)
hariPenunggak.text = context.getString(
R.string.menunggak_x_hari,
millionSeconds.let { TimeUnit.MILLISECONDS.toDays(it).toString() })
deletePenunggakBeranda.visibility = View.INVISIBLE
}
}
......@@ -32,7 +43,13 @@ class PenunggakDashboardAdapter(private val listPenunggak: List<Penunggak>) :
)
)
override fun getItemCount(): Int = 3
override fun getItemCount(): Int {
return if (listPenunggak.size > 5) {
3
} else {
listPenunggak.size
}
}
override fun onBindViewHolder(holder: PenunggakViewHolder, position: Int) {
holder.bind(listPenunggak[position])
......
package com.proyek.akhir.kodel.ui.user.dashboard.ajuanPinjaman
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import android.widget.LinearLayout
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.PinjamResponse
import com.proyek.akhir.kodel.data.response.Pinjams
import com.proyek.akhir.kodel.utils.ApiClient
import com.proyek.akhir.kodel.utils.Constans
import kotlinx.android.synthetic.main.activity_ajuan_pinjaman.*
import retrofit2.Call
import retrofit2.Response
import java.text.SimpleDateFormat
import java.util.*
class AjuanPinjamanActivity : AppCompatActivity() {
private var id = 5
private var idAnggota = Constans.ID_ANGGOTA
private lateinit var jlhPinjam: String
private var statusPinjam = false
private var date: Date = Calendar.getInstance().time
private val inputFormatter = SimpleDateFormat("dd/MM/yyyy", Locale.US)
private val resultDate = inputFormatter.format(date)
lateinit var namaPengguna: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ajuan_pinjaman)
......@@ -15,6 +39,65 @@ class AjuanPinjamanActivity : AppCompatActivity() {
backButtonAjuanPinjaman.setOnClickListener {
onBackPressed()
}
namaPengguna = intent.getStringExtra("nameUser")
btnAjuanPinjaman.setOnClickListener {
jlhPinjam = pinjamanInputMasuk.text.toString()
refreshAjuanPinjaman.isRefreshing = true
postPinjamanData(jlhPinjam, namaPengguna)
refreshAjuanPinjaman.isRefreshing = false
}
progressBarPinjaman.visibility = View.INVISIBLE
}
private fun postPinjamanData(saldo: String, name: String) {
progressBarPinjaman.visibility = View.VISIBLE
val permohonanPinjam = Pinjams(
id,
idAnggota.toInt(),
saldo.toInt(),
name,
statusPinjam,
resultDate
)
val pinjam = PinjamResponse(permohonanPinjam)
ApiClient().postServicePeople()
.postAjuanPinjaman(pinjam)
.enqueue(object : retrofit2.Callback<PinjamResponse> {
override fun onFailure(call: Call<PinjamResponse>, t: Throwable) {
progressBarPinjaman.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
"Gagal melakukan Pinjaman",
Toast.LENGTH_SHORT
).show()
}
override fun onResponse(
call: Call<PinjamResponse>,
response: Response<PinjamResponse>
) {
if (response.isSuccessful) {
progressBarPinjaman.visibility = View.INVISIBLE
startActivity(
Intent(
this@AjuanPinjamanActivity,
SuccessPinjamActivity::class.java
)
)
finish()
} else {
progressBarPinjaman.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
response.errorBody().toString(),
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
......@@ -5,6 +5,7 @@ import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.proyek.akhir.kodel.MainActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.HomeActivity
import kotlinx.android.synthetic.main.activity_success_pinjam.*
class SuccessPinjamActivity : AppCompatActivity() {
......@@ -14,7 +15,7 @@ class SuccessPinjamActivity : AppCompatActivity() {
setContentView(R.layout.activity_success_pinjam)
selesaiButton.setOnClickListener {
startActivity(Intent(this, MainActivity::class.java))
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
}
......
......@@ -2,46 +2,49 @@ package com.proyek.akhir.kodel.ui.user.dashboard.history
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.data.response.TransaksiItem
import kotlinx.android.synthetic.main.activity_history.*
class HistoryActivity : AppCompatActivity() {
private val listHistory: MutableList<History> = mutableListOf()
private lateinit var historyAdapter: HistoryAdapter
private lateinit var viewModelTransaksi: HistoryViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_history)
rvHistory.setHasFixedSize(true)
listHistory.addAll(getListHistory())
rvHistory.layoutManager =
LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
progressBarHistory.visibility = View.VISIBLE
swipeBarHistory.setOnRefreshListener {
swipeBarHistory.isRefreshing = true
showRecyclerView()
swipeBarHistory.isRefreshing = false
}
showRecyclerView()
}
private fun showRecyclerView() {
rvHistory.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
historyAdapter = HistoryAdapter(listHistory)
rvHistory.adapter = historyAdapter
viewModelTransaksi = ViewModelProvider(this).get(HistoryViewModel::class.java)
viewModelTransaksi.setDataTransaksi().observe(this, Observer { transaksi ->
if (transaksi != null) {
progressBarHistory.visibility = View.INVISIBLE
showData(transaksi)
} else {
Toast.makeText(this, "Jaringan Lemah Silahkan Refresh", Toast.LENGTH_SHORT).show()
}
})
}
private fun getListHistory(): ArrayList<History> {
val data = resources.getStringArray(R.array.history)
val listHistoryAll = ArrayList<History>()
for (i in data.indices) {
val history = History(
data[i],
data[i]
)
listHistoryAll.add(history)
}
return listHistoryAll
private fun showData(item: List<TransaksiItem>) {
rvHistory.adapter = HistoryAdapter(item)
}
}
......@@ -7,14 +7,19 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.local.History
import com.proyek.akhir.kodel.data.response.Transaksi
import com.proyek.akhir.kodel.data.response.TransaksiItem
import com.proyek.akhir.kodel.ui.user.dashboard.history.detailHistory.DetailHistoryActivity
import kotlinx.android.synthetic.main.item_history.view.*
class HistoryAdapter(private val listHistory: List<History>) :
class HistoryAdapter(private val listHistory: List<TransaksiItem>) :
RecyclerView.Adapter<HistoryAdapter.HistoryViewHolder>() {
inner class HistoryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(history: History) {
fun bind(history: TransaksiItem) {
with(itemView) {
textView4.text =
context.getString(R.string.pengisian_saldo_sebesar_x, history.jlhSaldo.toString())
itemView.setOnClickListener {
context.startActivity(Intent(this.context, DetailHistoryActivity::class.java))
}
......
package com.proyek.akhir.kodel.ui.user.dashboard.history
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Transaksi
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Response
class HistoryViewModel : ViewModel() {
private val anggotaHistory = MutableLiveData<Transaksi>()
init {
getAnggotaTransaksi()
}
private fun getAnggotaTransaksi() {
ApiClient().getServiceKode().getAllTransaksi()
.enqueue(object : retrofit2.Callback<Transaksi> {
override fun onFailure(call: Call<Transaksi>, t: Throwable) {
anggotaHistory.value = null
}
override fun onResponse(call: Call<Transaksi>, response: Response<Transaksi>) {
if (response.isSuccessful) {
anggotaHistory.value = response.body()
} else {
anggotaHistory.value = null
}
}
})
}
fun setDataTransaksi(): MutableLiveData<Transaksi> {
return anggotaHistory
}
}
\ No newline at end of file
......@@ -3,19 +3,131 @@ package com.proyek.akhir.kodel.ui.user.dashboard.isiSaldo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.IsiSaldoResponse
import com.proyek.akhir.kodel.data.response.IsiSaldos
import com.proyek.akhir.kodel.ui.user.dashboard.success.SuccessActivity
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_isi_saldo.*
import retrofit2.Call
import retrofit2.Response
class IsiSaldoActivity : AppCompatActivity() {
lateinit var namaUser: String
lateinit var idUser: String
lateinit var imgUser: String
private var valueTarikSaldoTemp: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_isi_saldo)
idUser = intent.getStringExtra("idAnggota")
namaUser = intent.getStringExtra("nameAnggota")
imgUser = intent.getStringExtra("imgUser")
btnIsiSaldo.setOnClickListener {
startActivity(Intent(this, SuccessActivity::class.java))
finish()
progressIsiSaldo.visibility = View.VISIBLE
postIsiSaldo()
}
btn0.setOnClickListener {
valueTarikSaldoTemp += "0"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn1.setOnClickListener {
valueTarikSaldoTemp += "1"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn2.setOnClickListener {
valueTarikSaldoTemp += "2"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn3.setOnClickListener {
valueTarikSaldoTemp += "3"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn4.setOnClickListener {
valueTarikSaldoTemp += "4"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn5.setOnClickListener {
valueTarikSaldoTemp += "5"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn6.setOnClickListener {
valueTarikSaldoTemp += "6"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn7.setOnClickListener {
valueTarikSaldoTemp += "7"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn8.setOnClickListener {
valueTarikSaldoTemp += "8"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn9.setOnClickListener {
valueTarikSaldoTemp += "9"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btn00.setOnClickListener {
valueTarikSaldoTemp += "00"
valueIsiSaldo.text = valueTarikSaldoTemp
}
btnDelete.setOnClickListener {
valueTarikSaldoTemp.dropLast(1)
valueIsiSaldo.text = valueTarikSaldoTemp
}
}
private fun postIsiSaldo() {
val isiSaldo = IsiSaldos(
1,
idUser.toInt(),
imgUser,
valueTarikSaldoTemp.toInt(),
namaUser,
false
)
val isi = IsiSaldoResponse(isiSaldo)
ApiClient().postServicePeople().postIsiSaldo(isi)
.enqueue(object : retrofit2.Callback<IsiSaldoResponse> {
override fun onFailure(call: Call<IsiSaldoResponse>, t: Throwable) {
progressIsiSaldo.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
"Permintaan Gagal",
Toast.LENGTH_SHORT
).show()
}
override fun onResponse(
call: Call<IsiSaldoResponse>,
response: Response<IsiSaldoResponse>
) {
if (response.isSuccessful) {
progressIsiSaldo.visibility = View.INVISIBLE
startActivity(Intent(this@IsiSaldoActivity, SuccessActivity::class.java))
finish()
} else {
progressIsiSaldo.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
response.errorBody().toString(),
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
package com.proyek.akhir.kodel.ui.user.dashboard.tarikSaldo
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.TarikSaldoResponse
import com.proyek.akhir.kodel.data.response.TarikSaldos
import com.proyek.akhir.kodel.ui.user.dashboard.success.SuccessActivity
import com.proyek.akhir.kodel.utils.ApiClient
import kotlinx.android.synthetic.main.activity_tarik_saldo.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class TarikSaldoActivity : AppCompatActivity() {
lateinit var saldoUser: String
lateinit var namaUser: String
lateinit var idAnggota: String
private var valueTarikSaldoTemp: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tarik_saldo)
saldoUser = intent.getStringExtra("saldoUser")
namaUser = intent.getStringExtra("nameUser")
idAnggota = intent.getStringExtra("idAnggota")
progressTarikSaldo.visibility = View.INVISIBLE
btnTarikSaldo.setOnClickListener {
startActivity(Intent(this, SuccessActivity::class.java))
finish()
progressTarikSaldo.visibility = View.VISIBLE
if (valueTarikSaldoTemp.toInt() > saldoUser.toInt()) {
progressTarikSaldo.visibility = View.INVISIBLE
Toast.makeText(this, "Saldo Anda Kurang", Toast.LENGTH_SHORT).show()
} else {
postTarikSaldo()
}
}
btn0.setOnClickListener {
valueTarikSaldoTemp += "0"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn1.setOnClickListener {
valueTarikSaldoTemp += "1"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn2.setOnClickListener {
valueTarikSaldoTemp += "2"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn3.setOnClickListener {
valueTarikSaldoTemp += "3"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn4.setOnClickListener {
valueTarikSaldoTemp += "4"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn5.setOnClickListener {
valueTarikSaldoTemp += "5"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn6.setOnClickListener {
valueTarikSaldoTemp += "6"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn7.setOnClickListener {
valueTarikSaldoTemp += "7"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn8.setOnClickListener {
valueTarikSaldoTemp += "8"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn9.setOnClickListener {
valueTarikSaldoTemp += "9"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btn00.setOnClickListener {
valueTarikSaldoTemp += "00"
valueTarikSaldo.text = valueTarikSaldoTemp
}
btnDelete.setOnClickListener {
valueTarikSaldoTemp.dropLast(1)
valueTarikSaldo.text = valueTarikSaldoTemp
}
}
private fun postTarikSaldo() {
val tarikSaldo = TarikSaldos(
1,
idAnggota.toInt(),
valueTarikSaldoTemp.toInt(),
namaUser,
statusTarik = false
)
val tarik = TarikSaldoResponse(tarikSaldo)
ApiClient().postServicePeople().postTarikSaldo(tarik)
.enqueue(object : Callback<TarikSaldoResponse> {
override fun onFailure(call: Call<TarikSaldoResponse>, t: Throwable) {
progressTarikSaldo.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
"Gagal melakukan Pinjaman",
Toast.LENGTH_SHORT
).show()
}
override fun onResponse(
call: Call<TarikSaldoResponse>,
response: Response<TarikSaldoResponse>
) {
if(response.isSuccessful){
progressTarikSaldo.visibility = View.INVISIBLE
startActivity(Intent(this@TarikSaldoActivity, SuccessActivity::class.java))
finish()
}else{
progressTarikSaldo.visibility = View.INVISIBLE
Toast.makeText(
applicationContext,
response.errorBody().toString(),
Toast.LENGTH_SHORT
).show()
}
}
})
}
}
......@@ -24,7 +24,9 @@ class ProdukAdapter(private val listProduk: List<ProdukItem>) :
hargaProduk.text = produk.hargaProduk.toString()
categoryProduk.text = produk.satuanProduk
itemView.setOnClickListener {
context.startActivity(Intent(this.context, DetailProdukActivity::class.java))
val intent = Intent(this.context, DetailProdukActivity::class.java)
intent.putExtra("idProduk", produk.idProduk.toString())
context.startActivity(intent)
}
}
}
......
......@@ -36,8 +36,6 @@ class ProdukFragment : Fragment() {
callProduk()
Toast.makeText(context, listProduk.size.toString(), Toast.LENGTH_SHORT).show()
root.rvProduk.layoutManager =
LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
produkAdapter = ProdukAdapter(listProduk)
......
package com.proyek.akhir.kodel.ui.user.produk
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.proyek.akhir.kodel.data.response.Kupon
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
......@@ -9,13 +11,15 @@ import retrofit2.Response
class ProdukViewModel : ViewModel() {
private val anggotaProduk = MutableLiveData<Produk>()
private val anggotaProdukItem = MutableLiveData<Produk>()
private val anggotaKupon = MutableLiveData<Kupon>()
init {
getProduk()
}
private fun getProduk() {
ApiClient().getServicePeople().getProduk().enqueue(object : retrofit2.Callback<Produk> {
ApiClient().getServiceDel().getProduk().enqueue(object : retrofit2.Callback<Produk> {
override fun onFailure(call: Call<Produk>, t: Throwable) {
anggotaProduk.value = null
}
......@@ -30,7 +34,50 @@ class ProdukViewModel : ViewModel() {
})
}
fun getProdukItem(idProduk: String) {
ApiClient().getServiceDel().getProdukItem(idProduk)
.enqueue(object : retrofit2.Callback<Produk> {
override fun onFailure(call: Call<Produk>, t: Throwable) {
anggotaProdukItem.value = null
}
override fun onResponse(call: Call<Produk>, response: Response<Produk>) {
if (response.isSuccessful) {
anggotaProdukItem.value = response.body()
} else {
anggotaProdukItem.value = null
}
}
})
}
fun getKuponItem(codeKupon: String) {
ApiClient().getServiceKode().getCupon(codeKupon)
.enqueue(object : retrofit2.Callback<Kupon> {
override fun onFailure(call: Call<Kupon>, t: Throwable) {
anggotaKupon.value = null
}
override fun onResponse(call: Call<Kupon>, response: Response<Kupon>) {
if (response.isSuccessful) {
anggotaKupon.value = response.body()
} else {
anggotaKupon.value = null
}
}
})
}
fun setDataProduk(): MutableLiveData<Produk> {
return anggotaProduk
}
fun setDataItemProduk(): MutableLiveData<Produk> {
return anggotaProdukItem
}
fun setDataKupon(): MutableLiveData<Kupon> {
return anggotaKupon
}
}
\ No newline at end of file
......@@ -3,18 +3,82 @@ package com.proyek.akhir.kodel.ui.user.produk.detail
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.data.response.ProdukItem
import com.proyek.akhir.kodel.ui.user.produk.ProdukViewModel
import com.proyek.akhir.kodel.ui.user.produk.pembayaran.PembayaranActivity
import kotlinx.android.synthetic.main.activity_detail_produk.*
class DetailProdukActivity : AppCompatActivity() {
private val viewModelProdukDetail by lazy {
ViewModelProvider(this).get(ProdukViewModel::class.java)
}
private var itemProduk = 1
private lateinit var produkId: String
private lateinit var produk: ProdukItem
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail_produk)
produkId = intent.getStringExtra("idProduk")
kurangProduk.setOnClickListener {
itemProduk -= 1
jumlahProduk.text = itemProduk.toString()
}
tambahProduk.setOnClickListener {
itemProduk += 1
jumlahProduk.text = itemProduk.toString()
}
swipeBarDetailProduk.setOnRefreshListener {
swipeBarDetailProduk.isRefreshing = true
showData(produkId)
swipeBarDetailProduk.isRefreshing = false
}
swipeBarDetailProduk.isRefreshing = true
showData(produkId)
btnBeliProduk.setOnClickListener {
startActivity(Intent(this, PembayaranActivity::class.java))
val intent = Intent(this, PembayaranActivity::class.java)
intent.putExtra("jumlahProduk", itemProduk.toString())
intent.putExtra("itemProduk", produk)
startActivity(intent)
}
}
private fun showData(id: String) {
viewModelProdukDetail.getProdukItem(id)
viewModelProdukDetail.setDataItemProduk().observe(this, Observer { produk ->
if (produk != null) {
swipeBarDetailProduk.isRefreshing = false
this.produk = ProdukItem(
produk[0].gambarProduk,
produk[0].hargaProduk,
produk[0].idProduk,
produk[0].namaProduk,
produk[0].satuanProduk
)
Glide.with(this)
.load(produk[0].gambarProduk)
.into(imageView3)
textView7.text = produk[0].namaProduk
textView8.text = getString(
R.string.rp_x_x,
produk[0].hargaProduk.toString(),
produk[0].satuanProduk
)
}
})
}
}
......@@ -13,8 +13,18 @@ class KonfirmasiPembayaranActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_konfirmasi_pembayaran)
val totalHarga = intent.getStringExtra("totalHarga")
textView14.text = getString(R.string.rp_x, totalHarga)
btnBayarCash.setOnClickListener {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
btnBayarSaldo.setOnClickListener {
startActivity(Intent(this, HomeActivity::class.java))
finish()
}
backButtonPembayaran.setOnClickListener {
......
package com.proyek.akhir.kodel.ui.user.produk.pembayaran
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.data.response.ProdukItem
import com.proyek.akhir.kodel.ui.user.produk.ProdukViewModel
import com.proyek.akhir.kodel.ui.user.produk.konfirmasi.KonfirmasiPembayaranActivity
import kotlinx.android.synthetic.main.activity_pembayaran.*
import java.text.SimpleDateFormat
import java.util.*
class PembayaranActivity : AppCompatActivity() {
private lateinit var viewModelPembayaran: ProdukViewModel
private lateinit var jumlahProdukTemp: String
private var jumlahProduk = 1
private lateinit var produk: ProdukItem
private var hargaProdukTemp = 0
private lateinit var codeKupon: String
private var potonganKupon = 0.toString()
private var totalHargaBayar = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_pembayaran)
jumlahProdukTemp = intent.getStringExtra("jumlahProduk")
jumlahProduk = jumlahProdukTemp.toInt()
produk = intent.getParcelableExtra("itemProduk")
swipeBarPembayaran.setOnRefreshListener {
swipeBarPembayaran.isRefreshing = true
showData()
swipeBarPembayaran.isRefreshing = false
}
swipeBarPembayaran.isRefreshing = true
showData()
swipeBarPembayaran.isRefreshing = false
textView11.setOnClickListener {
jumlahProduk -= 1
textView19.text = jumlahProduk.toString()
totalHargaBayar = hargaProdukTemp * jumlahProduk
totalHarga.text = getString(
R.string.rp_x,
(totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
)
}
textView10.setOnClickListener {
jumlahProduk += 1
textView19.text = jumlahProduk.toString()
totalHargaBayar = hargaProdukTemp * jumlahProduk
totalHarga.text = getString(
R.string.rp_x,
(totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
)
}
btnClaimVoucher.setOnClickListener {
swipeBarPembayaran.isRefreshing = true
codeKupon = valueKupon.text.toString()
checkVoucher(codeKupon)
swipeBarPembayaran.isRefreshing = false
}
btnBayar.setOnClickListener {
startActivity(Intent(this, KonfirmasiPembayaranActivity::class.java))
val intent = Intent(this, KonfirmasiPembayaranActivity::class.java)
intent.putExtra("totalHarga", (totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString())
startActivity(intent)
}
backBtnPembayaran.setOnClickListener {
onBackPressed()
}
}
private fun showData() {
Glide.with(this)
.load(produk.gambarProduk)
.into(imageView4)
textView12.text = produk.namaProduk
hargaProduk.text = produk.hargaProduk.toString()
textView19.text = jumlahProduk.toString()
hargaProdukTemp = produk.hargaProduk
totalHargaBayar = hargaProdukTemp * jumlahProduk
totalHarga.text = getString(
R.string.rp_x,
(totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
)
totalHarga.text = getString(R.string.rp_x, (hargaProdukTemp * jumlahProduk).toString())
}
private fun checkVoucher(codeKupon: String) {
viewModelPembayaran = ViewModelProvider(this).get(ProdukViewModel::class.java)
viewModelPembayaran.getKuponItem(codeKupon)
viewModelPembayaran.setDataKupon().observe(this, Observer { kupon ->
if (kupon.size != 0 || kupon != null) {
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val datePinjamApi = inputFormatter.parse(kupon.first().validity)
val millionSeconds = datePinjamApi?.time?.minus(Calendar.getInstance().timeInMillis)
if (millionSeconds!! < 1) {
Toast.makeText(this, "Maaf Token Tidak Berlaku Lagi", Toast.LENGTH_LONG)
.show()
} else {
Toast.makeText(this, "Voucher Berhasil!", Toast.LENGTH_LONG)
.show()
potonganKupon = kupon[0].valuekupon.toString()
totalHarga.text = getString(
R.string.rp_x,
(totalHargaBayar - ((potonganKupon.toInt() * totalHargaBayar) / 100)).toString()
)
}
} else {
Toast.makeText(this, "Maaf Kupon Tidak Valid", Toast.LENGTH_SHORT).show()
}
})
}
}
package com.proyek.akhir.kodel.ui.user.profil
import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.R
import com.proyek.akhir.kodel.ui.user.profil.changeProfil.EditProfilActivity
import kotlinx.android.synthetic.main.fragment_profil.*
import kotlinx.android.synthetic.main.fragment_profil.view.*
import kotlinx.android.synthetic.main.fragment_profil.view.imgPengguna
class ProfilFragment : Fragment() {
private lateinit var profilViewModel: ProfilViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
profilViewModel =
ViewModelProvider(this).get(ProfilViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_profil, container, false)
profilViewModel.text.observe(viewLifecycleOwner, Observer {
root.viewProfil.visibility = View.INVISIBLE
root.progressbarProfile.visibility = View.VISIBLE
})
root.btnEditProfil.setOnClickListener {
context?.startActivity(Intent(this.context, EditProfilActivity::class.java))
}
callAnggota()
return root
}
private fun callAnggota() {
profilViewModel = ViewModelProvider(this).get(ProfilViewModel::class.java)
profilViewModel.setDataAnggota().observe(viewLifecycleOwner, Observer { anggota ->
if (anggota != null) {
progressbarProfile.visibility = View.GONE
viewProfil.visibility = View.VISIBLE
Glide.with(requireContext())
.load(anggota[0].fotoDiriAnggota)
.into(imgPengguna)
if (anggota[0].fotoKkAnggota != null) {
lnrKKStatus.setBackgroundColor(Color.parseColor(R.color.colorGreen.toString()))
txtStatusKk.text = "Ganti KK"
lnrKTPStatus.setBackgroundColor(Color.parseColor(R.color.colorGreen.toString()))
txtStatusKtp.text = "Ganti KTP"
}
namaPengguna.text = anggota[0].namaAnggota
emailPengguna.text = anggota[0].emailAnggota
nomorPengguna.text = anggota[0].noTelpAnggota.toString()
alamatPengguna.text = anggota[0].alamatAnggota
penghasilanAnggota.text =
getString(R.string.rp_x, anggota[0].penghasilanAnggota.toString())
} else {
Toast.makeText(context, "Jaringan Lemah!", Toast.LENGTH_SHORT).show()
}
})
}
}
......@@ -3,11 +3,58 @@ package com.proyek.akhir.kodel.ui.user.profil
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.bumptech.glide.Glide
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.utils.ApiClient
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class ProfilViewModel : ViewModel() {
private val anggotaKoperasi = MutableLiveData<Anggota>()
private val anggotaItemKoperasi = MutableLiveData<Anggota>()
private val _text = MutableLiveData<String>().apply {
value = "This is notifications Fragment"
init {
getAnggotaKoperasi()
}
private fun getAnggotaKoperasi() {
ApiClient().getServiceDel().getAnggota().enqueue(object : Callback<Anggota> {
override fun onFailure(call: Call<Anggota>, t: Throwable) {
anggotaKoperasi.value = null
}
override fun onResponse(call: Call<Anggota>, response: Response<Anggota>) {
if (response.isSuccessful) {
anggotaKoperasi.value = response.body()
} else {
anggotaKoperasi.value = null
}
}
})
}
fun getItemAnggota(idAnggota: String) {
ApiClient().getServiceDel().getOneAnggota(idAnggota).enqueue(object : Callback<Anggota> {
override fun onFailure(call: Call<Anggota>, t: Throwable) {
anggotaItemKoperasi.value = null
}
override fun onResponse(call: Call<Anggota>, response: Response<Anggota>) {
if (response.isSuccessful) {
anggotaItemKoperasi.value = response.body()
} else {
anggotaItemKoperasi.value = null
}
}
})
}
fun setDataAnggota(): MutableLiveData<Anggota> {
return anggotaKoperasi
}
fun setDataAnggotaItem(): MutableLiveData<Anggota> {
return anggotaItemKoperasi
}
val text: LiveData<String> = _text
}
\ No newline at end of file
......@@ -19,17 +19,39 @@ class ApiClient {
.build()
}
private fun getRetrofitInstance(): Retrofit {
private fun getRetrofitInstanceDel(): Retrofit {
return Retrofit.Builder()
.baseUrl(Constans.API_GET_DATA)
.baseUrl(Constans.API_GET_DATA_DEL)
.client(getInterceptor())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
fun getServicePeople(): GetService {
return getRetrofitInstance().create(GetService::class.java)
private fun getRetrofitInstanceKode(): Retrofit {
return Retrofit.Builder()
.baseUrl(Constans.API_GET_DATA_KODE)
.client(getInterceptor())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
private fun postRetrofitInstance(): Retrofit {
return Retrofit.Builder()
.baseUrl(Constans.API_POST_DATA)
.client(getInterceptor())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
fun getServiceDel(): GetService {
return getRetrofitInstanceDel().create(GetService::class.java)
}
fun getServiceKode(): GetService {
return getRetrofitInstanceKode().create(GetService::class.java)
}
fun postServicePeople(): GetService {
return postRetrofitInstance().create(GetService::class.java)
}
}
\ No newline at end of file
......@@ -2,14 +2,26 @@ package com.proyek.akhir.kodel.utils
class Constans {
companion object{
const val API_GET_DATA = "https://sheetlabs.com/DEL/"
const val API_GET_DATA_DEL = "https://sheetlabs.com/DEL/"
const val API_PRODUK = "produk"
const val API_TARIK_SALDO = "tariksaldo"
const val API_ISI_SALDO = "isisaldo"
const val API_PEOPLE = "people"
const val API_UTANG = "utang"
const val API_GET_DATA_KODE = "https://sheetlabs.com/KODE/"
const val API_BERITA = "berita"
const val API_PRODUK = "produk"
const val API_PINJAM = "pinjam"
const val API_TRANSAKSI = "transaksi"
const val API_KUPON = "kupon"
const val ID_ANGGOTA = "11318025"
const val ID_SAMPLE = "11318001"
const val API_POST_DATA = "https://v2-api.sheety.co/41a040981850f8e4c8ac258df633dd53/koDel/"
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.utils
import java.text.SimpleDateFormat
import java.util.*
class DateConverter {
fun dateKuponConverter(date: String): String {
val inputFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.US)
val outputFormatter = SimpleDateFormat("dd MMM yyyy", Locale.US)
var answer: Date = inputFormatter.parse(date)
return outputFormatter.format(answer).toString()
}
}
\ No newline at end of file
package com.proyek.akhir.kodel.utils
import com.proyek.akhir.kodel.data.response.Anggota
import com.proyek.akhir.kodel.data.response.Berita
import com.proyek.akhir.kodel.data.response.Produk
import com.proyek.akhir.kodel.data.response.Utang
import com.proyek.akhir.kodel.data.response.*
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.*
interface GetService {
@GET(Constans.API_PEOPLE + "?idAnggota=" + Constans.ID_ANGGOTA)
fun getAnggota(): Call<Anggota>
@GET(Constans.API_PEOPLE)
fun getAllAnggota(): Call<Anggota>
@GET(Constans.API_PEOPLE)
fun getOneAnggota(@Query("idAnggota") idAnggota: String): Call<Anggota>
@GET(Constans.API_UTANG + "?idAnggota=" + Constans.ID_SAMPLE)
fun getUtang(): Call<Utang>
......@@ -22,4 +26,67 @@ interface GetService {
@GET(Constans.API_PRODUK)
fun getProduk(): Call<Produk>
@GET(Constans.API_PRODUK)
fun getProdukItem(@Query("idProduk") idProduk: String): Call<Produk>
@GET(Constans.API_UTANG + "?isMenunggak=1")
fun getUtangAll(): Call<Utang>
@GET(Constans.API_UTANG + "?isJatuhTempo=1")
fun getAllPenunggak(): Call<Utang>
@GET(Constans.API_TRANSAKSI)
fun getAllTransaksi(): Call<Transaksi>
@GET(Constans.API_KUPON)
fun getCupon(@Query("codekupon") codeKupon: String): Call<Kupon>
@GET(Constans.API_PINJAM + "?statusPinjam=0")
fun getAllPinjam(): Call<Pinjam>
@GET(Constans.API_KUPON)
fun getAllCupon(): Call<Kupon>
@GET(Constans.API_ISI_SALDO + "?statusIsi=0")
fun getAllIsiSaldo(): Call<IsiSaldo>
@GET(Constans.API_TARIK_SALDO)
fun getAllTarikSaldo(): Call<TarikSaldo>
// @Field("tglPinjam") tglPinjam: String
// @FormUrlEncoded
// @POST(Constans.API_PINJAM)
// fun postAjuanPinjaman(
// @Field("id") id: Int,
// @Field("idAnggota") idAnggota: Int,
// @Field("jlhPinjam") jlhPinjam: Int,
// @Field("statusPinjam") statusPinjam: Boolean,
@Headers("Content-Type: application/json")
@POST(Constans.API_PINJAM)
fun postAjuanPinjaman(@Body pinjam: PinjamResponse): Call<PinjamResponse>
@Headers("Content-Type: application/json")
@POST(Constans.API_TARIK_SALDO)
fun postTarikSaldo(@Body tarikSaldo: TarikSaldoResponse): Call<TarikSaldoResponse>
@Headers("Content-Type: application/json")
@POST(Constans.API_ISI_SALDO)
fun postIsiSaldo(@Body isiSaldo: IsiSaldoResponse): Call<IsiSaldoResponse>
@Headers("Content-Type: application/json")
@POST(Constans.API_KUPON)
fun postKupon(@Body kupon: KuponResponse): Call<KuponResponse>
@Headers("Content-Type: application/json")
@POST(Constans.API_PRODUK)
fun postProduk(@Body produk: ProdukResponse): Call<ProdukResponse>
@Headers("Content-Type: application/json")
fun postBerita(@Body berita: BeritaResponse): Call<BeritaResponse>
@PUT(Constans.API_ISI_SALDO)
fun editIsiSaldo(@Body isiSaldo: IsiSaldoResponse): Call<IsiSaldoResponse>
}
\ No newline at end of file
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/colorAccent"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M21.41,11.58l-9,-9C12.05,2.22 11.55,2 11,2H4c-1.1,0 -2,0.9 -2,2v7c0,0.55 0.22,1.05 0.59,1.42l9,9c0.36,0.36 0.86,0.58 1.41,0.58 0.55,0 1.05,-0.22 1.41,-0.59l7,-7c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-0.55 -0.23,-1.06 -0.59,-1.42zM5.5,7C4.67,7 4,6.33 4,5.5S4.67,4 5.5,4 7,4.67 7,5.5 6.33,7 5.5,7z" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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/refreshAjuanPinjaman"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
tools:context=".ui.user.dashboard.ajuanPinjaman.AjuanPinjamanActivity">
<ImageButton
android:id="@+id/backButtonAjuanPinjaman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajuan Pinjaman"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/backButtonAjuanPinjaman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Masukkan jumlah yang ingin kamu pinjam..."
android:textColor="@color/colorBlack"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonAjuanPinjaman" />
<TextView
android:id="@+id/textView18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajuan Pinjaman"
android:textColor="@color/colorPrimary"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/pinjamanInputMasuk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:hint="Rp"
android:theme="@style/TextLabel"
app:endIconTint="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5">
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Masukkan jumlah yang ingin kamu pinjam..."
android:textColor="@color/colorBlack"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonAjuanPinjaman" />
<com.google.android.material.textfield.TextInputEditText
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="numberDecimal"
android:textColor="@color/colorBlack" />
android:layout_marginTop="32dp"
android:hint="Rp"
android:theme="@style/TextLabel"
app:endIconTint="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView5">
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/pinjamanInputMasuk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:inputType="numberDecimal"
android:textColor="@color/colorBlack" />
<LinearLayout
android:id="@+id/btnAjuanPinjaman"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
android:background="@drawable/full_white_shape_transparant"
android:backgroundTint="@color/colorGreen"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
</com.google.android.material.textfield.TextInputLayout>
<TextView
<LinearLayout
android:id="@+id/btnAjuanPinjaman"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
android:background="@drawable/full_white_shape_transparant"
android:backgroundTint="@color/colorGreen"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajukan"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
</LinearLayout>
<ProgressBar
android:id="@+id/progressBarPinjaman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="@font/roboto_medium"
android:text="Ajukan"
android:textColor="@color/colorWhite"
android:textSize="18sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
app:layout_constraintBottom_toTopOf="@+id/btnAjuanPinjaman"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textInputLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
......@@ -7,23 +7,6 @@
android:background="@color/colorWhite"
tools:context=".ui.koperasi.berita.BeritaKoperasiActivity">
<!-- <com.google.android.material.appbar.AppBarLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:theme="@style/AppTheme.NoActionBar">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:background="@color/colorFading"-->
<!-- app:popupTheme="@style/AppTheme.PopupOverlay"-->
<!-- app:title=" ">-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- -->
<!-- </com.google.android.material.appbar.AppBarLayout>-->
<LinearLayout
android:id="@+id/linearLayout12"
android:layout_width="match_parent"
......@@ -55,28 +38,42 @@
</LinearLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addBeritaKoperasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_mode_edit_white_24dp" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvBeritaKoperasi"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_berita" />
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeBeritaKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvBeritaKoperasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_berita" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addBeritaKoperasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_mode_edit_white_24dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
......@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.berita.detailBerita.DetailBeritaKoperasiActivity">
tools:context=".ui.koperasi.berita.detailBerita.AddBeritaKoperasiActivity">
<ImageButton
android:id="@+id/backButtonDetailHistory"
......@@ -18,44 +18,88 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView16"
android:layout_width="wrap_content"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Informasi penundaan pencairan dana"
android:textColor="@color/colorBlack"
android:textSize="18sp"
android:layout_marginTop="16dp"
android:theme="@style/TextLabel"
app:errorEnabled="true"
app:errorTextColor="@color/colorRed"
app:helperTextTextColor="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/backButtonDetailHistory" />
app:layout_constraintTop_toBottomOf="@+id/backButtonDetailHistory">
<TextView
android:id="@+id/textView17"
android:layout_width="wrap_content"
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/judulBeritaValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:hint="Judul Berita"
android:textColor="@color/colorBlack"
android:textSize="24sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_light"
android:text="12-03-2020"
android:textColor="@color/colorBlack"
android:textSize="14sp"
android:theme="@style/TextLabel"
app:errorEnabled="true"
app:errorTextColor="@color/colorRed"
app:helperTextTextColor="@color/colorBlack"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView16" />
app:layout_constraintTop_toBottomOf="@+id/textInputLayout2">
<TextView
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/isiBeritaValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:hint="Isi Berita"
android:textColor="@color/colorBlack"
android:textSize="24sp" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/btnTambahBerita"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
android:background="@drawable/full_white_shape_transparant"
android:backgroundTint="@color/colorAccent"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="@font/roboto_medium"
android:text="Tambah Berita"
android:textColor="@color/colorBlack"
android:textSize="18sp" />
</LinearLayout>
<ProgressBar
android:id="@+id/progressTambahBerita"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto"
android:text="Dear pelanggan koperasi,Dikarenakannya akan diadakan libur nasional pada tanggal 23 mendatang, kami pihak koperasi tidak akan melayani penarikan saldo atau pun pencairan dana pada hari tersebut. Harap melakukan pencairan dana sebelum atau sesudah tanggal tersebut.\n
\nTerimakasih.
"
android:textColor="@color/colorBlack"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView17" />
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.user.produk.detail.DetailProdukActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -30,6 +30,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<FrameLayout
android:layout_width="0dp"
android:layout_height="0dp"
......@@ -38,25 +39,35 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4">
<androidx.core.widget.NestedScrollView
<ProgressBar
android:id="@+id/progressBarHistory"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeBarHistory"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistory"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_history" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistory"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_history" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -38,25 +38,31 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4">
<androidx.core.widget.NestedScrollView
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refreshHistoryKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistoryKoperasi"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_history" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvHistoryKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_history" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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/refreshIsiSaldo"
android:layout_width="match_parent"
android:background="@color/colorWhite"
android:layout_height="match_parent"
tools:context=".ui.koperasi.beranda.isisaldo.IsiSaldoActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/refreshIsiSaldoKoperasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvIsiSaldo"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_isi_saldo" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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/refreshJatuhTempo"
android:layout_width="match_parent"
android:background="@color/colorWhite"
android:layout_height="match_parent"
tools:context=".ui.koperasi.beranda.jatuhtempo.JatuhTempoActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvPenunggakKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_penunggak_pengingat" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
......@@ -54,7 +54,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:fontFamily="@font/roboto_medium"
android:text="Rp.9000"
android:text="@string/rp_x"
android:textColor="@color/colorBlack"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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/swipeKuponKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.kupon.KuponKoperasiActivity">
<!-- <com.google.android.material.appbar.AppBarLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:theme="@style/AppTheme.NoActionBar">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:background="@color/colorFading"-->
<!-- app:popupTheme="@style/AppTheme.PopupOverlay"-->
<!-- app:title=" ">-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- -->
<!-- </com.google.android.material.appbar.AppBarLayout>-->
<LinearLayout
android:id="@+id/linearLayout12"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:src="@drawable/ic_arrow_back_primary" />
android:layout_height="match_parent"
android:background="@color/colorWhite">
<TextView
<LinearLayout
android:id="@+id/linearLayout12"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="48dp"
android:fontFamily="@font/roboto_medium"
android:gravity="center"
android:text="Kupon"
android:textColor="@color/colorPrimary"
android:textSize="18sp" />
android:layout_margin="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:src="@drawable/ic_arrow_back_primary" />
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="48dp"
android:fontFamily="@font/roboto_medium"
android:gravity="center"
android:text="Kupon"
android:textColor="@color/colorPrimary"
android:textSize="18sp" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvKuponKoperasi"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_kupon_koperasi" />
</androidx.core.widget.NestedScrollView>
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvKuponKoperasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_kupon_koperasi" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addKuponKoperasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_mode_edit_white_24dp" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addKuponKoperasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_mode_edit_white_24dp" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
......@@ -38,25 +38,31 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4">
<androidx.core.widget.NestedScrollView
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refreshPeminjam"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvPeminjamKoperasi"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_pinjaman" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvPeminjamKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView4"
tools:listitem="@layout/item_tarik_saldo" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/refreshPenggunaKoperasi"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.beranda.pengguna.PenggunaActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvPenggunaKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/item_pengguna" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
......@@ -7,22 +7,22 @@
android:background="@color/colorWhite"
tools:context=".ui.koperasi.produk.ProdukKoperasiActivity">
<!-- <com.google.android.material.appbar.AppBarLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:theme="@style/AppTheme.NoActionBar">-->
<!-- <com.google.android.material.appbar.AppBarLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:theme="@style/AppTheme.NoActionBar">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:background="@color/colorFading"-->
<!-- app:popupTheme="@style/AppTheme.PopupOverlay"-->
<!-- app:title=" ">-->
<!-- <androidx.appcompat.widget.Toolbar-->
<!-- android:id="@+id/toolbar"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="0dp"-->
<!-- android:background="@color/colorFading"-->
<!-- app:popupTheme="@style/AppTheme.PopupOverlay"-->
<!-- app:title=" ">-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- -->
<!-- </com.google.android.material.appbar.AppBarLayout>-->
<!-- </androidx.appcompat.widget.Toolbar>-->
<!-- -->
<!-- </com.google.android.material.appbar.AppBarLayout>-->
<LinearLayout
android:id="@+id/linearLayout12"
......@@ -54,21 +54,27 @@
</LinearLayout>
<androidx.core.widget.NestedScrollView
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/refreshProductKoperasi"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvProdukKoperasi"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_produk" />
</androidx.core.widget.NestedScrollView>
android:layout_height="match_parent"
android:layout_marginTop="80dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvProdukKoperasi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout12"
tools:listitem="@layout/item_produk" />
</androidx.core.widget.NestedScrollView>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/addProdukKoperasi"
......
......@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
tools:context=".ui.user.dashboard.ajuanPinjaman.SuccessPinjamActivity">
<TextView
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout 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/swipeBarDetailProduk"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorWhite"
tools:context=".ui.koperasi.produk.addProduk.TambahProdukActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/imageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="20dp"
android:background="@color/colorWhite"
android:src="@drawable/ic_arrow_back_primary"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:fontFamily="@font/roboto_medium"
android:text="Tambah Produk"
android:textColor="@color/colorPrimary"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/imageView3"
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView6" />
<LinearLayout
android:id="@+id/linearLayout8"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@drawable/full_fading_shape_transparant"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView3" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progressTambahKupon"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:src="@drawable/ic_add_a_photo_black_24dp">
</ImageView>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:theme="@style/TextLabel"
app:errorEnabled="true"
app:errorTextColor="@color/colorRed"
app:helperTextTextColor="@color/colorBlack">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/productName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:hint="Nama Produk"
android:textColor="@color/colorBlack"
android:textSize="24sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:theme="@style/TextLabel"
app:errorEnabled="true"
app:errorTextColor="@color/colorRed"
app:helperTextTextColor="@color/colorBlack">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/hargaProdukValue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:inputType="numberDecimal"
android:fontFamily="@font/roboto_medium"
android:hint="Harga Produk"
android:textColor="@color/colorBlack"
android:textSize="24sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:theme="@style/TextLabel"
app:errorEnabled="true"
app:errorTextColor="@color/colorRed"
app:helperTextTextColor="@color/colorBlack">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/kategoryProduk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:fontFamily="@font/roboto_medium"
android:hint="Kategori Item"
android:inputType="numberDecimal"
android:textColor="@color/colorBlack"
android:textSize="24sp" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:id="@+id/btnTambahProduk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
android:background="@drawable/full_white_shape_transparant"
android:backgroundTint="@color/colorAccent"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:fontFamily="@font/roboto_medium"
android:text="Tambah Produk"
android:textColor="@color/colorBlack"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment