From 37b2dff40d7e1395e3dc77bd7bb353e0181a37a6 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Mon, 28 Nov 2022 01:46:34 +0100 Subject: Dodato sortiranje objava na back-u i prikaz sortiranih objava na front-u. Izmenjen prikaz objave. --- Backend/Api/Api/Controllers/PostController.cs | 22 ++++ Backend/Api/Api/Interfaces/IPostService.cs | 6 ++ Backend/Api/Api/Services/PostService.cs | 36 +++++++ .../Fragments/FragmentHomePageMainScroll.kt | 111 ++++++++++++++++----- .../brzodolokacije/Interfaces/IBackendApi.kt | 9 ++ .../brzodolokacije/Services/RetrofitHelper.kt | 4 +- .../main/res/drawable/ic_baseline_circle_24.xml | 5 + .../src/main/res/drawable/ic_baseline_circle_7.xml | 5 + .../res/layout/fragment_home_page_main_scroll.xml | 27 +++-- .../src/main/res/layout/post_item_home_page.xml | 28 +++--- .../app/src/main/res/values/styles.xml | 5 + 11 files changed, 208 insertions(+), 50 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_7.xml diff --git a/Backend/Api/Api/Controllers/PostController.cs b/Backend/Api/Api/Controllers/PostController.cs index 3fe1b3f..4c6fbac 100644 --- a/Backend/Api/Api/Controllers/PostController.cs +++ b/Backend/Api/Api/Controllers/PostController.cs @@ -137,5 +137,27 @@ namespace Api.Controllers } return BadRequest(); } + + [HttpGet("posts/get10MostViewed")] + [Authorize(Roles = "User")] + public async Task>> Get10MostViewed() + { + return Ok(await _postService.Get10MostViewed()); + } + + [HttpGet("posts/get10Newest")] + [Authorize(Roles = "User")] + public async Task>> Get10Newest() + { + return Ok(await _postService.Get10Newest()); + } + + [HttpGet("posts/get10Best")] + [Authorize(Roles = "User")] + public async Task>> Get10Best() + { + return Ok(await _postService.Get10Best()); + } + } } diff --git a/Backend/Api/Api/Interfaces/IPostService.cs b/Backend/Api/Api/Interfaces/IPostService.cs index 12a5fe8..5b04dc3 100644 --- a/Backend/Api/Api/Interfaces/IPostService.cs +++ b/Backend/Api/Api/Interfaces/IPostService.cs @@ -19,5 +19,11 @@ namespace Api.Interfaces int DateEnumToDays(int filterdate); Task> GetUsersPosts(string id); Task> UserHistory(string userid); + + Task> Get10Best(); + + Task> Get10MostViewed(); + + Task> Get10Newest(); } } \ No newline at end of file diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index bdf150b..b75656e 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -368,5 +368,41 @@ namespace Api.Services } return tosend; } + + public async Task> Get10Best() + { + List posts = await _posts.Find(_ => true).ToListAsync(); + List temp = new List(); + foreach (var post in posts) + { + temp.Add(await postToPostSend(post)); + } + List best = temp.OrderByDescending(o => o.ratings).Take(10).ToList(); + return best; + } + + public async Task> Get10MostViewed() + { + List posts = await _posts.Find(_ => true).ToListAsync(); + List temp = new List(); + foreach (var post in posts) + { + temp.Add(await postToPostSend(post)); + } + List mostViewed = temp.OrderByDescending(o => o.views).Take(10).ToList(); + return mostViewed; + } + + public async Task> Get10Newest() + { + List posts = await _posts.Find(_ => true).ToListAsync(); + List temp = new List(); + foreach (var post in posts) + { + temp.Add(await postToPostSend(post)); + } + List newest = temp.OrderByDescending(o => o.createdAt).Take(10).ToList(); + return newest; + } } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt index 3846d6c..46904d4 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHomePageMainScroll.kt @@ -194,6 +194,9 @@ private lateinit var change:Button } private fun getAllPosts(){ + Toast.makeText( + activity," get all", Toast.LENGTH_LONG + ).show(); val api = Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .baseUrl(RetrofitHelper.baseUrl) @@ -219,9 +222,9 @@ private lateinit var change:Button // activity, "get all ", Toast.LENGTH_LONG // ).show(); posts = response.body()!!.toMutableList() - getPopularPosts(posts) - getNewestPosts(posts) - getBestRatedPosts(posts) + getPopularPosts() + getNewestPosts() + getBestRatedPosts() } override fun onFailure(call: Call>, t: Throwable) { @@ -232,41 +235,101 @@ private lateinit var change:Button }) } - private fun getPopularPosts(allPosts:MutableList){//most viewed + private fun getPopularPosts(){//most viewed // Toast.makeText( // activity, "get all mv ", Toast.LENGTH_LONG // ).show(); - mostViewedPosts=allPosts - mostViewedPosts.sortByDescending { it.views } - rvPopular.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) - adapter= ShowPostsHomePageAdapter(mostViewedPosts,requireActivity()) + Toast.makeText( + activity," get popular all", Toast.LENGTH_LONG + ).show(); + val api = RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) + val data=api.get10MostViewed("Bearer "+token) + + data.enqueue(object : Callback> { + override fun onResponse( + call: Call>, + response: Response> + ) { + if (response.body() == null) { + return + } + var mostpopular = response.body()!!.toMutableList() + rvPopular.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + adapter= ShowPostsHomePageAdapter(mostpopular,requireActivity()) + + } + } + override fun onFailure(call: Call>, t: Throwable) { + + } + }) - } } - private fun getNewestPosts(allPosts:MutableList){ + private fun getNewestPosts(){ // Toast.makeText( // activity, "get all r ", Toast.LENGTH_LONG // ).show(); - newestPosts=allPosts/// izmeniti nakon dodavanja datuma u model!!!!!! - newestPosts.sortBy { it.ratings} - rvNewest.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) - adapter= ShowPostsHomePageAdapter(newestPosts,requireActivity()) - } + Toast.makeText( + activity," get all newest", Toast.LENGTH_LONG + ).show(); + val api = RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) + val data=api.get10Newest("Bearer "+token) + + data.enqueue(object : Callback> { + override fun onResponse( + call: Call>, + response: Response> + ) { + if (response.body() == null) { + return + } + var newestposts = response.body()!!.toMutableList() + rvNewest.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + adapter= ShowPostsHomePageAdapter(newestposts,requireActivity()) + } + } + override fun onFailure(call: Call>, t: Throwable) { + + } + }) + } - private fun getBestRatedPosts(allPosts:MutableList){ + private fun getBestRatedPosts(){ // Toast.makeText( // activity, "get all br ", Toast.LENGTH_LONG // ).show(); - bestRatedPosts=allPosts - bestRatedPosts.sortByDescending { it.ratings } - rvBestRated.apply { - layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) - adapter= ShowPostsHomePageAdapter(bestRatedPosts,requireActivity()) - } + Toast.makeText( + activity," get all best", Toast.LENGTH_LONG + ).show(); + val api = RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt", requireActivity()) + val data=api.get10Best("Bearer "+token) + + data.enqueue(object : Callback> { + override fun onResponse( + call: Call>, + response: Response> + ) { + if (response.body() == null) { + return + } + var bestposts = response.body()!!.toMutableList() + rvBestRated.apply { + layoutManager= LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL,false) + adapter= ShowPostsHomePageAdapter(bestposts,requireActivity()) + } + } + override fun onFailure(call: Call>, t: Throwable) { + + } + }) + } 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 cb51627..e4bfbc8 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 @@ -83,4 +83,13 @@ interface IBackendApi { @GET("/api/user/{id}/id/profile") fun getProfileFromId(@Header("Authorization") authHeader:String,@Path("id") username:String):Call + @GET("/api/Post/posts/get10MostViewed") + fun get10MostViewed(@Header("Authorization") authHeader:String):Call> + + @GET("/api/Post/posts/get10Best") + fun get10Best(@Header("Authorization") authHeader:String):Call> + + @GET("/api/Post/posts/get10Newest") + fun get10Newest(@Header("Authorization") authHeader:String):Call> + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt index 88685e4..43c2109 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt @@ -7,8 +7,8 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitHelper { - //val baseUrl="http://10.0.2.2:5279" - val baseUrl="http://147.91.204.115:10082" + val baseUrl="http://10.0.2.2:5279" + //val baseUrl="http://147.91.204.115:10082" private var retrofit_noauth: IBackendApi? = null private var retrofit_auth: IBackendApi? = null diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_24.xml new file mode 100644 index 0000000..4d57238 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_7.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_7.xml new file mode 100644 index 0000000..6d080ea --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_circle_7.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page_main_scroll.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page_main_scroll.xml index 2883291..efae8d4 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page_main_scroll.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home_page_main_scroll.xml @@ -154,19 +154,34 @@ android:layout_marginTop="16dp" + - + 20dp 20dp + + \ No newline at end of file -- cgit v1.2.3