diff options
author | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-28 14:06:40 +0100 |
---|---|---|
committer | branislav.radivojevic <wafflemynxyt@gmail.com> | 2022-11-28 14:06:40 +0100 |
commit | 78caf6a59402f930b0d828bc6ce5faac1c5b4ed4 (patch) | |
tree | 37990459798a862ca1b22a752f30ad481a00c8b5 | |
parent | 37b2dff40d7e1395e3dc77bd7bb353e0181a37a6 (diff) |
Sortiranje istorije + bugfixes
6 files changed, 46 insertions, 18 deletions
diff --git a/Backend/Api/Api/Models/Post.cs b/Backend/Api/Api/Models/Post.cs index 1a4129f..0dc8158 100644 --- a/Backend/Api/Api/Models/Post.cs +++ b/Backend/Api/Api/Models/Post.cs @@ -38,9 +38,11 @@ namespace Api.Models public DateTime createdAt { get; set; } public int views { get; set; } public double ratings { get; set; } + public int ratingscount { get; set; } public List<CommentSend> comments { get; set; } public List<File> images { get; set; } public List<string>? tags { get; set; } + public DateTime? lastViewed { get; set; } } public class Rating { diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index b75656e..0676d74 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -39,7 +39,10 @@ namespace Api.Services p.comments = new List<Comment>(); p.images = new List<Models.File>(); p.createdAt = DateTime.Now.ToUniversalTime(); - var tags = post.tags.Split("|").ToList(); + List<String> tags; + if (post.tags != "none") + tags = post.tags.Remove(post.tags.Length-1,1).Split("|").ToList(); + else tags = null; p.tags = tags; var folderPath = Path.Combine(Directory.GetCurrentDirectory(), "Files", p.ownerId); if (!Directory.Exists(folderPath)) @@ -85,6 +88,7 @@ namespace Api.Services p.views = post.views.Count(); p.createdAt = post.createdAt; p.tags = post.tags; + p.ratingscount = post.ratings.Count(); if (post.ratings.Count() > 0) { List<int> ratings = new List<int>(); @@ -116,9 +120,16 @@ namespace Api.Services Post p = await _posts.Find(post => post._id == id).FirstOrDefaultAsync(); if (p != null) { - if (!p.views.Any(x => x == userid)) + if (!p.views.Any(x => x.Split("|")[0] == userid)) { - p.views.Add(userid); + p.views.Add(userid + "|" + DateTime.Now.ToUniversalTime().ToString()); + await _posts.ReplaceOneAsync(x => x._id == id, p); + } + else + { + var v = p.views.Find(x => x.Split("|")[0] == userid); + p.views.Remove(v); + p.views.Add(userid + "|" + DateTime.Now.ToUniversalTime().ToString()); await _posts.ReplaceOneAsync(x => x._id == id, p); } } @@ -308,7 +319,7 @@ namespace Api.Services xd = ls.OrderByDescending(x => x.createdAt).ToList(); break; default: - + xd = ls.OrderByDescending(x => x.views).ToList(); break; } if(xd != null) @@ -360,12 +371,15 @@ namespace Api.Services var tosend = new List<PostSend>(); foreach (var post in posts) { - if (post.views.Any(x => x.Equals(userid))) + if (post.views.Any(x => x.Split("|")[0] == userid)) { + var t = post.views.Find(x => x.Split("|")[0] == userid); var x = await postToPostSend(post); + x.lastViewed = DateTime.Parse(t.Split("|")[1]).ToUniversalTime(); tosend.Add(x); } } + tosend = tosend.OrderByDescending(x => x.lastViewed).ToList(); return tosend; } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt index 995ef4d..6db305e 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt @@ -120,7 +120,7 @@ class ActivityAddPost : AppCompatActivity() { tagText.isGone=false tagText.isVisible=true - if(tagList.count()<5) { + if(tagList.count()<4 && tagText.text.toString().length>=3) { var tagstr = tagText.text.toString() var newbtn = Button(this) newbtn.setId(tagidcounter) @@ -149,7 +149,7 @@ class ActivityAddPost : AppCompatActivity() { tagText.text.clear() } else{ - Toast.makeText(this,"Maksimalno 5 tagova",Toast.LENGTH_LONG) + Toast.makeText(this,"Maksimalno 4 tagova ( duzine + karaktera)",Toast.LENGTH_LONG) } } @@ -326,10 +326,12 @@ class ActivityAddPost : AppCompatActivity() { var descReq=RequestBody.create("text/plain".toMediaTypeOrNull(),desc) var idReq=RequestBody.create("text/plain".toMediaTypeOrNull(),"dsa") - var tagliststring="" - for(tag in tagList){ - tagliststring=tagliststring+tag+"|" - } + var tagliststring="none" + if(tagList.count()>0){ + tagliststring="" + for(tag in tagList){ + tagliststring=tagliststring+tag+"|" + }} var tagReq=RequestBody.create("text/plain".toMediaTypeOrNull(),tagliststring) val imagesParts = arrayOfNulls<MultipartBody.Part>( diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt index 2321f18..40adea2 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt @@ -102,7 +102,7 @@ class ActivityCapturePost : AppCompatActivity() { tagText.isGone=false tagText.isVisible=true - if(tagList.count()<5) { + if(tagList.count()<4 && tagText.text.toString().length>=3) { var tagstr = tagText.text.toString() var newbtn = Button(this) newbtn.setId(tagidcounter) @@ -131,7 +131,7 @@ class ActivityCapturePost : AppCompatActivity() { tagText.text.clear() } else{ - Toast.makeText(this,"Maksimalno 5 tagova",Toast.LENGTH_LONG) + Toast.makeText(this,"Maksimalno 4 tagova (duzine 3+ karaktera)",Toast.LENGTH_LONG) } } @@ -328,10 +328,12 @@ class ActivityCapturePost : AppCompatActivity() { var descReq= RequestBody.create("text/plain".toMediaTypeOrNull(),desc) var idReq= RequestBody.create("text/plain".toMediaTypeOrNull(),"dsa") - var tagliststring="" - for(tag in tagList){ - tagliststring=tagliststring+tag+"|" - } + var tagliststring="none" + if(tagList.count()>0){ + tagliststring="" + for(tag in tagList){ + tagliststring=tagliststring+tag+"|" + }} var tagReq=RequestBody.create("text/plain".toMediaTypeOrNull(),tagliststring) val imagesParts = arrayOfNulls<MultipartBody.Part>( diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt index 0e9c9da..569ab89 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt @@ -7,8 +7,10 @@ import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.preference.PreferenceManager +import android.provider.ContactsContract.CommonDataKinds.Im import android.util.Log import android.view.Gravity +import android.widget.ImageButton import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -122,7 +124,7 @@ class ActivitySinglePost : AppCompatActivity() { fun setRatingListeners(){ val emptyStar=R.drawable.empty_star val fullStar=R.drawable.full_star - + //var starlist:List<ImageButton> = mutableListOf() binding.rateStar1.setOnClickListener { Toast.makeText(this,"kliknuta prva zvezdica",Toast.LENGTH_SHORT).show() diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt index e2e9209..47e581d 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt @@ -4,6 +4,7 @@ import android.os.Parcelable import kotlinx.android.parcel.Parcelize import okhttp3.MultipartBody import java.time.LocalDateTime +import java.util.* data class Post ( var _id:String, @@ -35,7 +36,12 @@ data class PostPreview ( var ratings:Float, var comments:List<CommentSend>?, var images:List<PostImage>, + var ratingscount:Int, + var createdAt:LocalDateTime, + var lastViewed: LocalDateTime?, //samo za istoriju pregleda var tags:List<String>? + + //nedostaju datum i vreme kreiranja ):Parcelable |