From d40de4701ade64da39dc31f8cd41fdfade7cb6f7 Mon Sep 17 00:00:00 2001 From: Danya_Mochalov Date: Wed, 11 Oct 2023 10:27:20 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B0=D0=BB=20=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D1=83=D1=8E!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shawarma/models/DiscountProductModel.kt | 15 +++++ .../com/example/shawarma/models/OrderModel.kt | 34 +++++++++++ .../example/shawarma/models/ProductModel.kt | 19 ++++++ .../com/example/shawarma/models/Status.kt | 5 ++ .../com/example/shawarma/models/UserModel.kt | 8 +++ .../example/shawarma/screens/MainNavBar.kt | 2 +- .../shawarma/screens/cart/CartScreen.kt | 41 +++++++++---- .../screens/discount/DiscountScreen.kt | 37 +++++++----- .../shawarma/screens/home/HomeScreen.kt | 35 ++++++----- .../shawarma/screens/orders/OrdersScreen.kt | 58 +++++++++++++------ 10 files changed, 193 insertions(+), 61 deletions(-) create mode 100644 app/src/main/java/com/example/shawarma/models/DiscountProductModel.kt create mode 100644 app/src/main/java/com/example/shawarma/models/OrderModel.kt create mode 100644 app/src/main/java/com/example/shawarma/models/ProductModel.kt create mode 100644 app/src/main/java/com/example/shawarma/models/Status.kt create mode 100644 app/src/main/java/com/example/shawarma/models/UserModel.kt diff --git a/app/src/main/java/com/example/shawarma/models/DiscountProductModel.kt b/app/src/main/java/com/example/shawarma/models/DiscountProductModel.kt new file mode 100644 index 0000000..a1e4bdf --- /dev/null +++ b/app/src/main/java/com/example/shawarma/models/DiscountProductModel.kt @@ -0,0 +1,15 @@ +package com.example.shawarma.models + +data class DiscountProductModel( + val id: Int, + val title: String, + val oldPrice: Int, + val newPrice: Int +) + +fun getAllDiscountProducts() : List { + return listOf( + DiscountProductModel(1, "Шаурма", 150, 120), + DiscountProductModel(1, "Шаурма", 150, 120) + ) +} diff --git a/app/src/main/java/com/example/shawarma/models/OrderModel.kt b/app/src/main/java/com/example/shawarma/models/OrderModel.kt new file mode 100644 index 0000000..93dedc0 --- /dev/null +++ b/app/src/main/java/com/example/shawarma/models/OrderModel.kt @@ -0,0 +1,34 @@ +package com.example.shawarma.models + +import java.util.Date + + +data class OrderModel( + val id: Int, + val status: OrderStatus, + val productsId: HashMap, + val userId: Int, + val date: Date +) + +fun getOrdersByUserId() : List { + val map1 = HashMap() + map1[ProductModel(1, "Классика", 150)] = 2 + + val map2 = HashMap() + map2[ProductModel(1, "Классика", 150)] = 2 + return listOf( + OrderModel(1, OrderStatus.Unpaid, map1, 1, Date()), + OrderModel(2, OrderStatus.Preparing, map2 , 1, Date()) + ) +} + +fun getAllOrders() : List { + val map1 = HashMap() + map1[ProductModel(1, "Классика", 150)] = 2 + return listOf( + OrderModel(1, OrderStatus.Prepared, map1, 1, Date()), + OrderModel(2, OrderStatus.Preparing, map1 , 1, Date()), + OrderModel(2, OrderStatus.Processed, map1 , 1, Date()) + ) +} diff --git a/app/src/main/java/com/example/shawarma/models/ProductModel.kt b/app/src/main/java/com/example/shawarma/models/ProductModel.kt new file mode 100644 index 0000000..018a371 --- /dev/null +++ b/app/src/main/java/com/example/shawarma/models/ProductModel.kt @@ -0,0 +1,19 @@ +package com.example.shawarma.models + +data class ProductModel( + val id: Int, + val title: String, + val price: Int +) + +fun getProducts() :List { + return listOf( + ProductModel(1, "Классика", 150), + ProductModel(1, "Классика", 150), + ProductModel(1, "Классика", 150), + ProductModel(1, "Классика", 150), + ProductModel(1, "Классика", 150), + ProductModel(1, "Классика", 150), + ) + +} diff --git a/app/src/main/java/com/example/shawarma/models/Status.kt b/app/src/main/java/com/example/shawarma/models/Status.kt new file mode 100644 index 0000000..6ce4153 --- /dev/null +++ b/app/src/main/java/com/example/shawarma/models/Status.kt @@ -0,0 +1,5 @@ +package com.example.shawarma.models + +enum class OrderStatus { + Unpaid, Preparing, Prepared, Processed +} \ No newline at end of file diff --git a/app/src/main/java/com/example/shawarma/models/UserModel.kt b/app/src/main/java/com/example/shawarma/models/UserModel.kt new file mode 100644 index 0000000..fb24648 --- /dev/null +++ b/app/src/main/java/com/example/shawarma/models/UserModel.kt @@ -0,0 +1,8 @@ +package com.example.shawarma.models + +data class UserModel( + val id: Int, + val login: String, + val password: String, + val role: String +) diff --git a/app/src/main/java/com/example/shawarma/screens/MainNavBar.kt b/app/src/main/java/com/example/shawarma/screens/MainNavBar.kt index 06ac37a..ebf6b4f 100644 --- a/app/src/main/java/com/example/shawarma/screens/MainNavBar.kt +++ b/app/src/main/java/com/example/shawarma/screens/MainNavBar.kt @@ -36,7 +36,7 @@ fun MainNavBar() { BottomNavBar(navController = navController) } } - ) {scaffoldPadding -> + ) { NavHost(navController = navController, startDestination = ScreenPaths.authorization.name) { composable(ScreenPaths.authorization.name) { AuthorizationScreen(navController) diff --git a/app/src/main/java/com/example/shawarma/screens/cart/CartScreen.kt b/app/src/main/java/com/example/shawarma/screens/cart/CartScreen.kt index e97ed92..bf877af 100644 --- a/app/src/main/java/com/example/shawarma/screens/cart/CartScreen.kt +++ b/app/src/main/java/com/example/shawarma/screens/cart/CartScreen.kt @@ -38,6 +38,9 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex import com.example.shawarma.R +import com.example.shawarma.models.OrderModel +import com.example.shawarma.models.OrderStatus +import com.example.shawarma.models.getOrdersByUserId import com.example.shawarma.ui.theme.MarckFamily import com.example.shawarma.ui.theme.MyLightRed import com.example.shawarma.ui.theme.MyMainBackground @@ -57,6 +60,20 @@ fun CartScreen() { @Composable fun CartWidget(){ + + val orders = getOrdersByUserId() + val unpaidOrders = mutableListOf() + val preparingOrders = mutableListOf() + + for(order in orders) { + if (order.status == OrderStatus.Unpaid) { + unpaidOrders.add(order) + } + if (order.status == OrderStatus.Preparing) { + preparingOrders.add(order) + } + } + Box( modifier = Modifier .clip(shape = RoundedCornerShape(30.dp)) @@ -93,8 +110,8 @@ fun CartWidget(){ .width(340.dp) .height(200.dp) ) { - items(2) { - PaidItem() + items(preparingOrders.size * 2) { + PaidItem(preparingOrders[0]) } } Text( @@ -109,8 +126,8 @@ fun CartWidget(){ .width(340.dp) .height(200.dp) ) { - items(2) { - CartItem() + items(unpaidOrders.size * 2) { + PaidItem(unpaidOrders[0]) } } @@ -141,7 +158,7 @@ fun CartWidget(){ } @Composable -fun PaidItem() { +fun PaidItem(order : OrderModel) { Card( border = BorderStroke(width = 2.dp, color = MyOrange), shape = RoundedCornerShape(size = 20.dp), @@ -156,21 +173,21 @@ fun PaidItem() { .padding(horizontal = 20.dp) ){ Text( - text = "Классика", + text = order.productsId.keys.first().title, fontFamily = NunitoFamily, fontSize = 20.sp, modifier = Modifier.padding(top = 15.dp), fontWeight = FontWeight.Bold ) Text( - text = "x2", + text = "x" + order.productsId.values.first().toString(), fontFamily = NunitoFamily, fontSize = 20.sp, modifier = Modifier.padding(top = 15.dp), fontWeight = FontWeight.Bold ) Text( - text = "300 руб.", + text = order.productsId.keys.first().price.toString() + " руб.", fontFamily = NunitoFamily, fontSize = 20.sp, modifier = Modifier.padding(top = 15.dp), @@ -207,7 +224,7 @@ fun PaidItem() { } @Composable -fun CartItem() { +fun CartItem(order : OrderModel) { Card( border = BorderStroke(width = 2.dp, color = MyOrange), shape = RoundedCornerShape(size = 20.dp), @@ -228,20 +245,20 @@ fun CartItem() { modifier = Modifier.fillMaxWidth() ){ Text( - text = "Кока-кола", + text = order.productsId.keys.first().title, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold ) Text( - text = "x2", + text = "x" + order.productsId.values.first().toString(), fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold ) } Text( - text = "300 руб.", + text = order.productsId.keys.first().price.toString() + " руб.", fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold diff --git a/app/src/main/java/com/example/shawarma/screens/discount/DiscountScreen.kt b/app/src/main/java/com/example/shawarma/screens/discount/DiscountScreen.kt index a6b066e..f34cab7 100644 --- a/app/src/main/java/com/example/shawarma/screens/discount/DiscountScreen.kt +++ b/app/src/main/java/com/example/shawarma/screens/discount/DiscountScreen.kt @@ -31,6 +31,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex import com.example.shawarma.R +import com.example.shawarma.models.DiscountProductModel +import com.example.shawarma.models.getAllDiscountProducts import com.example.shawarma.screens.home.HomeList import com.example.shawarma.ui.theme.MarckFamily import com.example.shawarma.ui.theme.MyLightYellow @@ -53,6 +55,9 @@ fun DiscountScreen() { @Composable fun DiscountList(){ + + val products = getAllDiscountProducts() + Box( modifier = Modifier .clip(shape = RoundedCornerShape(30.dp)) @@ -74,19 +79,19 @@ fun DiscountList(){ modifier = Modifier.padding(top = 80.dp) ) { - items(3) { index -> - Row( - horizontalArrangement = Arrangement.SpaceAround, - modifier = Modifier - .fillMaxWidth() - .padding(top = 10.dp) - ) { - DiscountCard() - DiscountCard() + items(products.size) { index -> + if (index % 2 != 1) { + Row( + horizontalArrangement = Arrangement.SpaceAround, + modifier = Modifier + .fillMaxWidth() + .padding(top = 10.dp) + ) { + DiscountCard(products[index]) + DiscountCard(products[index+1]) + } } - - // TODO Потом переделать под реальный объем данных - if (index == 2) { + if (index == products.size - 1) { Spacer(modifier = Modifier.height(70.dp)) } } @@ -95,7 +100,7 @@ fun DiscountList(){ } @Composable -fun DiscountCard(){ +fun DiscountCard(product : DiscountProductModel){ Card( shape = RoundedCornerShape(20.dp), backgroundColor = Color.White, @@ -107,7 +112,7 @@ fun DiscountCard(){ horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "Классика", + text = product.title, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold, @@ -132,14 +137,14 @@ fun DiscountCard(){ modifier = Modifier.padding(start = 12.dp) ) { Text( - text = "150 руб. ", + text = product.oldPrice.toString() + "руб. ", fontFamily = NunitoFamily, fontSize = 10.sp, fontWeight = FontWeight.Bold, textDecoration = TextDecoration.LineThrough ) Text( - text = "120 руб. ", + text = product.newPrice.toString() + "руб. ", fontFamily = NunitoFamily, fontSize = 16.sp, fontWeight = FontWeight.ExtraBold, diff --git a/app/src/main/java/com/example/shawarma/screens/home/HomeScreen.kt b/app/src/main/java/com/example/shawarma/screens/home/HomeScreen.kt index f29b352..44d3000 100644 --- a/app/src/main/java/com/example/shawarma/screens/home/HomeScreen.kt +++ b/app/src/main/java/com/example/shawarma/screens/home/HomeScreen.kt @@ -31,6 +31,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex import com.example.shawarma.R +import com.example.shawarma.models.ProductModel +import com.example.shawarma.models.getProducts import com.example.shawarma.ui.theme.MarckFamily import com.example.shawarma.ui.theme.MyLightYellow import com.example.shawarma.ui.theme.MyMainBackground @@ -51,6 +53,9 @@ fun HomeScreen() { @Composable fun HomeList(){ + + val products = getProducts() + Box( modifier = Modifier .clip(shape = RoundedCornerShape(30.dp)) @@ -72,19 +77,19 @@ fun HomeList(){ modifier = Modifier.padding(top = 80.dp) ) { - items(3) { index -> - Row( - horizontalArrangement = Arrangement.SpaceAround, - modifier = Modifier - .fillMaxWidth() - .padding(top = 10.dp) - ) { - ProductCard() - ProductCard() + items(products.size) { index -> + if (index % 2 != 1) { + Row( + horizontalArrangement = Arrangement.SpaceAround, + modifier = Modifier + .fillMaxWidth() + .padding(top = 10.dp) + ) { + ProductCard(products[index]) + ProductCard(products[index + 1]) + } } - - // TODO Потом переделать под реальный объем данных - if (index == 2) { + if (index == products.size - 1) { Spacer(modifier = Modifier.height(70.dp)) } } @@ -93,7 +98,7 @@ fun HomeList(){ } @Composable -fun ProductCard(){ +fun ProductCard(product: ProductModel){ Card( shape = RoundedCornerShape(20.dp), backgroundColor = Color.White, @@ -105,7 +110,7 @@ fun ProductCard(){ horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "Классика", + text = product.title, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold, @@ -127,7 +132,7 @@ fun ProductCard(){ Row( ){ Text( - text = "150 руб. ", + text = product.price.toString() + " руб.", fontFamily = NunitoFamily, fontSize = 16.sp, fontWeight = FontWeight.ExtraBold, diff --git a/app/src/main/java/com/example/shawarma/screens/orders/OrdersScreen.kt b/app/src/main/java/com/example/shawarma/screens/orders/OrdersScreen.kt index 62a9d9a..ee7beb7 100644 --- a/app/src/main/java/com/example/shawarma/screens/orders/OrdersScreen.kt +++ b/app/src/main/java/com/example/shawarma/screens/orders/OrdersScreen.kt @@ -20,27 +20,26 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.Button import androidx.compose.material.ButtonDefaults import androidx.compose.material.Card -import androidx.compose.material.Icon import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment -import androidx.compose.ui.Alignment.Companion.TopCenter import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.zIndex -import com.example.shawarma.R +import com.example.shawarma.models.OrderModel +import com.example.shawarma.models.OrderStatus +import com.example.shawarma.models.getAllOrders import com.example.shawarma.ui.theme.MarckFamily -import com.example.shawarma.ui.theme.MyLightRed import com.example.shawarma.ui.theme.MyLightYellow import com.example.shawarma.ui.theme.MyMainBackground import com.example.shawarma.ui.theme.MyOrange import com.example.shawarma.ui.theme.NunitoFamily import com.example.shawarma.widgets.ShawarmaLogo2 +import java.text.SimpleDateFormat @Composable fun OrdersScreen() { @@ -54,6 +53,25 @@ fun OrdersScreen() { @Composable fun OrdersList(){ + + val allOrders = getAllOrders() + val preparingOrders = mutableListOf() + val preparedOrders = mutableListOf() + val processedOrders = mutableListOf() + + for (order in allOrders){ + if (order.status == OrderStatus.Preparing) { + preparingOrders.add(order) + } + if (order.status == OrderStatus.Prepared) { + preparedOrders.add(order) + } + if (order.status == OrderStatus.Processed) { + processedOrders.add(order) + } + } + + Box( modifier = Modifier .clip(shape = RoundedCornerShape(30.dp)) @@ -90,8 +108,9 @@ fun OrdersList(){ .width(340.dp) .height(250.dp) ) { - items(2) { - PreparingItem() + items(preparingOrders.size) { + index -> + PreparingItem(preparedOrders[index]) } } Text( @@ -106,8 +125,9 @@ fun OrdersList(){ .width(340.dp) .height(250.dp) ) { - items(2) { - PreparedItem() + items(preparedOrders.size) { + index -> + PreparedItem(preparedOrders[index]) } } Text( @@ -134,7 +154,7 @@ fun OrdersList(){ } @Composable -fun PreparingItem(){ +fun PreparingItem(order : OrderModel){ Card( border = BorderStroke(width = 2.dp, color = MyOrange), shape = RoundedCornerShape(size = 20.dp), @@ -150,8 +170,10 @@ fun PreparingItem(){ modifier = Modifier.fillMaxWidth(0.5f) ){ + val localDateFormat = SimpleDateFormat("HH:mm") + val time = localDateFormat.format(order.date) Text( - text = "16:24", + text = time, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold @@ -161,13 +183,13 @@ fun PreparingItem(){ modifier = Modifier.fillMaxWidth() ){ Text( - text = "Классика", + text = order.productsId.keys.first().title, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold ) Text( - text = "x2", + text = "x" + order.productsId.values.first().toString(), fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold @@ -200,7 +222,7 @@ fun PreparingItem(){ } @Composable -fun PreparedItem(){ +fun PreparedItem(order : OrderModel){ Card( border = BorderStroke(width = 2.dp, color = MyOrange), shape = RoundedCornerShape(size = 20.dp), @@ -216,8 +238,10 @@ fun PreparedItem(){ modifier = Modifier.fillMaxWidth(0.5f) ){ + val localDateFormat = SimpleDateFormat("HH:mm") + val time = localDateFormat.format(order.date) Text( - text = "16:24", + text = time, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold @@ -227,13 +251,13 @@ fun PreparedItem(){ modifier = Modifier.fillMaxWidth() ){ Text( - text = "Классика", + text = order.productsId.keys.first().title, fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold ) Text( - text = "x2", + text = "x" + order.productsId.values.first().toString(), fontFamily = NunitoFamily, fontSize = 20.sp, fontWeight = FontWeight.Bold