diff options
6 files changed, 47 insertions, 22 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 e2e4e40..0676d74 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -39,11 +39,11 @@ namespace Api.Services p.comments = new List<Comment>(); p.images = new List<Models.File>(); p.createdAt = DateTime.Now.ToUniversalTime(); - if (post.tags != null) - { - var tags = post.tags.Split("|").ToList(); - p.tags = tags; - } + 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)) { @@ -88,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>(); @@ -119,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 + "|" + DateTime.Now.ToUniversalTime().ToString()); + await _posts.ReplaceOneAsync(x => x._id == id, p); + } + else { - p.views.Add(userid); + 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); } } @@ -311,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) @@ -363,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 6835e6e..efe2ac2 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 @@ -112,7 +112,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) @@ -141,7 +141,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) } } @@ -265,10 +265,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 94b5574..0221241 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 @@ -98,7 +98,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) @@ -127,7 +127,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) } } @@ -268,10 +268,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 |