diff --git a/app/src/main/java/com/example/labwork/button_navigation/Screens.kt b/app/src/main/java/com/example/labwork/button_navigation/Screens.kt index 29fd5e0..fb697fa 100644 --- a/app/src/main/java/com/example/labwork/button_navigation/Screens.kt +++ b/app/src/main/java/com/example/labwork/button_navigation/Screens.kt @@ -13,6 +13,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import com.example.labwork.database.DAO.BicycleDao +import com.example.labwork.database.DAO.UserDao import com.example.labwork.models.Bicycle import com.example.labwork.pages.ListInfo import com.example.labwork.pages.product.FormNewProduct @@ -27,8 +28,8 @@ fun ScreenInfo() { } @Composable -fun ScreenProfile() { - RegisteryOrLogin() +fun ScreenProfile(userDao: UserDao, navHostController: NavHostController) { + RegisteryOrLogin(userDao, navHostController) } diff --git a/app/src/main/java/com/example/labwork/button_navigation/SlideGraph.kt b/app/src/main/java/com/example/labwork/button_navigation/SlideGraph.kt index 7e510df..6605732 100644 --- a/app/src/main/java/com/example/labwork/button_navigation/SlideGraph.kt +++ b/app/src/main/java/com/example/labwork/button_navigation/SlideGraph.kt @@ -18,7 +18,7 @@ fun SlideGraph( NavHost(navController = navHostController, startDestination = "Profile"){ composable("Profile"){ - ScreenProfile() + ScreenProfile(userDao, navHostController = navHostController) } composable("Info"){ ScreenInfo() diff --git a/app/src/main/java/com/example/labwork/database/AppDatabase.kt b/app/src/main/java/com/example/labwork/database/AppDatabase.kt index 6173e7c..9c4b5d2 100644 --- a/app/src/main/java/com/example/labwork/database/AppDatabase.kt +++ b/app/src/main/java/com/example/labwork/database/AppDatabase.kt @@ -51,8 +51,8 @@ abstract class AppDatabase : RoomDatabase() { val bicycleDao = database.bicycleDao() // Создание пользователей - val user1 = User(1, "John Doe", "john.doe@example.com", "password123") - val user2 = User(2, "Jane Smith", "jane.smith@example.com", "password456") + val user1 = User(null, "John Doe", "john.doe@example.com", "password123") + val user2 = User(null, "Jane Smith", "jane.smith@example.com", "password456") // Вставка пользователей в базу данных userDao.insertUser(user1) diff --git a/app/src/main/java/com/example/labwork/models/User.kt b/app/src/main/java/com/example/labwork/models/User.kt index 6a9a461..d04af7e 100644 --- a/app/src/main/java/com/example/labwork/models/User.kt +++ b/app/src/main/java/com/example/labwork/models/User.kt @@ -6,7 +6,8 @@ import androidx.room.PrimaryKey @Entity(tableName = "users") data class User( - @PrimaryKey val id: Int, + @PrimaryKey(autoGenerate = true) + val id: Int?, val name: String, val email: String, val password: String, diff --git a/app/src/main/java/com/example/labwork/pages/user/RegOrLog.kt b/app/src/main/java/com/example/labwork/pages/user/RegOrLog.kt index 1f15b72..7ae44f3 100644 --- a/app/src/main/java/com/example/labwork/pages/user/RegOrLog.kt +++ b/app/src/main/java/com/example/labwork/pages/user/RegOrLog.kt @@ -30,14 +30,17 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController +import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.labwork.R +import com.example.labwork.database.DAO.BicycleDao +import com.example.labwork.database.DAO.UserDao import com.example.labwork.ui.theme.LightBluePolitech @Composable -fun RegisteryOrLogin() { +fun RegisteryOrLogin(userDao: UserDao, navHostController: NavHostController) { val navController = rememberNavController() NavHost(navController, startDestination = "login") { @@ -45,7 +48,7 @@ fun RegisteryOrLogin() { LoginPage(navController) } composable("register") { - RegisteryPage(navController) + RegisteryPage(navController, userDao, navHostController) } } } diff --git a/app/src/main/java/com/example/labwork/pages/user/RegisteryPage.kt b/app/src/main/java/com/example/labwork/pages/user/RegisteryPage.kt index 7c0ed58..58d8c9e 100644 --- a/app/src/main/java/com/example/labwork/pages/user/RegisteryPage.kt +++ b/app/src/main/java/com/example/labwork/pages/user/RegisteryPage.kt @@ -28,14 +28,22 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavController +import androidx.navigation.NavHostController import com.example.labwork.R +import com.example.labwork.database.DAO.BicycleDao +import com.example.labwork.database.DAO.UserDao +import com.example.labwork.models.Bicycle +import com.example.labwork.models.User import com.example.labwork.ui.theme.LightBluePolitech +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch @Composable -fun RegisteryPage(navController: NavController) { +fun RegisteryPage(navController: NavController, userDao: UserDao, navHostController: NavHostController) { var username by remember { mutableStateOf("") } var password by remember { mutableStateOf("") } var confirmPassword by remember { mutableStateOf("") } + var email by remember { mutableStateOf("") } Column( modifier = Modifier @@ -72,6 +80,27 @@ fun RegisteryPage(navController: NavController) { ) Spacer(modifier = Modifier.height(8.dp)) + TextField( + value = email, + onValueChange = { email = it }, + label = { Text("Почта") }, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp), + textStyle = TextStyle(fontSize = 16.sp), + colors = TextFieldDefaults.textFieldColors( + cursorColor = LightBluePolitech, + backgroundColor = Color.White, + textColor = LightBluePolitech, + unfocusedLabelColor = LightBluePolitech, + focusedIndicatorColor = LightBluePolitech, + unfocusedIndicatorColor = LightBluePolitech, + focusedLabelColor = LightBluePolitech + ), + singleLine = true + ) + Spacer(modifier = Modifier.height(8.dp)) + TextField( value = password, onValueChange = { password = it }, @@ -115,7 +144,15 @@ fun RegisteryPage(navController: NavController) { Spacer(modifier = Modifier.height(8.dp)) Button( - onClick = { /* Register logic */ }, + onClick = { + if (password == confirmPassword) { + GlobalScope.launch { + val newUser = User(null, name = username, email = email, password = password) + userDao.insertUser(newUser) + } + navController.navigate("login") + } + }, colors = ButtonDefaults.buttonColors(backgroundColor = LightBluePolitech), modifier = Modifier .fillMaxWidth()