diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5a31672b3d4466bbf99c4839ab719a0642479c5e..b5fce6b761f4cd601edddc7bc05683b8ff0151c3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -63,8 +63,8 @@ dependencies { androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) - implementation("androidx.room:room-runtime:2.4.0") - kapt("androidx.room:room-compiler:2.4.0") - implementation("androidx.room:room-ktx:2.4.0") - testImplementation("androidx.room:room-testing:2.4.0") + implementation("androidx.room:room-runtime:2.6.1") + kapt("androidx.room:room-compiler:2.6.1") + implementation("androidx.room:room-ktx:2.6.1") + testImplementation("androidx.room:room-testing:2.6.1") } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt b/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt index f3bccd448e2872803d856f69c0753031d30edb4a..c2eec6e6bb813d81712ff35842d2c0586c94c539 100644 --- a/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt +++ b/app/src/main/java/com/example/myapplication/dao/TransactionDao.kt @@ -11,15 +11,15 @@ import com.example.myapplication.entities.TransactionEntity @Dao interface TransactionDao { - @Query("INSERT INTO `" + "transactionentity" + "`(title) VALUES (:title)") - fun insertTransaction(title: String) + @Insert + fun insertTransaction(transaction: TransactionEntity) - @Query("SELECT * FROM transactionentity") - fun getAllTransactions(): List<TransactionEntity> + @Query("SELECT * FROM transaction_entity") + fun getAllTransactions(): LiveData<List<TransactionEntity>> - @Update - fun update(transaction: TransactionEntity) + @Query("UPDATE transaction_entity SET title = :title, nominal = :nominal, lokasi = :lokasi WHERE id = :id") + fun update(title: String, nominal: String, lokasi: String, id: Int) - @Delete - fun delete(transaction: TransactionEntity) + @Query("DELETE FROM transaction_entity WHERE id = :id") + fun delete(id : Int) } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/entities/TransactionEntity.kt b/app/src/main/java/com/example/myapplication/entities/TransactionEntity.kt index 2d61479929ff0c2519f496c906db7261b867bdb8..e63dd5d48a715f2ee272440a8e50e9e205b63d7a 100644 --- a/app/src/main/java/com/example/myapplication/entities/TransactionEntity.kt +++ b/app/src/main/java/com/example/myapplication/entities/TransactionEntity.kt @@ -5,8 +5,9 @@ import androidx.room.PrimaryKey import androidx.room.ColumnInfo -@Entity(tableName = "transactionentity") +@Entity(tableName = "transaction_entity") data class TransactionEntity( + @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") val id: Int = 0, @@ -24,5 +25,8 @@ data class TransactionEntity( val lokasi: String?, @ColumnInfo(name = "tanggal", defaultValue = "CURRENT_TIMESTAMP") - val tanggal: String + val tanggal: String?, + + @ColumnInfo(name = "quantity", defaultValue = "1") + val quantity: Int? ) \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt b/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt index 1bed02a0f51097bfddfe23dde00e1110de4626bf..8697cab01db47da92edc14c0da77cd7b57a2bfcb 100644 --- a/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt +++ b/app/src/main/java/com/example/myapplication/repository/TransactionRepository.kt @@ -1,21 +1,28 @@ package com.example.myapplication.repository +import android.content.Context import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.example.myapplication.dao.TransactionDao +import com.example.myapplication.database.TransactionDatabase import com.example.myapplication.entities.TransactionEntity -class TransactionRepository(private val transactionDao: TransactionDao) { - lateinit var allTransactions: MutableLiveData<List<TransactionEntity>>; +class TransactionRepository(context: Context) { + var allTransactions: LiveData<List<TransactionEntity>>; + private val transactionDao : TransactionDao + + init { + val transactionDatabase = TransactionDatabase.getInstance(context) + transactionDao = transactionDatabase.transactionDao() + allTransactions = transactionDao.getAllTransactions() + } + + fun insertTransaction(title: String, nominal: String, kategori: String) { + val transaction = TransactionEntity(title = title, nominal = nominal, kategori = kategori, lokasi = null, tanggal = null, quantity = null) + transactionDao.insertTransaction(transaction) + } + + -// fun insertTransaction(transaction: TransactionEntity) -// { -// transactionDao.insertTransaction(transaction) -// } -// -// fun getAllTransactions() -// { -// this.allTransactions.postValue(transactionDao.getAllTransactions()) -// } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt b/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt index 407ed551513601857a6bdb66f940341900fb8a9c..42f81783b02749e7f405eedfc2b17c2a3a5d9bde 100644 --- a/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt +++ b/app/src/main/java/com/example/myapplication/viewmodel/TransactionViewModel.kt @@ -1,23 +1,35 @@ package com.example.myapplication.viewmodel +import android.content.Context +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.Observer import androidx.lifecycle.ViewModel import com.example.myapplication.dao.TransactionDao import com.example.myapplication.entities.TransactionEntity +import com.example.myapplication.repository.TransactionRepository -class TransactionViewModel(private val transactionDao: TransactionDao) : ViewModel() { +class TransactionViewModel(context : Context) : ViewModel() { + private val repository: TransactionRepository = TransactionRepository(context) + var allTransactions : LiveData<List<TransactionEntity>> = repository.allTransactions + var transactionObserver = Observer<List<TransactionEntity>> { + // Nanti dipake di fragment yang ada object viewnya buat update itu + // contohnya kaya gini (tapi harus ada recycle viewnya dulu + // recyclerViewAdapter.submitList(it) - fun addTransaction(transaction: TransactionEntity) { - + //TODO("Implement kalau transaksi berubah di viewnya juga langsung berubah") + Log.i("Development", "Transaction changed, transaction: $it") } - - fun getAllTransactions() = transactionDao.getAllTransactions() - - fun updateTransaction(transaction: TransactionEntity) { - transactionDao.update(transaction) + fun addTransaction(title: String, nominal: String, kategori: String) { + repository.insertTransaction(title, nominal , kategori) } - fun deleteTransaction(transaction: TransactionEntity) { - transactionDao.delete(transaction) - } +// fun updateTransaction(transaction: TransactionEntity) { +// transactionDao.update(transaction) +// } + +// fun deleteTransaction(transaction: TransactionEntity) { +// transactionDao.delete(transaction) +// } } \ No newline at end of file