aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Backend/Api/Api/Models/Post.cs2
-rw-r--r--Backend/Api/Api/Services/PostService.cs29
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityAddPost.kt14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityCapturePost.kt14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt6
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