Skip to content

Commit 2ded99b

Browse files
Merge pull request #140 from armaanbadhan/display-rating-feature
Display rating feature
2 parents cbe66a8 + 19741ad commit 2ded99b

File tree

3 files changed

+132
-4
lines changed

3 files changed

+132
-4
lines changed

app/src/main/java/com/pec_acm/moviedroid/ProfileActivity.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,27 @@ package com.pec_acm.moviedroid
22

33
import androidx.appcompat.app.AppCompatActivity
44
import android.os.Bundle
5+
import androidx.lifecycle.ViewModelProvider
56
import com.bumptech.glide.Glide
67
import com.google.firebase.auth.FirebaseAuth
78
import com.pec_acm.moviedroid.databinding.ActivityProfileBinding
9+
import com.pec_acm.moviedroid.mainpage.profile.ProfileViewModel
810
import dagger.hilt.android.AndroidEntryPoint
911

1012
@AndroidEntryPoint
1113
class ProfileActivity : AppCompatActivity() {
1214

15+
private lateinit var profileViewModel: ProfileViewModel
1316
private lateinit var binding: ActivityProfileBinding
1417

1518
override fun onCreate(savedInstanceState: Bundle?) {
1619
super.onCreate(savedInstanceState)
1720
binding = ActivityProfileBinding.inflate(layoutInflater)
21+
profileViewModel = ViewModelProvider(this)[ProfileViewModel::class.java]
1822
setContentView(binding.root)
1923

2024
val user = FirebaseAuth.getInstance().currentUser
21-
25+
profileViewModel.setUserRatingValues(user!!.uid)
2226
//update the info
2327

2428
if (user != null) {
@@ -29,6 +33,16 @@ class ProfileActivity : AppCompatActivity() {
2933
.load(user.photoUrl)
3034
.placeholder(R.drawable.ic_baseline_account_circle_24)
3135
.into(binding.imgProfile)
36+
37+
profileViewModel.overallRating.observe(this) {rate ->
38+
binding.OverallRateText.text = rate
39+
}
40+
profileViewModel.tvRating.observe(this) {rate ->
41+
binding.TVRateText.text = rate
42+
}
43+
profileViewModel.movieRating.observe(this) {rate ->
44+
binding.MovieRateText.text = rate
45+
}
3246
}
3347

3448
binding.backBtnProfile.setOnClickListener {
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.pec_acm.moviedroid.mainpage.profile
2+
3+
import androidx.lifecycle.MutableLiveData
4+
import androidx.lifecycle.ViewModel
5+
import androidx.lifecycle.viewModelScope
6+
import com.google.firebase.database.ktx.database
7+
import com.google.firebase.ktx.Firebase
8+
import com.pec_acm.moviedroid.firebase.User
9+
import kotlinx.coroutines.launch
10+
11+
class ProfileViewModel: ViewModel() {
12+
private var databaseReference = Firebase.database.reference
13+
private var userReference = databaseReference.child("Users")
14+
val user : MutableLiveData<User> = MutableLiveData()
15+
16+
val overallRating: MutableLiveData<String> = MutableLiveData("Rate something to view your average rating!")
17+
val movieRating: MutableLiveData<String> = MutableLiveData("")
18+
val tvRating: MutableLiveData<String> = MutableLiveData("")
19+
20+
fun setUserRatingValues(uid : String)
21+
{
22+
viewModelScope.launch {
23+
userReference.child(uid).get().addOnCompleteListener {
24+
val user = it.result.getValue(User::class.java)
25+
var movieRate = 0
26+
var tvRate = 0
27+
var movieCount = 0
28+
var tvCount = 0
29+
30+
for (item in user!!.userList)
31+
{
32+
if (item.personalScore != 0)
33+
{
34+
if (item.category == "tv")
35+
{
36+
tvCount += 1
37+
tvRate += item.personalScore
38+
}
39+
else
40+
{
41+
movieCount += 1
42+
movieRate += item.personalScore
43+
}
44+
}
45+
}
46+
47+
if (movieCount + tvCount != 0)
48+
{
49+
overallRating.value = buildString {
50+
append("Overall Rating:\n")
51+
append(String.format("%.2f", (movieRate + tvRate).toFloat() / (movieCount + tvCount)))
52+
append("/10")
53+
}
54+
}
55+
if (tvCount != 0)
56+
{
57+
tvRating.value = buildString {
58+
append("TV Shows Rating:\n")
59+
append(String.format("%.2f", tvRate.toFloat() / tvCount))
60+
append("/10")
61+
}
62+
}
63+
if (movieCount != 0)
64+
{
65+
movieRating.value = buildString {
66+
append("Movie Rating:\n")
67+
append(String.format("%.2f", movieRate.toFloat() / movieCount))
68+
append("/10")
69+
}
70+
}
71+
}
72+
}
73+
}
74+
75+
}

app/src/main/res/layout/activity_profile.xml

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@
2929
app:layout_constraintBottom_toBottomOf="parent"
3030
app:layout_constraintEnd_toEndOf="parent"
3131
app:layout_constraintStart_toStartOf="parent"
32-
app:layout_constraintTop_toTopOf="parent">
32+
app:layout_constraintTop_toTopOf="parent"
33+
app:layout_constraintVertical_bias="0.35">
3334

3435
<!-- google profile pic-->
3536
<androidx.cardview.widget.CardView
@@ -51,7 +52,7 @@
5152
android:layout_width="wrap_content"
5253
android:layout_height="wrap_content"
5354
android:layout_marginTop="@dimen/_30sdp"
54-
android:fontFamily="@font/roboto"
55+
android:fontFamily="@font/nunito"
5556
android:text="@string/name"
5657
android:textSize="@dimen/_16ssp" />
5758

@@ -61,11 +62,49 @@
6162
android:layout_width="wrap_content"
6263
android:layout_height="wrap_content"
6364
android:layout_marginTop="@dimen/_10sdp"
64-
android:fontFamily="@font/roboto"
65+
android:fontFamily="@font/nunito"
6566
android:text="@string/email_id"
6667
android:textSize="@dimen/_10ssp" />
6768

6869

6970
</LinearLayout>
7071

72+
<!-- user ratings -->
73+
<LinearLayout
74+
android:layout_width="match_parent"
75+
android:layout_height="120dp"
76+
android:orientation="vertical"
77+
app:layout_constraintBottom_toBottomOf="parent"
78+
app:layout_constraintEnd_toEndOf="parent"
79+
app:layout_constraintStart_toStartOf="parent"
80+
app:layout_constraintTop_toBottomOf="@+id/linearLayout" >
81+
82+
<TextView
83+
android:id="@+id/OverallRateText"
84+
android:layout_width="match_parent"
85+
android:layout_height="50dp"
86+
android:gravity="center"
87+
android:text="" />
88+
89+
<LinearLayout
90+
android:layout_width="match_parent"
91+
android:layout_height="match_parent"
92+
android:orientation="horizontal">
93+
94+
<TextView
95+
android:id="@+id/TVRateText"
96+
android:layout_width="wrap_content"
97+
android:layout_height="match_parent"
98+
android:layout_weight="1"
99+
android:gravity="center" />
100+
101+
<TextView
102+
android:id="@+id/MovieRateText"
103+
android:layout_width="wrap_content"
104+
android:layout_height="match_parent"
105+
android:layout_weight="1"
106+
android:gravity="center" />
107+
</LinearLayout>
108+
</LinearLayout>
109+
71110
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)