diff --git a/app/src/main/java/com/example/testapp/data/api/CryptoDealService.kt b/app/src/main/java/com/example/testapp/data/api/CryptoDealService.kt index bfa4ef6..59fc04b 100644 --- a/app/src/main/java/com/example/testapp/data/api/CryptoDealService.kt +++ b/app/src/main/java/com/example/testapp/data/api/CryptoDealService.kt @@ -75,6 +75,14 @@ interface DealRequests { @Query("sellerId")sellerId: Int, @Query("buyerId") buyerId: Int, ): Boolean + + @GET("deals") + suspend fun report( + @Query("date_gte") startDate: Long, + @Query("date_lte") endDate: Long, + @Query("buyerId_or") buyerId: Int, + @Query("sellerId_or") sellerId: Int + ) : List } interface CoinRequests { @@ -110,7 +118,8 @@ interface WalletItemRequests { interface CryptoDealService : UserRequests, DealRequests, CoinRequests, WalletItemRequests { companion object { - private const val BASE_URL = "http://172.20.10.13:8079/" + private const val IP = "10.3.3.78" + private const val BASE_URL = "http://${IP}:8079/" @Volatile private var INSTANCE: CryptoDealService? = null diff --git a/app/src/main/java/com/example/testapp/data/api/repository/DealRestRepository.kt b/app/src/main/java/com/example/testapp/data/api/repository/DealRestRepository.kt index d359bf2..0b8388a 100644 --- a/app/src/main/java/com/example/testapp/data/api/repository/DealRestRepository.kt +++ b/app/src/main/java/com/example/testapp/data/api/repository/DealRestRepository.kt @@ -73,6 +73,10 @@ class DealRestRepository( TODO("Not yet implemented") } + override suspend fun getReportData(startData: Long, endDate: Long, id: Int): List { + return service.report(startData, endDate, id, id).map { x -> x.toDeal() }.toList() + } + override suspend fun insert(vararg x: Deal) { x.forEach {y -> service.insert(y.toRemote()) } } diff --git a/app/src/main/java/com/example/testapp/data/room/dao/DealDao.kt b/app/src/main/java/com/example/testapp/data/room/dao/DealDao.kt index 4045727..c79f1b3 100644 --- a/app/src/main/java/com/example/testapp/data/room/dao/DealDao.kt +++ b/app/src/main/java/com/example/testapp/data/room/dao/DealDao.kt @@ -28,4 +28,9 @@ interface DealDao : IDao { @Query("DELETE FROM deal") suspend fun deleteAll() + + @Query("SELECT * FROM deal " + + "WHERE (sellerId = :idUser OR buyerId = :idUser) " + + "AND date IS NOT NULL AND date >= :startDate AND date <= :endDate") + fun getReport(startDate: Long, endDate: Long, idUser: Int): List } \ No newline at end of file diff --git a/app/src/main/java/com/example/testapp/data/room/database/CryptoDealDb.kt b/app/src/main/java/com/example/testapp/data/room/database/CryptoDealDb.kt index a5fb58f..666c709 100644 --- a/app/src/main/java/com/example/testapp/data/room/database/CryptoDealDb.kt +++ b/app/src/main/java/com/example/testapp/data/room/database/CryptoDealDb.kt @@ -27,67 +27,10 @@ abstract class CryptoDealDb: RoomDatabase() { abstract fun remoteKeysDao(): RemoteKeysDao; companion object { - private const val DB_NAME: String = "crypto-deal13" + private const val DB_NAME: String = "crypto-deal16" @Volatile private var INSTANCE: CryptoDealDb? = null - private suspend fun populateDatabase() { - INSTANCE?.let { database -> - val userDao = database.userDao(); - val user1 = User(0, "u11@gmail.com","12345") - val user2 = User(1, "u22@gmail.com","12345") - val user3 = User(2, "u33@gmail.com","12345") - userDao.insert(user1) - userDao.insert(user2) - userDao.insert(user3) - - val coinDao = database.coinDao(); - val c1 = Coin(0, "BidCoin"); - val c2 = Coin(1, "Edhereum"); - val c3 = Coin(2, "CatCoin"); - val c4 = Coin(3, "BuzCoin"); - val c5 = Coin(4, "LunaCoin"); - val c6 = Coin(5, "HopeCoin"); - val c7 = Coin(6, "DyrovCoin") - coinDao.insert(c1); - coinDao.insert(c2) - coinDao.insert(c3) - coinDao.insert(c4) - coinDao.insert(c5) - coinDao.insert(c6) - coinDao.insert(c7) - -// val walletItemDao = database.walletItemDao(); -// val wi1 = WalletItem(0, 0, 0.5f); -// val wi2 = WalletItem(1, 0, 0.6f); -// val wi3 = WalletItem(3, 0, 0.7f); -// val wi4 = WalletItem(0, 1, 1000f); -// val wi5 = WalletItem(3, 1, 10f); -// val wi6 = WalletItem(2, 1, 1f); -// val wi7 = WalletItem(4, 0, 1.1f); -// val wi8 = WalletItem(5, 0, 1.1f); -// val wi9 = WalletItem(6, 0, 1.1f); -// walletItemDao.insert(wi1); -// walletItemDao.insert(wi2); -// walletItemDao.insert(wi3); -// walletItemDao.insert(wi4); -// walletItemDao.insert(wi5); -// walletItemDao.insert(wi6); -// walletItemDao.insert(wi7); -// walletItemDao.insert(wi8); -// walletItemDao.insert(wi9); - - val dealDao = database.dealDao(); - val d1 = Deal(0, null, 0, 2, 0, 0.1f, 0.2f, "Buy", null, "TEST1") - val d2 = Deal(1, null, 0, 0, 2, 0.1f, 0.2f, "Buy", null, "TEST2") - val d3 = Deal(2, null, 0, 2, 0, 0.1f, 0.2f, "Buy", null, "TEST3") - val d4 = Deal(3, null, 0, 0, 2, 0.1f, 0.2f, "Buy", null, "TEST4") - dealDao.insert(d1); - dealDao.insert(d2); - dealDao.insert(d3); - dealDao.insert(d4); - } - } fun getInstance(appContext: Context): CryptoDealDb { return INSTANCE ?: synchronized(this) { @@ -96,14 +39,6 @@ abstract class CryptoDealDb: RoomDatabase() { CryptoDealDb::class.java, DB_NAME ) -// .addCallback(object : Callback() { -// override fun onCreate(db: SupportSQLiteDatabase) { -// super.onCreate(db) -// CoroutineScope(Dispatchers.IO).launch { -// populateDatabase() -// } -// } -// }) .allowMainThreadQueries() .build() .also { INSTANCE = it } diff --git a/app/src/main/java/com/example/testapp/data/room/models/WalletItem.kt b/app/src/main/java/com/example/testapp/data/room/models/WalletItem.kt index 2010695..828bcaf 100644 --- a/app/src/main/java/com/example/testapp/data/room/models/WalletItem.kt +++ b/app/src/main/java/com/example/testapp/data/room/models/WalletItem.kt @@ -1,17 +1,9 @@ package com.example.testapp.data.room.models import androidx.room.Entity -import androidx.room.ForeignKey -import androidx.room.Index import androidx.room.PrimaryKey -@Entity( - foreignKeys = [ - ForeignKey(entity = User::class, parentColumns = ["id"], childColumns = ["userId"], onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE), - ForeignKey(entity = Coin::class, parentColumns = ["id"], childColumns = ["coinId"], onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.CASCADE) - ], - indices = [Index(value = ["coinId", "userId"])] -) +@Entity() class WalletItem ( @PrimaryKey(autoGenerate = true) val id: Int?, val coinId: Int, @@ -26,4 +18,6 @@ class WalletItem ( override fun hashCode(): Int { return id!! } + + fun copy(): WalletItem = WalletItem(id, coinId, userId, count) } \ No newline at end of file diff --git a/app/src/main/java/com/example/testapp/data/room/repository/basic/DealRepository.kt b/app/src/main/java/com/example/testapp/data/room/repository/basic/DealRepository.kt index 226189c..5504ddd 100644 --- a/app/src/main/java/com/example/testapp/data/room/repository/basic/DealRepository.kt +++ b/app/src/main/java/com/example/testapp/data/room/repository/basic/DealRepository.kt @@ -11,4 +11,5 @@ interface DealRepository : IRepository { suspend fun clearData() fun pagingData(): Flow> fun getAllPagingData(): PagingSource + suspend fun getReportData(startData: Long, endDate: Long, id: Int): List } \ No newline at end of file diff --git a/app/src/main/java/com/example/testapp/data/room/repository/offline/OfflineDealRepository.kt b/app/src/main/java/com/example/testapp/data/room/repository/offline/OfflineDealRepository.kt index 1e8d922..90378d6 100644 --- a/app/src/main/java/com/example/testapp/data/room/repository/offline/OfflineDealRepository.kt +++ b/app/src/main/java/com/example/testapp/data/room/repository/offline/OfflineDealRepository.kt @@ -28,6 +28,8 @@ class OfflineDealRepository( ), pagingSourceFactory = { DealPagination(dealDao) }, initialKey = 1).flow override fun getAllPagingData() = dealDao.getDeals() + override suspend fun getReportData(startData: Long, endDate: Long, id: Int): List = + dealDao.getReport(startData, endDate, id) suspend fun insert(list: List) = dealDao.insert(*list.toTypedArray()) } \ No newline at end of file diff --git a/app/src/main/java/com/example/testapp/screensMobile/AccountPage.kt b/app/src/main/java/com/example/testapp/screensMobile/AccountPage.kt index 7a7e965..8d3a631 100644 --- a/app/src/main/java/com/example/testapp/screensMobile/AccountPage.kt +++ b/app/src/main/java/com/example/testapp/screensMobile/AccountPage.kt @@ -261,16 +261,16 @@ fun Property1Clear(modifier: Modifier = Modifier, navController: NavController) Column( horizontalAlignment = Alignment.CenterHorizontally ) { - Text( - text = "Log Out", - color = Color(0xffee3f58), - lineHeight = 1.25.em, - style = TextStyle( - fontSize = 16.sp, - fontWeight = FontWeight.Medium, - letterSpacing = 0.1.sp - ) - ) +// Text( +// text = "Log Out", +// color = Color(0xffee3f58), +// lineHeight = 1.25.em, +// style = TextStyle( +// fontSize = 16.sp, +// fontWeight = FontWeight.Medium, +// letterSpacing = 0.1.sp +// ) +// ) } } } diff --git a/app/src/main/java/com/example/testapp/screensMobile/ReportScreen.kt b/app/src/main/java/com/example/testapp/screensMobile/ReportScreen.kt index 210d1b9..483cd65 100644 --- a/app/src/main/java/com/example/testapp/screensMobile/ReportScreen.kt +++ b/app/src/main/java/com/example/testapp/screensMobile/ReportScreen.kt @@ -44,6 +44,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController import com.example.testapp.data.room.models.Coin import com.example.testapp.data.room.models.Deal +import com.example.testapp.data.room.models.WalletItem import com.example.testapp.navigate.BottomBarScreen import com.example.testapp.viewModels.AppViewModelProvider import com.example.testapp.viewModels.CurrentUserViewModel @@ -72,6 +73,9 @@ fun ReportScreen( val user by currentUserViewModel.user.collectAsState() val deals by reportViewModel.deals.collectAsState() val coins by reportViewModel.coins.collectAsState() + val wallet by reportViewModel.wallet.collectAsState() + + var walletCopy = wallet.map { it.copy() } val dateStateFrom = rememberDatePickerState() val showDialogFrom = rememberSaveable { mutableStateOf(false) } @@ -206,6 +210,7 @@ fun ReportScreen( longToDate(dateStateFrom.selectedDateMillis!!), longToDate(dateStateTo.selectedDateMillis!!) ) + walletCopy = wallet.map { it.copy() } } }, shape = RoundedCornerShape(10.dp), @@ -218,7 +223,7 @@ fun ReportScreen( } if (deals.isNotEmpty()) { items(items = deals) { - ReportItem(deal = it, coins = coins) + ReportItemMod(deal = it, coins = coins, wallet=walletCopy) } } else { @@ -229,9 +234,17 @@ fun ReportScreen( } } +fun subtractWallet(wallet: List, coinId: Int, count: Float): Float { + val item = wallet.first{ x -> x.coinId == coinId } + item.count += count + return item.count +} + @RequiresApi(Build.VERSION_CODES.O) @Composable -fun ReportItem(modifier: Modifier = Modifier, deal: Deal, coins: List) { +fun ReportItem(modifier: Modifier = Modifier, deal: Deal, coins: List, wallet: List) { + val coinsById = coins.associateBy { x -> x.id }.toMap() + Column( verticalArrangement = Arrangement.spacedBy(12.dp, Alignment.CenterVertically), horizontalAlignment = Alignment.CenterHorizontally, @@ -252,9 +265,20 @@ fun ReportItem(modifier: Modifier = Modifier, deal: Deal, coins: List) { .fillMaxWidth() .padding(all = 2.dp) ) { + Text( + text = "#${deal.id}", + color = Color(0xfff96161), + lineHeight = 1.25.em, + style = TextStyle( + fontSize = 16.sp, + letterSpacing = 0.1.sp + ), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically) + ) Text( text = "-${deal.countSell} ${ - coins.first { x -> x.id == deal.sellerCoinId }.shortName() + coinsById[deal.sellerCoinId]?.shortName() }", color = Color(0xfff96161), lineHeight = 1.25.em, @@ -265,20 +289,9 @@ fun ReportItem(modifier: Modifier = Modifier, deal: Deal, coins: List) { modifier = Modifier .wrapContentHeight(align = Alignment.CenterVertically) ) - Text( - text = "->", - color = Color(0xFF009688), - lineHeight = 1.25.em, - style = TextStyle( - fontSize = 16.sp, - letterSpacing = 0.1.sp - ), - modifier = Modifier - .wrapContentHeight(align = Alignment.CenterVertically) - ) Text( text = "+${deal.countBuy} ${ - coins.first { x -> x.id == deal.buyerCoinId }.shortName() + coinsById[deal.buyerCoinId]?.shortName() }", color = Color(0xff5acb48), lineHeight = 1.25.em, @@ -291,4 +304,137 @@ fun ReportItem(modifier: Modifier = Modifier, deal: Deal, coins: List) { ) } } -} \ No newline at end of file +} + +@RequiresApi(Build.VERSION_CODES.O) +@Composable +fun ReportItemMod(modifier: Modifier = Modifier, deal: Deal, coins: List, wallet: List) { + val coinsById = coins.associateBy { x -> x.id }.toMap() + val date = LocalDateTime + .ofInstant(deal.date?.let { Instant.ofEpochMilli(it) }, ZoneOffset.UTC).toLocalDate().toString() + val afterSell = subtractWallet(wallet, deal.buyerCoinId, 0f) + val beforeSell = subtractWallet(wallet, deal.sellerCoinId, -deal.countSell) + val beforeBuy = subtractWallet(wallet, deal.buyerCoinId, deal.countBuy) + val afterBuy = subtractWallet(wallet, deal.sellerCoinId, deal.countSell) + + + + Column( + verticalArrangement = Arrangement.spacedBy(10.dp, Alignment.Top), + horizontalAlignment = Alignment.CenterHorizontally, + modifier = modifier + .fillMaxWidth() + .clip(shape = RoundedCornerShape(10.dp)) + .background(color = Color(0xffeeeeee)) + .padding( + end = 10.dp, + bottom = 10.dp) + ) { + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterHorizontally), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clip(shape = RoundedCornerShape(10.dp)) + .background(color = Color.White) + .padding(horizontal = 22.dp) + ) { + Text( + text = "Deal #${deal.id}", + color = Color.Black, + lineHeight = 1.em, + style = TextStyle( + fontSize = 18.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .weight(weight = 0.5f) + .fillMaxWidth() + .wrapContentHeight(align = Alignment.CenterVertically)) + Text( + text = "Date: $date", + color = Color.Black, + textAlign = TextAlign.End, + lineHeight = 1.em, + style = TextStyle( + fontSize = 18.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .weight(weight = 0.5f) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterHorizontally), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clip(shape = RoundedCornerShape(8.dp)) + .background(color = Color.White) + .padding(vertical = 10.dp) + ) { + Text( + text = "Before:", + color = Color.Black, + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + Text( + text = "${coinsById[deal.sellerCoinId]?.shortName()} $beforeSell", + color = Color(0xfffe4545), + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + Text( + text = "${coinsById[deal.buyerCoinId]?.shortName()} $beforeBuy", + color = Color(0xff5acb48), + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Row( + horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.CenterHorizontally), + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clip(shape = RoundedCornerShape(8.dp)) + .background(color = Color.White) + .padding(vertical = 10.dp) + ) { + Text( + text = "After:", + color = Color.Black, + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + Text( + text = "${coinsById[deal.sellerCoinId]?.shortName()} $afterBuy", + color = Color(0xff5acb48), + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + Text( + text = "${coinsById[deal.buyerCoinId]?.shortName()} $afterSell", + color = Color(0xfffe4545), + lineHeight = 1.em, + style = TextStyle( + fontSize = 13.sp, + letterSpacing = 0.1.sp), + modifier = Modifier + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } +} diff --git a/app/src/main/java/com/example/testapp/screensMobile/Wallet.kt b/app/src/main/java/com/example/testapp/screensMobile/Wallet.kt index 1386706..0c5e11b 100644 --- a/app/src/main/java/com/example/testapp/screensMobile/Wallet.kt +++ b/app/src/main/java/com/example/testapp/screensMobile/Wallet.kt @@ -79,16 +79,6 @@ fun Wallet( } wallet.apply { when{ -// loadState.refresh is LoadState.Loading -> { -// item { CircularProgressIndicator( -// modifier = Modifier.fillParentMaxSize(0.5f), -// color = Color(0xff423a99)) } -// } -// loadState.append is LoadState.Loading -> { -// item { CircularProgressIndicator( -// modifier = Modifier.fillParentMaxSize(0.5f), -// color = Color(0xff423a99)) } -// } loadState.refresh is LoadState.Error -> { val err = wallet.loadState.refresh as LoadState.Error item { Text(err.error.localizedMessage) } diff --git a/app/src/main/java/com/example/testapp/screensMobile/authScreens/RegisterScreen.kt b/app/src/main/java/com/example/testapp/screensMobile/authScreens/RegisterScreen.kt index 5af48a2..a275f9c 100644 --- a/app/src/main/java/com/example/testapp/screensMobile/authScreens/RegisterScreen.kt +++ b/app/src/main/java/com/example/testapp/screensMobile/authScreens/RegisterScreen.kt @@ -36,9 +36,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp import androidx.navigation.NavController +import com.example.testapp.data.room.models.User import com.example.testapp.graphs.AuthScreen import com.example.testapp.graphs.Graph -import com.example.testapp.data.room.models.User import com.example.testapp.viewModels.CurrentUserViewModel import com.example.testapp.viewModels.RegistrationScreenViewModel import kotlinx.coroutines.async diff --git a/app/src/main/java/com/example/testapp/viewModels/AppViewModelProvider.kt b/app/src/main/java/com/example/testapp/viewModels/AppViewModelProvider.kt index 9809c26..51eadfe 100644 --- a/app/src/main/java/com/example/testapp/viewModels/AppViewModelProvider.kt +++ b/app/src/main/java/com/example/testapp/viewModels/AppViewModelProvider.kt @@ -44,12 +44,16 @@ object AppViewModelProvider { ) } initializer { - RegistrationScreenViewModel(application().container.userRestRepository) + RegistrationScreenViewModel( + application().container.userRestRepository, + application().container.walletItemRestRepository + ) } initializer { ReportViewModel( application().container.dealRestRepository, - application().container.coinRepository + application().container.coinRepository, + application().container.walletItemRestRepository ) } } diff --git a/app/src/main/java/com/example/testapp/viewModels/DealCreateViewModel.kt b/app/src/main/java/com/example/testapp/viewModels/DealCreateViewModel.kt index ca5e810..5744a4e 100644 --- a/app/src/main/java/com/example/testapp/viewModels/DealCreateViewModel.kt +++ b/app/src/main/java/com/example/testapp/viewModels/DealCreateViewModel.kt @@ -20,8 +20,6 @@ class DealCreateViewModel( private val walletItemRepository: WalletItemRepository ) : ViewModel() { private val dealId = MutableStateFlow(null) - var id = 0 - private var _deal = MutableStateFlow(null) private var _coins = MutableStateFlow>(emptyList()) private var _wallet = MutableStateFlow>(emptyList()) @@ -39,13 +37,4 @@ class DealCreateViewModel( _wallet.emit(walletItemRepository.getAll()) } } - - fun isEdit(): Boolean { - return deal.value != null; - } - - fun setupEdit(deal: Deal) { - dealId.value = deal.id - _deal.value = deal - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/testapp/viewModels/DealListViewModel.kt b/app/src/main/java/com/example/testapp/viewModels/DealListViewModel.kt index e72aa88..d98ce51 100644 --- a/app/src/main/java/com/example/testapp/viewModels/DealListViewModel.kt +++ b/app/src/main/java/com/example/testapp/viewModels/DealListViewModel.kt @@ -44,7 +44,7 @@ class DealListViewModel( val walletBuyer: List = walletItemRepository.getUserWallet(buyerId) val seller: WalletItem? = walletSeller.firstOrNull { x -> x.coinId == deal.sellerCoinId } - val buyer: WalletItem? = walletBuyer.firstOrNull { x -> x.coinId == deal.buyerId } + val buyer: WalletItem? = walletBuyer.firstOrNull { x -> x.coinId == deal.buyerCoinId } if (seller == null || buyer == null) return@launch // Check what seller have buyer COIN or we need to insert new value to database: diff --git a/app/src/main/java/com/example/testapp/viewModels/HistoryViewModel.kt b/app/src/main/java/com/example/testapp/viewModels/HistoryViewModel.kt index bbd1f60..08400bd 100644 --- a/app/src/main/java/com/example/testapp/viewModels/HistoryViewModel.kt +++ b/app/src/main/java/com/example/testapp/viewModels/HistoryViewModel.kt @@ -18,7 +18,7 @@ class HistoryViewModel( private val dealRepository: DealRepository, private val coinRepository: CoinRepository ) : ViewModel() { - val argument = MutableStateFlow(null) + private val argument = MutableStateFlow(null) private val id = MutableStateFlow(null) var deals = MutableStateFlow>(PagingData.empty()) var coins = MutableStateFlow>(emptyList()) diff --git a/app/src/main/java/com/example/testapp/viewModels/RegistrationScreenViewModel.kt b/app/src/main/java/com/example/testapp/viewModels/RegistrationScreenViewModel.kt index 5df3d70..e1ec140 100644 --- a/app/src/main/java/com/example/testapp/viewModels/RegistrationScreenViewModel.kt +++ b/app/src/main/java/com/example/testapp/viewModels/RegistrationScreenViewModel.kt @@ -6,9 +6,13 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.example.testapp.data.room.models.User import com.example.testapp.data.room.repository.basic.UserRepository +import com.example.testapp.data.room.repository.basic.WalletItemRepository import kotlinx.coroutines.launch -class RegistrationScreenViewModel(private val userRepository: UserRepository) : ViewModel() { +class RegistrationScreenViewModel( + private val userRepository: UserRepository, + private val walletItemRepository: WalletItemRepository +) : ViewModel() { private val _users = MutableLiveData>() val users: LiveData> get() = _users diff --git a/app/src/main/java/com/example/testapp/viewModels/ReportViewModel.kt b/app/src/main/java/com/example/testapp/viewModels/ReportViewModel.kt index 9206aad..16b7904 100644 --- a/app/src/main/java/com/example/testapp/viewModels/ReportViewModel.kt +++ b/app/src/main/java/com/example/testapp/viewModels/ReportViewModel.kt @@ -6,8 +6,10 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.example.testapp.data.room.models.Coin import com.example.testapp.data.room.models.Deal +import com.example.testapp.data.room.models.WalletItem import com.example.testapp.data.room.repository.basic.CoinRepository import com.example.testapp.data.room.repository.basic.DealRepository +import com.example.testapp.data.room.repository.basic.WalletItemRepository import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch @@ -17,12 +19,14 @@ import java.time.ZoneOffset @RequiresApi(Build.VERSION_CODES.O) class ReportViewModel( private val dealRepository: DealRepository, - private val coinRepository: CoinRepository + private val coinRepository: CoinRepository, + private val walletItemRepository: WalletItemRepository ) : ViewModel() { private var startDate = MutableStateFlow(LocalDateTime.now().minusDays(1)) private var endDate = MutableStateFlow(LocalDateTime.now()) var deals = MutableStateFlow>(emptyList()) var coins = MutableStateFlow>(emptyList()) + var wallet = MutableStateFlow>(emptyList()) fun clearLists() { deals = MutableStateFlow(emptyList()) @@ -36,13 +40,8 @@ class ReportViewModel( val eptf = from.toEpochSecond(ZoneOffset.UTC) * 1000 val eptt = to.toEpochSecond(ZoneOffset.UTC) * 1000 - deals.emit( - dealRepository.getUserDeals(userId).filter { - it.date != null && - it.date!! >= eptf && - it.date!! <= eptt - } - ) + wallet.emit(walletItemRepository.getUserWallet(userId)) + deals.emit(dealRepository.getReportData(eptf, eptt, userId).sortedBy { x -> x.date }) coins.emit(coinRepository.getAll()) } } diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml index 87e22ea..09f9bc5 100644 --- a/app/src/main/res/xml/network_security_config.xml +++ b/app/src/main/res/xml/network_security_config.xml @@ -1,6 +1,6 @@ - 172.20.10.13 + 10.3.3.78 \ No newline at end of file