From a23ba361bebd27b58971a266e4fbc11eea0d6fac Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Thu, 8 Dec 2022 15:25:59 +0100 Subject: Omogucen prikaz statistike. Napravljen zahtev ka back-u. Dodati modeli. Dobavljane statistike preko username-a korisnika. --- .../brzodolokacije/FragmentProfileStatistics.kt | 63 ++++++++++++++++++++-- .../Fragments/FragmentMyProfileInfo.kt | 12 ++++- .../brzodolokacije/Fragments/FragmentProfile.kt | 2 + .../brzodolokacije/Interfaces/IBackendApi.kt | 2 + .../example/brzodolokacije/Models/Statistics.kt | 18 +++++++ .../res/layout/fragment_profile_statistics.xml | 13 ++++- 6 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Statistics.kt diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/FragmentProfileStatistics.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/FragmentProfileStatistics.kt index 2ef4d5f..92da9c0 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/FragmentProfileStatistics.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/FragmentProfileStatistics.kt @@ -1,15 +1,31 @@ package com.example.brzodolokacije import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.TextView +import android.widget.Toast +import androidx.recyclerview.widget.RecyclerView +import com.example.brzodolokacije.Models.Statistics +import com.example.brzodolokacije.Models.UserReceive +import com.example.brzodolokacije.Services.RetrofitHelper +import com.example.brzodolokacije.Services.SharedPreferencesHelper +import retrofit2.Call +import retrofit2.Response class FragmentProfileStatistics : Fragment() { - + private var stats:Statistics?=null + private var username:String?=null + private lateinit var totalViews:TextView + private lateinit var numberOfRatings:TextView + private lateinit var averageRatings:TextView + private lateinit var numberOfFavourite:TextView + private lateinit var rcMonths:RecyclerView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -19,8 +35,49 @@ class FragmentProfileStatistics : Fragment() { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { - // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_profile_statistics, container, false) + var view=inflater.inflate(R.layout.fragment_profile_statistics, container, false) + username=this.requireArguments().getString("username") + totalViews=view.findViewById(R.id.tvProfileStatisticsViews) + numberOfRatings=view.findViewById(R.id.tvProfileStatisticsRatingNumber) + averageRatings=view.findViewById(R.id.tvProfileStatisticsAverageRating) + numberOfFavourite=view.findViewById(R.id.tvProfileStatisticsFavouriteNumber) + rcMonths=view.findViewById(R.id.rvFragmentProfileStatisticsMonths) + + + + loadStats() + + return view + } + + + fun loadStats(){ + val authApi= RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) + val request=authApi.getUserStatsFromUsername("Bearer "+token,username!!) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + stats=response.body() + loadText() + + + } + } + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + + } + fun loadText(){ + totalViews.text=stats!!.totalViews.toString() + numberOfRatings.text=stats!!.numberOfRatingsOnPosts.toString() + averageRatings.text=stats!!.averagePostRatingOnPosts.toString() + numberOfFavourite.text=stats!!.numberOfFavouritePosts.toString() } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt index 0b0ad55..5d1530d 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt @@ -49,7 +49,17 @@ class FragmentMyProfileInfo : Fragment() { val manager: androidx.fragment.app.FragmentManager? = fragmentManager val transaction: FragmentTransaction = manager!!.beginTransaction() - transaction.replace(R.id.flFragmentProfileFragmentContainer, FragmentProfileStatistics()) + + var fragment:FragmentProfileStatistics=FragmentProfileStatistics() + val bundle = Bundle() + var parentFragment:FragmentProfile=parentFragment as FragmentProfile + var username=parentFragment.usernameStringSend + bundle.putString("username", username) + fragment.arguments=bundle + + + + transaction.replace(R.id.flFragmentProfileFragmentContainer,fragment ) transaction.commit() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt index 6fe4678..a9858e2 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt @@ -60,6 +60,7 @@ class FragmentProfile : Fragment(com.example.brzodolokacije.R.layout.fragment_pr private lateinit var profilePicturePlus: MaterialButton private lateinit var showFollowers: TextView private lateinit var showFollowing: TextView + public var usernameStringSend:String?=null override fun onCreateView( @@ -208,6 +209,7 @@ class FragmentProfile : Fragment(com.example.brzodolokacije.R.layout.fragment_pr private fun setUserInfo(user:UserReceive){ name.setText(user.name) username.setText("@"+user.username) + usernameStringSend=user.username postsCount.setText(user.postcount.toString()) Log.d("follno",user.followersCount.toString()) Log.d("follno","helllllllllllllllllllllppppppppppppppppppppppppppppppp") diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt index 960c56d..f6dfdcf 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt @@ -124,5 +124,7 @@ interface IBackendApi { @POST("/api/user/changePass") fun changePass(@Header("Authorization") authHeader:String):Call + @GET("/api/user/{username}/profile/stats") + fun getUserStatsFromUsername(@Header("Authorization") authHeader:String,@Path("username") username:String):Call } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Statistics.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Statistics.kt new file mode 100644 index 0000000..4466e05 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Statistics.kt @@ -0,0 +1,18 @@ +package com.example.brzodolokacije.Models + +import android.os.Parcelable +import kotlinx.android.parcel.Parcelize +data class Statistics( + var totalViews:Int, + var numberOfPosts:Int, + var numberOfRatingsOnPosts:Int, + var averagePostRatingOnPosts:Double, + var monthlyViews:List, + var numberOfFavouritePosts:Int +) +@Parcelize +data class MonthlyViews( + var month:Int, + var views:Int +):Parcelable + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml index fc1152b..ce125bb 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml @@ -5,8 +5,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".FragmentProfileStatistics" - android:padding="16dp"> + android:padding="16dp" + > + - + \ No newline at end of file -- cgit v1.2.3