From 201db3401f25fb7205dc3276db7d58245d252664 Mon Sep 17 00:00:00 2001 From: ElEgEv <112943269+ElEgEv@users.noreply.github.com> Date: Mon, 25 Dec 2023 01:04:38 +0400 Subject: [PATCH] Purchase is working! --- .idea/TanksApp.iml | 9 +++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ .idea/workspace.xml | 58 +++++++++++++++++ .../8.0/executionHistory/executionHistory.bin | Bin 6406303 -> 6596139 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes compose/.gradle/8.0/fileHashes/fileHashes.bin | Bin 465691 -> 466441 bytes .../.gradle/8.0/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.0/fileHashes/resourceHashesCache.bin | Bin 448409 -> 453101 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes compose/.gradle/file-system.probe | Bin 8 -> 8 bytes .../ru/ulstu/is/pmu/tank/api/ServerService.kt | 10 +-- .../tank/api/model/UserTankCrossRefRemote.kt | 10 +-- .../tank/api/repository/RestTankRepository.kt | 2 +- .../ulstu/is/pmu/tank/composeui/TankList.kt | 27 ++++---- .../tank/composeui/edit/BuyTankViewModel.kt | 4 -- .../composeui/edit/PurchaseTankViewModel.kt | 61 ++++++++++++++++++ .../ulstu/is/pmu/tank/database/AppDatabase.kt | 2 +- .../is/pmu/tank/model/UserTankCrossRef.kt | 16 ++++- .../ru/ulstu/is/pmu/tanks/composeui/Hangar.kt | 2 +- .../ulstu/is/pmu/ui/AppViewModelProvider.kt | 7 ++ compose/server/data.json | 21 ++++-- 22 files changed, 206 insertions(+), 37 deletions(-) create mode 100644 .idea/TanksApp.iml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml delete mode 100644 compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/BuyTankViewModel.kt create mode 100644 compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/PurchaseTankViewModel.kt diff --git a/.idea/TanksApp.iml b/.idea/TanksApp.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/TanksApp.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f8468d3 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..06fd2bc --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1703451140424 + + + + \ No newline at end of file diff --git a/compose/.gradle/8.0/executionHistory/executionHistory.bin b/compose/.gradle/8.0/executionHistory/executionHistory.bin index 6dd57db42c8de2351924cc8357f53cc9939663c1..28bbbf1059234793949ad0f7db771fd0cba11873 100644 GIT binary patch delta 27558 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

FT`8j_nIOq+#yzNp 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 WZhdo>t>*me`W(MCN|&8B(fBuAcH^@E delta 19507 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 diff --git a/compose/.gradle/8.0/fileHashes/fileHashes.bin b/compose/.gradle/8.0/fileHashes/fileHashes.bin index aeaf765cc039769d7a3d528a8c0af1af93e474bd..00f988d34ea2e63659d7ffe0fe4a12876cd837af 100644 GIT binary patch delta 18137 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 delta 17340 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�Y02PWkYX$T6L^JH$`}}xwSKer$|`t9!I7eVu6xgRP2sT^)t^=~h!QISaV zwcX*1_f|T88$6!=epV%S}}1WIeAu|FKm5;>jMd`{g?0Z_{^c zuL&(mI0tpR6v8_j+uVo9~EtfA0&lKRdjYzyjp_mw7xLHf8|bYV8Es` z<`pZNC$2(!?D!@3&o;KRBj&eTo*cX~QIX$a+;rn(z%omRUw+T29Ggk`FXM2j?I|2( z?eK^X@*>@goYX#`vo7q=#Ic@3zqV;_59_{c*?HgQ9#tPq=N?SuSm>%9Lj6}}bbGiB z$vCGy4$Pf6)P2k6#l>+>M(b{0Qc)iseM0rQ(Yv%gy4?FyVu_Z;U|xQ$NXi-S-Rqp` zp{YrW%4YhzPm?&f8wa=aYKhk$4$7T!UEdk7p=Va+^DkPbu+gN9J^cn(cUg4REi1Tf zHgV>Cf5cBWnR)QDsJ<;gw=wV9M8&(ShkI?Tvee~9WQQ{@h*QKRz?II6`+Z8$g@K;w z(bHa;2-01t(G<>F>BF5fhs}14UfnaPAWLrDPGjnJ97lh_&G_Q0Ia%S}<+ofj7Z}=1 zpEyPI13#0X?Z-T8Hy&{FZFocRT?j7KV#`t1O)39%nd_&e8w6o@Gz+&okQ2uW-!yn% zT)=ypw{ty=-y$-m>s~1yJE?Z3%q2S+%`x|bQL6WU8Go_A3;v%>3pEZLi5c#AJ7>q( z4r%8v>(#y3tsQfp5!`MqvF7j9|g9*UaQBS(Fc%jKP%d4w1!h!6BU)KXqRS! zXuRFoqs*LUwPC>fi$@oskuO#AgFEll3^u5>g>7pSO1)yoj<|yKI%D40NOYBjHoBHu8;u#`oM5zvl}KZKbRrnv$CRM4d{PS- zX>kK!WKMRH>;6=mF>P8m8L`Qg!swV$LZ)cX5K-2t3eQoJYCA_3^~4({wdk9@qB^7b*B58O3BC~pCnOuOP#}0#JX9k;ngYj> z&nJLgs0qnX%XgC@2zkT|C_y$-VZIroSE{CP8n2#)Yqi)2J=UoRJ>~rfD&RL3!1Z9* z#>u%bNIYj1>?VG^7FGZku7d&-2Nc3$$%RFb;lsB|z+zG(%VDJ{eBTi9msz#Xkx42t zU0T$tbZJwp1Me({tRg+fognlh9{M~U0lpiITJdcQ=1Kl@3^tnhd^n~KRbe));PW<2 zBpy8#yFraez*==VL02~=;u65fOKMj?rKmgov_U!kCWo3nKo)+KgbM+ZK*Qm zU?WGRW42J$8EE6)3``AFsmpZLl8vi_OwsNkqU5H^swAsAT&W>Etfa{*vx@9|BoDtc zK_lmHz$(FGH(|Mn&laI(m$MZ$?W2jw2PXY57Cb|e}X}%KHG;L zjCoFN?GzEJsZ-cgQkTe9o-ScggWeE*UD)~1ew-N$Tln|m7>#WE2CoPXJ&o0ibX%RI;_74|zj{w>41qK1tRx3# zn#f6f-=Ca5yv>(Q#j%8%8a_+B8rPqe z>p`V1f!W-dK%)>0HIPJC`Sx_mHu0M?sakT#D_(^`J6#;fJz3-gb}S>CaQ$&NTUp%1?|Iz$7&@6>Ar zjyOtD+6P~eFYw1-llE~AQ*8i8oS{C!`tWtHwpO|#T!Cq|oO6Lz3XF+%TYH~j2~;Tu zX&kq7P?Q8WKe$F7;Geq4Zszz0)Ix0TCx=j<4pIkK{i8RaCZwQ+UwTUV$ks^d!Kga7 zb;UCx`O5d2)^ZJ#=83R_4<^a^{ycoPO!QX` - @POST(ApiRoutes.USER_TANK) + @POST("${ApiRoutes.USER_TANK}") suspend fun insertUserTankCrossRef( - @Body tank: UserTankCrossRefRemote + @Body users_tank: UserTankCrossRefRemote ) : UserTankCrossRefRemote @DELETE("${ApiRoutes.USER_TANK}/deleteMyTank") diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/model/UserTankCrossRefRemote.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/model/UserTankCrossRefRemote.kt index 08e11bc..676d575 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/model/UserTankCrossRefRemote.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/model/UserTankCrossRefRemote.kt @@ -8,20 +8,22 @@ import java.util.Date @Serializable data class UserTankCrossRefRemote ( - val id: Long = 0, + val id: Long? = 0, + val userId: Long = 0, val tankId: Long = 0, @Serializable(with = DateSerializer::class) - val date: Date = Date() + val date: Date = Date(0) ) fun UserTankCrossRefRemote.toUserTankCrossRef(): UserTankCrossRef = UserTankCrossRef( - userId = id, + id = id, + userId = userId, tankId = tankId, date = date ) fun UserTankCrossRef.toRemote(): UserTankCrossRefRemote = UserTankCrossRefRemote( - id = userId, + userId = userId, tankId = tankId, date = date ) \ No newline at end of file diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/repository/RestTankRepository.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/repository/RestTankRepository.kt index 3e3d577..ecee2b5 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/repository/RestTankRepository.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/api/repository/RestTankRepository.kt @@ -115,7 +115,7 @@ class RestTankRepository ( } override suspend fun buyTank(tankId: Long, userId: Long, date: Date) { - service.insertUserTankCrossRef(UserTankCrossRefRemote(userId, tankId, date)) + service.insertUserTankCrossRef(UserTankCrossRef(userId, tankId, date).toRemote()) } override suspend fun insertMany(tankList: List) { diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/TankList.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/TankList.kt index 17c55b8..f77bfa8 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/TankList.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/TankList.kt @@ -59,6 +59,7 @@ import ru.ulstu.`is`.pmu.R import ru.ulstu.`is`.pmu.composeui.navigation.Screen import ru.ulstu.`is`.pmu.tank.composeui.edit.NationDropDownViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.NationsListUiState +import ru.ulstu.`is`.pmu.tank.composeui.edit.PurchaseTankViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.TankEditViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.UsersTanksEditViewModel import ru.ulstu.`is`.pmu.tank.composeui.list.TankListUiState @@ -77,6 +78,7 @@ import ru.ulstu.`is`.pmu.ui.theme.PmudemoTheme fun TankList( navController: NavController?, userTankEditViewModel: UsersTanksEditViewModel = viewModel(factory = AppViewModelProvider.Factory), + purchaseTankViewModel: PurchaseTankViewModel = viewModel(factory = AppViewModelProvider.Factory), viewModel: TankListViewModel = viewModel(factory = AppViewModelProvider.Factory), listNations: NationDropDownViewModel = viewModel(factory = AppViewModelProvider.Factory) ) { @@ -87,6 +89,7 @@ fun TankList( // Lazy Column, Pass the numbers array if (navController != null) { TankList( + purchaseTankViewModel = purchaseTankViewModel, nations = listNations.nationsListUiState, listTanks = viewModel.tankListUiState.tankList, viewModel = userTankEditViewModel @@ -99,6 +102,7 @@ fun TankList( @Composable fun ColumnItem( + purchaseTankViewModel: PurchaseTankViewModel, nation: Nation, tanks: List?, onClick: (uid: Long) -> Unit, @@ -106,14 +110,9 @@ fun ColumnItem( ) { val scope = rememberCoroutineScope() val tank = viewModel.usersTanksUiState + val userId = 100L - fun handleTankButtonClick() { - scope.launch { - if (tank.userTankCrossRef.tankId == 0L) { - viewModel.saveUserTank() - } - } - } + val coroutineScope = rememberCoroutineScope() Column( modifier = Modifier.padding(0.dp, 10.dp) @@ -177,11 +176,12 @@ fun ColumnItem( colors = ButtonDefaults.buttonColors( containerColor = CustomRed, contentColor = CustomDark), - onClick = { handleTankButtonClick() } + onClick = { + coroutineScope.launch { + purchaseTankViewModel.savePurchase(tank.tankId, userId) + } + } ) { - //navController?.navigate(Screen.Hangar.route) - //navController?.navigate(studentId) - //"${student.firstName} ${student.lastName}" Text(text = stringResource(id = R.string.purchase_button)) } } @@ -212,6 +212,7 @@ fun ColumnItem( @OptIn(ExperimentalMaterial3Api::class) @Composable private fun TankList( + purchaseTankViewModel: PurchaseTankViewModel, nations: NationsListUiState, listTanks: List, viewModel: UsersTanksEditViewModel, @@ -257,7 +258,7 @@ private fun TankList( } items(nations.nationList) {nation -> - ColumnItem(nation = nation, tanks = totalDictionary[nation], onClick = onClick, viewModel = viewModel) + ColumnItem(purchaseTankViewModel = purchaseTankViewModel, nation = nation, tanks = totalDictionary[nation], onClick = onClick, viewModel = viewModel) } // items(list/array) places number of @@ -279,6 +280,7 @@ fun TankListPreview() { color = CustomDark ) { TankList( + purchaseTankViewModel = viewModel(factory = AppViewModelProvider.Factory), nations = NationsListUiState(listOf()), viewModel = viewModel(factory = AppViewModelProvider.Factory), listTanks = (1..20).map { i -> Tank.getTank(i.toLong()) } @@ -296,6 +298,7 @@ fun TankEmptyListPreview() { color = CustomDark ) { TankList( + purchaseTankViewModel = viewModel(factory = AppViewModelProvider.Factory), nations = NationsListUiState(listOf()), viewModel = viewModel(factory = AppViewModelProvider.Factory), listTanks = listOf() diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/BuyTankViewModel.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/BuyTankViewModel.kt deleted file mode 100644 index 816cc65..0000000 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/BuyTankViewModel.kt +++ /dev/null @@ -1,4 +0,0 @@ -package ru.ulstu.`is`.pmu.tank.composeui.edit - -class BuyTankViewModel { -} \ No newline at end of file diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/PurchaseTankViewModel.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/PurchaseTankViewModel.kt new file mode 100644 index 0000000..421293c --- /dev/null +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/composeui/edit/PurchaseTankViewModel.kt @@ -0,0 +1,61 @@ +package ru.ulstu.`is`.pmu.tank.composeui.edit + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.lifecycle.SavedStateHandle +import androidx.lifecycle.ViewModel +import ru.ulstu.`is`.pmu.tank.model.UserTankCrossRef +import ru.ulstu.`is`.pmu.tank.repository.TankRepository +import java.util.Calendar +import java.util.Date + +class PurchaseTankViewModel ( + savedStateHandle: SavedStateHandle, + private val tankRepository: TankRepository +) : ViewModel() { + /*var purchaseUiState by mutableStateOf(PurchaseUiState()) + private set*/ + + suspend fun savePurchase(tankId: Long, userId: Long){ + if(tankId > 0 && userId > 0){ + tankRepository.buyTank(tankId, userId, Calendar.getInstance().time) + } + } + + /*private fun validateInput(uiState: PurchaseDetails = purchaseUiState.purchaseDetails): Boolean { + return with(uiState) { + userId > 0 + && tankId > 0 + } + }*/ +} + +/* +data class PurchaseUiState( + val purchaseDetails: PurchaseDetails = PurchaseDetails(), + val isEntryValid: Boolean = false +) + +data class PurchaseDetails( + val userId: Long = 0, + val tankId: Long = 0, + val date: Date = Calendar.getInstance().time, +) + +fun PurchaseDetails.toUserTankCrossRef(): UserTankCrossRef = UserTankCrossRef( + userId = userId, + tankId = tankId, + date = date +) + +fun UserTankCrossRef.toDetails(): PurchaseDetails = PurchaseDetails( + userId = userId, + tankId = tankId, + date = date +) + +fun UserTankCrossRef.toUiState(isEntryValid: Boolean = false) : PurchaseUiState = PurchaseUiState( + purchaseDetails = this.toDetails(), + isEntryValid = isEntryValid +)*/ \ No newline at end of file diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt index 013d53e..758ad03 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/database/AppDatabase.kt @@ -52,7 +52,7 @@ abstract class AppDatabase : RoomDatabase() { abstract fun remoteKeysDao(): RemoteKeysDao companion object { - private const val DB_NAME: String = "25-db" + private const val DB_NAME: String = "27-db" @Volatile private var INSTANCE: AppDatabase? = null diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/model/UserTankCrossRef.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/model/UserTankCrossRef.kt index 52c0810..38df29c 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tank/model/UserTankCrossRef.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tank/model/UserTankCrossRef.kt @@ -1,5 +1,6 @@ package ru.ulstu.`is`.pmu.tank.model +import android.graphics.Bitmap import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.ForeignKey @@ -12,17 +13,26 @@ import java.util.Date //many to many for user and tank @Entity( tableName = "users_tanks", - primaryKeys = ["userId", "tankId"] ) data class UserTankCrossRef( + @PrimaryKey(autoGenerate = true) + val id: Long?, val userId: Long, val tankId: Long, @ColumnInfo(name = "date") val date: Date, ){ + @Ignore + constructor( + userId: Long, + tankId: Long, + date: Date, + ) : this(null, userId, tankId, date) + companion object { fun getEmpty(): UserTankCrossRef { return UserTankCrossRef( + id = 0, userId = 0, tankId = 0, date = Date() @@ -36,6 +46,7 @@ data class UserTankCrossRef( other as UserTankCrossRef + if (id != other.id) return false if (userId != other.userId) return false if (tankId != other.tankId) return false if (date != other.date) return false @@ -44,7 +55,8 @@ data class UserTankCrossRef( } override fun hashCode(): Int { - var result = userId.hashCode() + var result = id.hashCode() + result = 31 * result + userId.hashCode() result = 31 * result + tankId.hashCode() result = 31 * result + date.hashCode() return result diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt index f347887..fbcd56a 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/tanks/composeui/Hangar.kt @@ -87,7 +87,7 @@ private fun Hangar( ) { var supportSizeRow = 1 - if(n == supportCountRow && supportSizeRow % 2 != 0 && tankList.size != 2){ + if(n == supportCountRow && index + supportSizeRow == tankList.size){ supportSizeRow = 0 } diff --git a/compose/app/src/main/java/ru/ulstu/is/pmu/ui/AppViewModelProvider.kt b/compose/app/src/main/java/ru/ulstu/is/pmu/ui/AppViewModelProvider.kt index d60bb2e..9558347 100644 --- a/compose/app/src/main/java/ru/ulstu/is/pmu/ui/AppViewModelProvider.kt +++ b/compose/app/src/main/java/ru/ulstu/is/pmu/ui/AppViewModelProvider.kt @@ -9,6 +9,7 @@ import ru.ulstu.`is`.pmu.TankApplication import ru.ulstu.`is`.pmu.tank.composeui.edit.LevelDropDownViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.NationDropDownViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.NationsListUiState +import ru.ulstu.`is`.pmu.tank.composeui.edit.PurchaseTankViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.ReportViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.TankEditViewModel import ru.ulstu.`is`.pmu.tank.composeui.edit.UserEditViewModel @@ -30,6 +31,12 @@ object AppViewModelProvider { tankApplication().container.tankRestRepository ) } + initializer { + PurchaseTankViewModel( + this.createSavedStateHandle(), + tankApplication().container.tankRestRepository + ) + } initializer { UserEditViewModel( this.createSavedStateHandle(), diff --git a/compose/server/data.json b/compose/server/data.json index ec57225..0646c29 100644 --- a/compose/server/data.json +++ b/compose/server/data.json @@ -209,37 +209,44 @@ ], "users_tanks": [ { - "id": 100, + "id": 1, + "userId": 100, "tankId": 1, "date": "2023-12-12T12:06:14.720+0000" }, { - "id": 100, + "id": 2, + "userId": 100, "tankId": 5, "date": "2023-12-13T12:06:14.720+0000" }, { - "id": 100, + "id": 3, + "userId": 100, "tankId": 6, "date": "2023-12-14T12:06:14.720+0000" }, { - "id": 101, + "id": 4, + "userId": 101, "tankId": 6, "date": "2023-12-15T12:06:14.720+0000" }, { - "id": 101, + "id": 5, + "userId": 101, "tankId": 11, "date": "2023-12-16T12:06:14.720+0000" }, { - "id": 102, + "id": 6, + "userId": 102, "tankId": 6, "date": "2023-12-17T12:06:14.720+0000" }, { - "id": 102, + "id": 7, + "userId": 102, "tankId": 1, "date": "2023-12-18T12:06:14.720+0000" }