Skip to content

Commit fb6ac73

Browse files
authored
Merge pull request #19 from VectorVanguard/main
New Updates
2 parents a5971ba + 1b94f8d commit fb6ac73

17 files changed

Lines changed: 130 additions & 34 deletions

app/src/main/java/com/example/projectfigma/Activity/FavoritesActivity.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ class FavoritesActivity : AppCompatActivity() {
2020
setContentView(binding.root)
2121
StatusBar.hideStatusBar(window)
2222

23-
val dateBase = DataBase.getDb(this)
24-
25-
val rv = findViewById<RecyclerView>(R.id.rvFoods).apply {
26-
layoutManager = GridLayoutManager(context, 2)
27-
}
28-
2923
supportFragmentManager.beginTransaction()
3024
.replace(R.id.buttonPanel, BottomPanelFragment())
3125
.commit()

app/src/main/java/com/example/projectfigma/Activity/RegActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ class RegActivity() : AppCompatActivity(){
8585
binding.passwordEditText.text.toString(),
8686
email,
8787
binding.mobileNumberEdit.text.toString(),
88-
selectedDate ?: Date()
88+
selectedDate ?: Date(),
89+
favoriteDishesId = emptyList()
8990
)
9091

9192
Thread {

app/src/main/java/com/example/projectfigma/Adapters/FavoriteDishesAdapter.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import android.widget.ImageView
77
import android.widget.TextView
88
import androidx.recyclerview.widget.RecyclerView
99
import com.bumptech.glide.Glide
10+
import com.example.projectfigma.DataBase.DataBase
1011
import com.example.projectfigma.Entites.Dishes
12+
import com.example.projectfigma.Entites.User
1113
import com.example.projectfigma.R
14+
import kotlin.coroutines.coroutineContext
1215

1316
class FavoriteFoodAdapter(
14-
private val items: MutableList<Dishes>
17+
private val items: MutableList<Dishes>,
18+
private val onFavoriteClick: (dish: Dishes) -> Unit
1519
) : RecyclerView.Adapter<FavoriteFoodAdapter.VH>() {
1620

1721
inner class VH(view: View) : RecyclerView.ViewHolder(view) {
@@ -34,16 +38,14 @@ class FavoriteFoodAdapter(
3438
holder.tvTitle.text = dish.name
3539
holder.tvDesc.text = dish.description
3640

37-
// загрузка изображения блюда
3841
Glide.with(holder.itemView)
3942
.load(dish.imageUri)
4043
.into(holder.imgFood)
4144

42-
// иконка категории
4345
holder.imgTag.setImageResource(dish.category.iconRes)
4446

45-
// иконка «избранное»— всегда заполнена
4647
holder.imgFavorite.setImageResource(R.drawable.ic_heart_border)
48+
holder.imgFavorite.setOnClickListener { onFavoriteClick(dish) }
4749
}
4850

4951
override fun getItemCount(): Int = items.size
@@ -54,4 +56,5 @@ class FavoriteFoodAdapter(
5456
items.addAll(newItems)
5557
notifyDataSetChanged()
5658
}
59+
5760
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.example.projectfigma.Converters
2+
3+
import androidx.room.TypeConverter
4+
5+
class ConvertersList {
6+
@TypeConverter
7+
fun fromIntList(value: List<Int>?): String = value?.joinToString(",") ?: ""
8+
@TypeConverter
9+
fun toIntList(value: String): List<Int> =
10+
if (value.isEmpty()) emptyList() else value.split(",").map { it.toInt() }
11+
}

app/src/main/java/com/example/projectfigma/DAO/DishesDao.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.room.OnConflictStrategy
77
import androidx.room.Query
88
import androidx.room.Update
99
import com.example.projectfigma.Entites.Dishes
10+
import com.example.projectfigma.Enums.DishCategory
1011

1112
@Dao
1213
interface DishesDao {
@@ -31,6 +32,12 @@ interface DishesDao {
3132
@Query("SELECT * FROM dishes b WHERE b.isRecommend = 1")
3233
fun getRecommend(): LiveData<List<Dishes>>
3334

35+
@Query("SELECT * FROM dishes d WHERE d.id = :id")
36+
fun getDishById(id : Int) : Dishes
37+
38+
@Query("SELECT * FROM dishes WHERE id IN (:ids)")
39+
fun getDishesByIds(ids: List<Int>): List<Dishes>
40+
3441
@Update
3542
suspend fun update(item: Dishes)
3643
}

app/src/main/java/com/example/projectfigma/DAO/UserDao.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ package com.example.projectfigma.DAO
22

33
import androidx.room.Dao
44
import androidx.room.Insert
5+
import androidx.room.OnConflictStrategy
56
import androidx.room.Query
67
import androidx.room.Update
8+
import com.example.projectfigma.Entites.Dishes
79
import com.example.projectfigma.Entites.User
810

911
@Dao
1012
interface UserDao {
1113

12-
@Insert
14+
@Insert(onConflict = OnConflictStrategy.REPLACE)
1315
fun insertUser(item: User)
1416

17+
@Insert(onConflict = OnConflictStrategy.REPLACE)
18+
fun insertAll(items: List<User>)
19+
1520
@Update
1621
fun updateUser(user: User)
1722

app/src/main/java/com/example/projectfigma/DataBase/DataBase.kt

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.example.projectfigma.DataBase
22

33
import android.content.Context
4+
import android.text.style.TtsSpan
45
import androidx.room.Database
56
import androidx.room.Room
67
import androidx.room.RoomDatabase
78
import androidx.room.TypeConverters
89
import androidx.sqlite.db.SupportSQLiteDatabase
910
import com.example.projectfigma.Converters.ConvertToDishesCategory
11+
import com.example.projectfigma.Converters.ConvertersList
1012
import com.example.projectfigma.DAO.DishesDao
1113
import com.example.projectfigma.DAO.SettingsDao
1214
import com.example.projectfigma.DAO.SessionDao
@@ -22,12 +24,17 @@ import kotlinx.coroutines.CoroutineScope
2224
import kotlinx.coroutines.Dispatchers
2325
import kotlinx.coroutines.SupervisorJob
2426
import kotlinx.coroutines.launch
27+
import java.util.Date
2528

2629
@Database(
2730
entities = [User::class, Dishes::class, Session::class, AppSettings::class],
28-
version = 5
31+
version = 6
32+
)
33+
@TypeConverters(
34+
ConvertersToDateTime::class,
35+
ConvertToDishesCategory::class,
36+
ConvertersList::class
2937
)
30-
@TypeConverters(ConvertersToDateTime::class, ConvertToDishesCategory::class)
3138
abstract class DataBase : RoomDatabase() {
3239

3340
abstract fun getUserDao(): UserDao
@@ -41,6 +48,17 @@ abstract class DataBase : RoomDatabase() {
4148

4249
private val applicationScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
4350

51+
private fun prepopulateUsers(): List<User> = listOf(
52+
User(
53+
name = "TestUser",
54+
gmail = "test@yandex.ru",
55+
password = "1111",
56+
mobileNumber = "818412481",
57+
dateOfBirth = Date(),
58+
favoriteDishesId = listOf(1,2,3)
59+
)
60+
)
61+
4462
private fun prepopulateBestSellers(packageName: String) = listOf(
4563
Dishes(
4664
imageUri = "android.resource://$packageName/${R.drawable.best_seller_card_1}",
@@ -92,6 +110,16 @@ abstract class DataBase : RoomDatabase() {
92110
description = "Бургер",
93111
category = DishCategory.MEAL
94112
),
113+
Dishes(
114+
imageUri = "android.resource://$packageName/${R.drawable.roll}",
115+
price = 25.0,
116+
isBestSeller = false,
117+
isRecommend = true,
118+
rating = 5.0,
119+
name = "Роллы",
120+
description = "Роллы",
121+
category = DishCategory.VEGAN
122+
),
95123
Dishes(
96124
imageUri = "android.resource://$packageName/${R.drawable.roll}",
97125
price = 25.0,
@@ -121,10 +149,16 @@ abstract class DataBase : RoomDatabase() {
121149
applicationScope.launch {
122150
val database = getDb(appContext)
123151

124-
val bestSellerDao = database.getDishesDao()
125-
if (bestSellerDao.getAll().isEmpty()) {
126-
bestSellerDao.insertAll(prepopulateBestSellers(pkg))
152+
val dishesDao = database.getDishesDao()
153+
if (dishesDao.getAll().isEmpty()) {
154+
dishesDao.insertAll(prepopulateBestSellers(pkg))
155+
}
156+
157+
val userDao = database.getUserDao()
158+
if (userDao.getAllUsers().isEmpty()) {
159+
userDao.insertAll(prepopulateUsers())
127160
}
161+
128162
val settingsDao = database.getSettingsDao()
129163
settingsDao.upsert(AppSettings(id = 0, isFirstRun = true))
130164

app/src/main/java/com/example/projectfigma/Entites/Dishes.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ data class Dishes(
1212
val rating: Double,
1313
val isRecommend: Boolean,
1414
val isBestSeller: Boolean,
15-
val name : String,
16-
val description : String,
15+
val name: String,
16+
val description: String,
1717
val category: DishCategory
1818
)

app/src/main/java/com/example/projectfigma/Entites/User.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ data class User(
1818
@ColumnInfo(name = "mobileNumber")
1919
var mobileNumber : String,
2020
@ColumnInfo(name = "dateOfBirth")
21-
var dateOfBirth : Date
21+
var dateOfBirth : Date,
22+
var favoriteDishesId: List<Int>
2223
)

app/src/main/java/com/example/projectfigma/Fragments/BottomPanelActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class BottomPanelFragment : Fragment() {
1616
inflater: LayoutInflater,
1717
container: ViewGroup?,
1818
savedInstanceState: Bundle?
19-
): View? = inflater.inflate(R.layout.activity_bottom_panel, container, false)
19+
): View? = inflater.inflate(R.layout.fragment_bottom_panel, container, false)
2020

2121
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2222
super.onViewCreated(view, savedInstanceState)

0 commit comments

Comments
 (0)