Skip to content

Commit

Permalink
Initialize user roles
Browse files Browse the repository at this point in the history
  • Loading branch information
mauritzmauritz committed Jan 18, 2024
1 parent d8dbe4f commit cfc0142
Show file tree
Hide file tree
Showing 9 changed files with 262 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.example.posyandu.features.authentication

import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Parcel
Expand All @@ -12,22 +11,20 @@ import com.example.posyandu.LoginRequest
import com.example.posyandu.LoginResponse
import com.example.posyandu.R
import com.example.posyandu.features.main.MainActivity
import com.example.posyandu.utils.UserManager
import com.google.android.material.button.MaterialButton
import com.google.android.material.textfield.TextInputEditText
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response


class LoginActivity() : AppCompatActivity(), Parcelable {
class LoginActivity(context: Parcel) : AppCompatActivity(), Parcelable {

private lateinit var usernameEditText: TextInputEditText
private lateinit var passwordEditText: TextInputEditText
private lateinit var loginButton: MaterialButton

constructor(parcel: Parcel) : this() {

}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -76,15 +73,15 @@ class LoginActivity() : AppCompatActivity(), Parcelable {
if (response.isSuccessful) {
val responseBody = response.body()
val token = responseBody?.token
val sharedPreferences =
getSharedPreferences("Preferences", Context.MODE_PRIVATE)
with(sharedPreferences.edit()) {
putString("token", token)
apply()

val role = when (username) {
"admin" -> "bidan"
"kader" -> "kader"
else -> "default"
}
val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
finish()

proceedToMain(token, role)

} else {
// Handle unsuccessful login
Toast.makeText(
Expand All @@ -105,4 +102,20 @@ class LoginActivity() : AppCompatActivity(), Parcelable {
}
})
}
private fun proceedToMain(token: String?, role: String) {
if (token != null) {
UserManager.getInstance(this).saveUserDetails(token, role)

val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
finish()

} else {
Toast.makeText(
this@LoginActivity,
"Token is null. Login failed.",
Toast.LENGTH_SHORT
).show()
}
}
}
23 changes: 23 additions & 0 deletions app/src/main/java/com/example/posyandu/features/main/home/Bidan.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.posyandu.features.main.home

data class Bidan(
val id: Int,
val nama: String,
val namaPosyandu: String,
val alamatPosyandu: String,
val jumlahRemaja: Int? = null,
val jumlahKader: Int? = null,
val jumlahRemajaBeresiko: Int? = null,
var hariJadwalTerdekat1: String? = null,
var tanggalJadwalTerdekat1: String? = null,
var jenisAktivitasTerdekat1: String? = null,
var iconJenis1: String? = null,
var hariJadwalTerdekat2: String? = null,
var tanggalJadwalTerdekat2: String? = null,
var jenisAktivitasTerdekat2: String? = null,
var iconJenis2: String? = null,
var namaSender1: String? = null,
var kontenChat1: String? = null,
var namaSender2: String? = null,
var kontenChat2: String? = null
)
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import androidx.fragment.app.viewModels
import com.bumptech.glide.Glide
import com.example.posyandu.databinding.FragmentHomeBinding
import com.example.posyandu.features.main.home.HomeViewModel
import com.example.posyandu.features.main.posyandu.PosyanduFragment
import com.google.android.material.bottomnavigation.BottomNavigationView
import com.google.android.material.snackbar.Snackbar
Expand All @@ -23,6 +26,7 @@ class HomeFragment : Fragment() {
private lateinit var binding: FragmentHomeBinding
private lateinit var startNewActivity: ActivityResultLauncher<Intent>
private lateinit var btmBar: BottomNavigationView
private val viewModel: HomeViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -54,6 +58,8 @@ class HomeFragment : Fragment() {
return binding.root
}



@RequiresApi(Build.VERSION_CODES.O)
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
package com.example.posyandu

import com.example.posyandu.features.main.home.Kader
import com.example.posyandu.features.main.home.Remaja
import com.example.posyandu.features.main.home.Bidan

class HomeRepository {
fun getHomeDataBidan(): Bidan {
return Bidan(
1,
"Cinta Laura Kiehl",
"Posyandu Terpadu",
"Jalan Sidosermo 1 no 24",
25,
1,
5,
"Senin",
"22 Januari 2024",
"Penyuluhan 'Pentingnya Menjaga Nutrisi'",
"@drawable/history_edu_fill0_wght400_grad0_opsz24",
"Selasa",
"23 Januari 2024",
"Posyandu bersama",
"@drawable/monitor_heart_fill0_wght400_grad0_opsz24",
"Amelia Apta",
"Ohh ternyata begitu ya Bu, saya sendiri sebelumnya juga kurang memperhatikan hal...",
"Leony Avellince",
"Selamat siang Bu, perkenalkan saya Leony, umur 21 tahun. Saya memiliki berat badan..."
)
}

fun getHomeDataKader(): Kader {
return Kader(
1,
"Sandra Ashita",
"Posyandu Terpadu",
"Jalan Sidosermo 1 no 24",
25,
1,
5,
"Senin",
"22 Januari 2024",
"Penyuluhan 'Pentingnya Menjaga Nutrisi'",
"@drawable/history_edu_fill0_wght400_grad0_opsz24",
"Selasa",
"23 Januari 2024",
"Posyandu bersama",
"@drawable/monitor_heart_fill0_wght400_grad0_opsz24",
"Amelia Apta",
"Ohh ternyata begitu ya Bu, saya sendiri sebelumnya juga kurang memperhatikan hal...",
"Leony Avellince",
"Selamat siang Bu, perkenalkan saya Leony, umur 21 tahun. Saya memiliki berat badan..."
)
}

fun getHomeDataRemaja(): Remaja {
return Remaja(
1,
"Billie Eilish",
"Senin",
"22 Januari 2024",
"Penyuluhan 'Pentingnya Menjaga Nutrisi'",
"@drawable/history_edu_fill0_wght400_grad0_opsz24",
"Selasa",
"23 Januari 2024",
"Posyandu bersama",
"@drawable/monitor_heart_fill0_wght400_grad0_opsz24",
"Amelia Apta",
"Ohh ternyata begitu ya Bu, saya sendiri sebelumnya juga kurang memperhatikan hal...",
"Leony Avellince",
"Selamat siang Bu, perkenalkan saya Leony, umur 21 tahun. Saya memiliki berat badan..."
)
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.example.posyandu.features.main.home

import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.example.posyandu.HomeRepository
import com.example.posyandu.utils.UserManager
import java.text.SimpleDateFormat
import java.util.Locale


class HomeViewModel(application: Application) : AndroidViewModel(application) {
private val homeRepository = HomeRepository()

private val _bidanData = MutableLiveData<Bidan>()
private val _kaderData = MutableLiveData<Kader>()
private val _remajaData = MutableLiveData<Remaja>()
val bidanData: LiveData<Bidan> = _bidanData
val kaderData: LiveData<Kader> = _kaderData
val remajaData: LiveData<Remaja> = _remajaData

val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:", Locale.getDefault())



fun refreshHomeData() {

val userManager = UserManager.getInstance(getApplication())
val userRole = userManager.getRole()


if (userRole == "admin") {
val home = homeRepository.getHomeDataBidan()

_bidanData.value = home
} else if (userRole == "kader") {
val home = homeRepository.getHomeDataKader()

_kaderData.value = home
} else {
val home = homeRepository.getHomeDataRemaja()

_remajaData.value = home
}

}
}
23 changes: 23 additions & 0 deletions app/src/main/java/com/example/posyandu/features/main/home/Kader.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.posyandu.features.main.home

data class Kader(
val id: Int,
val nama: String,
val namaPosyandu: String,
val alamatPosyandu: String,
val jumlahRemaja: Int? = null,
val jumlahKader: Int? = null,
val jumlahRemajaBeresiko: Int? = null,
var hariJadwalTerdekat1: String? = null,
var tanggalJadwalTerdekat1: String? = null,
var jenisAktivitasTerdekat1: String? = null,
var iconJenis1: String? = null,
var hariJadwalTerdekat2: String? = null,
var tanggalJadwalTerdekat2: String? = null,
var jenisAktivitasTerdekat2: String? = null,
var iconJenis2: String? = null,
var namaSender1: String? = null,
var kontenChat1: String? = null,
var namaSender2: String? = null,
var kontenChat2: String? = null
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.example.posyandu.features.main.home

data class Remaja(
val id: Int,
val nama: String,
var hariJadwalTerdekat1: String? = null,
var tanggalJadwalTerdekat1: String? = null,
var jenisAktivitasTerdekat1: String? = null,
var iconJenis1: String? = null,
var hariJadwalTerdekat2: String? = null,
var tanggalJadwalTerdekat2: String? = null,
var jenisAktivitasTerdekat2: String? = null,
var iconJenis2: String? = null,
var namaSender1: String? = null,
var kontenChat1: String? = null,
var namaSender2: String? = null,
var kontenChat2: String? = null
)
42 changes: 42 additions & 0 deletions app/src/main/java/com/example/posyandu/utils/UserManager.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.example.posyandu.utils

import android.content.Context
import com.example.posyandu.features.authentication.LoginActivity
import com.example.posyandu.features.main.home.HomeViewModel

class UserManager(private val context: Context) {

companion object {
private const val PREFERENCES_NAME = "UserPreferences"
private const val KEY_TOKEN = "token"
private const val KEY_ROLE = "role"

@Volatile
private var instance: UserManager? = null

fun getInstance(context: LoginActivity): UserManager {
return instance ?: synchronized(this) {
instance ?: UserManager(context).also { instance = it }
}
}
}

fun saveUserDetails(token: String, role: String) {
val sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
with(sharedPreferences.edit()) {
putString(KEY_TOKEN, token)
putString(KEY_ROLE, role)
apply()
}
}

fun getToken(): String? {
val sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
return sharedPreferences.getString(KEY_TOKEN, null)
}

fun getRole(): String? {
val sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
return sharedPreferences.getString(KEY_ROLE, null)
}
}
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.2.0" apply false
id("com.android.application") version "8.2.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}

Expand Down

0 comments on commit cfc0142

Please sign in to comment.