diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt index 34088743ebf42d06a2a3dcd0815421bae4aedc49..7f670a82790ed7c9c60fc78a609ab879d0c282a2 100644 --- a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt +++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt @@ -4,9 +4,11 @@ import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.EditText +import android.widget.RadioGroup import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider import com.onionsquad.bondoman.repository.TransactionRepository +import com.onionsquad.bondoman.room.TransactionCategory import com.onionsquad.bondoman.room.TransactionDatabase import com.onionsquad.bondoman.room.TransactionEntity import com.onionsquad.bondoman.ui.transaction.TransactionViewModel @@ -24,7 +26,7 @@ class AddTransactionActivity : AppCompatActivity() { val titleEditText: EditText = findViewById(R.id.titleEditText) val amountEditText: EditText = findViewById(R.id.amountEditText) - val categoryEditText: EditText = findViewById(R.id.categoryEditText) + val categoryRadioGroup: RadioGroup = findViewById(R.id.categoryRadioGroup) val locationEditText: EditText = findViewById(R.id.locationEditText) val factory = TransactionViewModelFactory(repository) @@ -34,10 +36,14 @@ class AddTransactionActivity : AppCompatActivity() { saveButton.setOnClickListener { val title = titleEditText.text.toString() val amount = amountEditText.text.toString().toDoubleOrNull() ?: 0.0 - val category = categoryEditText.text.toString() + val selectedCategoryId = categoryRadioGroup.checkedRadioButtonId + val category = when (selectedCategoryId) { + R.id.incomeRadioButton -> TransactionCategory.INCOME + R.id.outcomeRadioButton -> TransactionCategory.OUTCOME + else -> TransactionCategory.OUTCOME + } val location = locationEditText.text.toString() - // Dapatkan tanggal saat ini val currentDate = Date() val transaction = TransactionEntity( @@ -51,7 +57,6 @@ class AddTransactionActivity : AppCompatActivity() { viewModel.insertTransaction(transaction) - // Navigasi kembali ke halaman daftar transaksi Intent(this@AddTransactionActivity, MainActivity::class.java).also { startActivity(it) } diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt new file mode 100644 index 0000000000000000000000000000000000000000..a49c47934f831c523c9dea980de5a3570f1b1dd0 --- /dev/null +++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionCategory.kt @@ -0,0 +1,6 @@ +package com.onionsquad.bondoman.room + +enum class TransactionCategory { + INCOME, + OUTCOME +} \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt index 66c176602c7f51214ba4ddd47de96c2ae911e837..64898cbf7c8ebf97163227d9ddd15a23450d0bc8 100644 --- a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt +++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt @@ -4,11 +4,11 @@ import androidx.room.Entity import androidx.room.PrimaryKey import androidx.room.ColumnInfo import androidx.room.TypeConverters -import com.onionsquad.bondoman.util.DateConverter +import com.onionsquad.bondoman.util.Converters import java.util.Date @Entity(tableName = "transactions") -@TypeConverters(DateConverter::class) +@TypeConverters(Converters::class) data class TransactionEntity( @PrimaryKey(autoGenerate = true) val id: Int = 0, @@ -20,7 +20,7 @@ data class TransactionEntity( val amount: Double, @ColumnInfo(name = "category") - val category: String, + val category: TransactionCategory, @ColumnInfo(name = "date", defaultValue = "CURRENT_TIMESTAMP") val date: Date, diff --git a/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt b/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt new file mode 100644 index 0000000000000000000000000000000000000000..eb9f90aed7e011b1929c61ffa87bda7f5b612595 --- /dev/null +++ b/app/src/main/java/com/onionsquad/bondoman/util/Converters.kt @@ -0,0 +1,30 @@ +package com.onionsquad.bondoman.util + +import androidx.room.TypeConverter +import com.onionsquad.bondoman.room.TransactionCategory +import java.util.Date + +object Converters { + + @TypeConverter + @JvmStatic + fun fromTimestamp(value: Long?): Date? { + return value?.let { Date(it) } + } + + @TypeConverter + @JvmStatic + fun dateToTimestamp(value: Date?): Long? { + return value?.time + } + + @TypeConverter + fun fromTransactionCategory(category: TransactionCategory): String { + return category.name + } + + @TypeConverter + fun toTransactionCategory(categoryString: String): TransactionCategory { + return TransactionCategory.valueOf(categoryString) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt b/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt deleted file mode 100644 index 408d43f29d0fef1feb655b043a8080594af926e5..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/onionsquad/bondoman/util/DateConverter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.onionsquad.bondoman.util - -import androidx.room.TypeConverter -import java.util.Date - -object DateConverter { - - @TypeConverter - @JvmStatic - fun fromTimestamp(value: Long?): Date? { - return value?.let { Date(it) } - } - - @TypeConverter - @JvmStatic - fun dateToTimestamp(value: Date?): Long? { - return value?.time - } -} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_transaction.xml b/app/src/main/res/layout/activity_add_transaction.xml index 1858a85b38c01dfd8eda38a6101a69ec026fd3a5..95fa2b3af87c278d7b251600cecf1c1b0d0ddacb 100644 --- a/app/src/main/res/layout/activity_add_transaction.xml +++ b/app/src/main/res/layout/activity_add_transaction.xml @@ -28,13 +28,26 @@ android:hint="Nominal" android:inputType="numberDecimal" /> - <EditText - android:id="@+id/categoryEditText" + <RadioGroup + android:id="@+id/categoryRadioGroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:hint="Kategori" - android:inputType="text" /> + android:orientation="horizontal"> + + <RadioButton + android:id="@+id/incomeRadioButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Pemasukan" /> + + <RadioButton + android:id="@+id/outcomeRadioButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Pengeluaran" /> + + </RadioGroup> <EditText android:id="@+id/locationEditText"