diff --git a/app/src/main/java/com/example/myapplication/api/cinema/RestCinemaRepository.kt b/app/src/main/java/com/example/myapplication/api/cinema/RestCinemaRepository.kt index d699354..154e3dc 100644 --- a/app/src/main/java/com/example/myapplication/api/cinema/RestCinemaRepository.kt +++ b/app/src/main/java/com/example/myapplication/api/cinema/RestCinemaRepository.kt @@ -59,7 +59,7 @@ class RestCinemaRepository( order.sessions.filter { session -> session.id == sessionFromCinemaRemote.id && session.cinemaId == sessionFromCinemaRemote.cinemaId && - session.cinema.name == cinemaWithSessions.name + session.dateTime == sessionFromCinemaRemote.dateTime } }.sumOf { session -> session.count }, uid diff --git a/app/src/main/java/com/example/myapplication/api/user/RestUserRepository.kt b/app/src/main/java/com/example/myapplication/api/user/RestUserRepository.kt index b6b25ee..7a8c46c 100644 --- a/app/src/main/java/com/example/myapplication/api/user/RestUserRepository.kt +++ b/app/src/main/java/com/example/myapplication/api/user/RestUserRepository.kt @@ -41,7 +41,11 @@ class RestUserRepository( val cinema = service.getCinema(it.session.cinemaId) it.toSessionFromCart( it.session.maxCount - service.getOrders().flatMap { order -> - order.sessions.filter { session -> session.id == it.id } + order.sessions.filter { session -> + session.id == it.id && + session.dateTime == it.session.dateTime && + session.cinemaId == it.session.cinemaId + } }.sumOf { session -> session.count }, cinema.toCinema() ) } diff --git a/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt b/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt index f6a322b..ae8f45f 100644 --- a/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt +++ b/app/src/main/java/com/example/myapplication/composeui/navigation/MainNavbar.kt @@ -163,7 +163,7 @@ fun Navhost( composable(Screen.CinemaList.route) { CinemaList(navController) } composable(Screen.OrderList.route) { OrderList(navController) } composable(Screen.Cart.route) { Cart() } - composable(Screen.UserProfile.route) { UserProfile(isDarkTheme, dataStore, navController) } + composable(Screen.UserProfile.route) { UserProfile(isDarkTheme, dataStore) } composable( Screen.CinemaEdit.route, arguments = listOf(navArgument("id") { type = NavType.IntType }) diff --git a/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfile.kt b/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfile.kt index 9953f0a..eb0c5f8 100644 --- a/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfile.kt +++ b/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfile.kt @@ -18,6 +18,7 @@ import androidx.compose.material3.Switch import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -32,9 +33,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import androidx.navigation.NavController import com.example.myapplication.LiveStore -import com.example.myapplication.composeui.navigation.Screen import com.example.myapplication.datastore.DataStoreManager import kotlinx.coroutines.launch @@ -42,7 +41,6 @@ import kotlinx.coroutines.launch fun UserProfile( isDarkTheme: MutableState, dataStoreManager: DataStoreManager, - navController: NavController, viewModel: UserProfileViewModel = viewModel(factory = AppViewModelProvider.Factory), ) { var isRegistration by remember { mutableStateOf(false) } @@ -52,11 +50,14 @@ fun UserProfile( if (errorStringId == null || errorStringId == 0) "" else stringResource(errorStringId) val user = LiveStore.user.observeAsState() + LaunchedEffect(errorStringId) { + if (errorStringId == 0) { + isRegistration = false + } + } + LazyColumn { item { - if (errorStringId == 0) { - navController.navigate(Screen.CinemaList.route) - } if (user.value != null) { Column( modifier = Modifier @@ -174,7 +175,11 @@ fun UserProfile( ) } else { Button( - onClick = { coroutine.launch { viewModel.signIn(dataStoreManager) } }, + onClick = { + coroutine.launch { + viewModel.signIn(dataStoreManager) + } + }, modifier = Modifier .fillMaxWidth() .padding(8.dp) diff --git a/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfileViewModel.kt b/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfileViewModel.kt index f64ab8d..6584bd6 100644 --- a/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfileViewModel.kt +++ b/app/src/main/java/com/example/myapplication/database/entities/composeui/UserProfileViewModel.kt @@ -1,5 +1,6 @@ package com.example.myapplication.database.entities.composeui +import android.util.Log import android.widget.Toast import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -35,11 +36,11 @@ class UserProfileViewModel( errorId = R.string.err_04 } else { dataStoreManager.setLogin(userUiState.details.login) - errorId = 0 + Log.d("UserProfileViewModel", "sign in success") } } userUiState = UserUiState( - details = userUiState.details, + details = UserDetails(), errorId = errorId ) }, actionError = { @@ -60,10 +61,6 @@ class UserProfileViewModel( errorId = R.string.err_03 } } - userUiState = UserUiState( - details = userUiState.details, - errorId = errorId - ) if (errorId == null) { userRepository.insertUser(userUiState.details.toUser()) val toast = Toast.makeText( @@ -72,7 +69,12 @@ class UserProfileViewModel( Toast.LENGTH_SHORT ) toast.show() + errorId = 0 } + userUiState = UserUiState( + details = userUiState.details, + errorId = errorId + ) }, actionError = { errorId = R.string.err_06 userUiState = UserUiState( diff --git a/server/data.json b/server/data.json index 978660b..218380a 100644 --- a/server/data.json +++ b/server/data.json @@ -17,12 +17,6 @@ "password": "qqq", "role": 0, "id": 3 - }, - { - "login": "qweq", - "password": "qweq", - "role": 0, - "id": 4 } ], "userssessions": [ diff --git a/server/reportRouter.js b/server/reportRouter.js index 7b77022..7864dc6 100644 --- a/server/reportRouter.js +++ b/server/reportRouter.js @@ -8,7 +8,7 @@ module.exports = (req, res, next) => { try { const { startDate, endDate } = req.query; - const { sessions, orders } = require('./data.json'); + const { cinemas, sessions, orders } = require('./data.json'); const start = new Date(startDate); const end = new Date(endDate); @@ -42,8 +42,9 @@ module.exports = (req, res, next) => { }; }, { totalTicketsSold: 0, revenue: 0 }); + const cinema = cinemas.find(cinema => cinema.id === session.cinemaId) return { - cinema_name: relevantOrders[0].sessions[0].cinema.name, + cinema_name: cinema ? cinema.name : "Unknown", current_ticket_date_time: session.dateTime, current_ticket_price: session.price, max_ticket_quantity: session.maxCount,