diff options
8 files changed, 188 insertions, 28 deletions
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index 74c0894..d8ec4a2 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -416,7 +416,9 @@ namespace Api.Services } User f = await _users.Find(user => user._id == followerId).FirstOrDefaultAsync(); User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync(); - + if(await CheckIfAlreadyFollow(followerId)) + return false; + if (id != null && followerId!=null) { if (f.followers == null) @@ -617,27 +619,33 @@ namespace Api.Services User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync(); User f = await _users.Find(user => user._id == id).FirstOrDefaultAsync(); - + if(await CheckIfAlreadyFollow(id)) if (u != null) { - if (u.following != null && f.followers!=null) - { u.following.Remove(f._id); + if (u.following == null) + u.following = new List<string>(); u.followingCount=u.following.Count(); + if (u.followers == null) + u.followers = new List<string>(); u.followersCount = u.followers.Count(); f.followers.Remove(u._id); + if (f.followers == null) + f.followers = new List<string>(); f.followersCount =f.followers.Count(); + if (f.following == null) + f.following = new List<string>(); f.followingCount =f.following.Count(); - _users.ReplaceOne(user => user._id == myId, u); - _users.ReplaceOne(user => user._id == id, f); + await _users.ReplaceOneAsync(user => user._id == myId, u); + await _users.ReplaceOneAsync(user => user._id == id, f); //updateUserFollowerFollowingCount(u.followers, u.following, u._id); //updateUserFollowerFollowingCount(f.followers, f.following, f._id); return true; - } + } return false; diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt index 2501f8a..2198153 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangePassword.kt @@ -3,18 +3,20 @@ package com.example.brzodolokacije.Activities import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle + +import com.example.brzodolokacije.R import android.widget.Button import android.widget.TextView import android.widget.Toast import androidx.core.view.isVisible import com.exam.DBHelper.Companion.activity import com.example.brzodolokacije.Models.UserReceive -import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper import retrofit2.Call import retrofit2.Response + class ActivityChangePassword : AppCompatActivity() { private lateinit var oldPass:TextView 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 b7848df..74b5f4c 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 @@ -184,6 +184,8 @@ class ActivitySinglePost : AppCompatActivity() { } fun loadTags(){ + + if(post.tags!=null) for( item in post.tags!!){ var newbtn = Button(this) @@ -193,16 +195,19 @@ class ActivitySinglePost : AppCompatActivity() { 50 ) layoutParams.setMargins(3) - newbtn.layoutParams=layoutParams + + newbtn.layoutParams = layoutParams newbtn.setBackgroundColor(Color.parseColor("#1C789A")) newbtn.setTextColor(Color.WHITE) newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F) - newbtn.setPadding(3,1,3,1) - newbtn.isClickable=false + newbtn.setPadding(3, 1, 3, 1) + newbtn.isClickable = false tagLayout.addView(newbtn) } + } + + - } fun loadFavourite(){ if(post.favourites!=null){ diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt index 4962006..b568d73 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt @@ -92,14 +92,16 @@ class ActivityUserProfile : AppCompatActivity() { call: Call<Boolean>, response: Response<Boolean> ) { - unfollowUser.isVisible=true - unfollowUser.isClickable=true - unfollowUser.isEnabled=true - followUser.isVisible=false - followUser.isClickable=false - followUser.isEnabled=false + if(response.body()==true) { + unfollowUser.isVisible = true + unfollowUser.isClickable = true + unfollowUser.isEnabled = true + followUser.isVisible = false + followUser.isClickable = false + followUser.isEnabled = false - updateUserData() + updateUserData() + } Toast.makeText( this@ActivityUserProfile, "PRATITE KORISNIKA", Toast.LENGTH_LONG @@ -123,13 +125,15 @@ class ActivityUserProfile : AppCompatActivity() { call: Call<Boolean>, response: Response<Boolean> ) { - unfollowUser.isVisible = false - unfollowUser.isClickable = false - unfollowUser.isEnabled = false - followUser.isVisible = true - followUser.isClickable = true - followUser.isEnabled = true - updateUserData() + if(response.body()==true) { + unfollowUser.isVisible = false + unfollowUser.isClickable = false + unfollowUser.isEnabled = false + followUser.isVisible = true + followUser.isClickable = true + followUser.isEnabled = true + updateUserData() + } Toast.makeText( this@ActivityUserProfile, "VIĆ E NE PRATITE KORISNIKA", Toast.LENGTH_LONG ).show(); 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 new file mode 100644 index 0000000..2ef4d5f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/FragmentProfileStatistics.kt @@ -0,0 +1,27 @@ +package com.example.brzodolokacije + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + + +class FragmentProfileStatistics : Fragment() { + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_profile_statistics, container, false) + } + + +}
\ No newline at end of file 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 23de46e..0b0ad55 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 @@ -1,18 +1,19 @@ package com.example.brzodolokacije.Fragments + import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button -import androidx.core.content.ContextCompat.startActivity import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentTransaction import com.exam.DBHelper import com.example.brzodolokacije.Activities.ActivityChangePassword import com.example.brzodolokacije.Activities.ActivityChangeUserData -import com.example.brzodolokacije.Activities.ActivityForgottenPassword import com.example.brzodolokacije.Activities.ActivityLoginRegister +import com.example.brzodolokacije.FragmentProfileStatistics import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.SharedPreferencesHelper @@ -20,6 +21,7 @@ import com.example.brzodolokacije.Services.SharedPreferencesHelper class FragmentMyProfileInfo : Fragment() { private lateinit var logout:Button private lateinit var changeAccount:Button + private lateinit var statistics:Button private lateinit var changePassword:Button override fun onCreateView( @@ -31,6 +33,7 @@ class FragmentMyProfileInfo : Fragment() { logout=view.findViewById<View>(R.id.buttonLogOut) as Button changeAccount=view.findViewById(R.id.changeAccountData) + statistics=view.findViewById<View>(R.id.getAccoutStatistics) as Button changePassword=view.findViewById(R.id.ChangePassword) logout.setOnClickListener{ @@ -41,6 +44,21 @@ class FragmentMyProfileInfo : Fragment() { val intent = Intent (getActivity(), ActivityChangeUserData::class.java) getActivity()?.startActivity(intent) } + + statistics.setOnClickListener { + + val manager: androidx.fragment.app.FragmentManager? = fragmentManager + val transaction: FragmentTransaction = manager!!.beginTransaction() + transaction.replace(R.id.flFragmentProfileFragmentContainer, FragmentProfileStatistics()) + transaction.commit() + + + + + + } + + changePassword.setOnClickListener { val intent = Intent (getActivity(), ActivityChangePassword::class.java) getActivity()?.startActivity(intent) diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_total_views.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_total_views.xml new file mode 100644 index 0000000..3b4e7d5 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_total_views.xml @@ -0,0 +1,5 @@ +<vector android:height="24dp" android:tint="#747474" + android:viewportHeight="24" android:viewportWidth="24" + android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,6.5c3.79,0 7.17,2.13 8.82,5.5 -1.65,3.37 -5.02,5.5 -8.82,5.5S4.83,15.37 3.18,12C4.83,8.63 8.21,6.5 12,6.5m0,-2C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,9.5c1.38,0 2.5,1.12 2.5,2.5s-1.12,2.5 -2.5,2.5 -2.5,-1.12 -2.5,-2.5 1.12,-2.5 2.5,-2.5m0,-2c-2.48,0 -4.5,2.02 -4.5,4.5s2.02,4.5 4.5,4.5 4.5,-2.02 4.5,-4.5 -2.02,-4.5 -4.5,-4.5z"/> +</vector> 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 new file mode 100644 index 0000000..d5d72d1 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile_statistics.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".FragmentProfileStatistics" + android:padding="16dp"> + + <LinearLayout + android:id="@+id/linearLayout3" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:layout_width="50dp" + android:layout_height="50dp" + android:src="@drawable/ic_total_views" /> + + <TextView + android:layout_width="100dp" + android:layout_height="match_parent" /> + + </LinearLayout> + + <LinearLayout + android:id="@+id/linearLayout4" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/linearLayout3"> + + <ImageView + android:layout_width="50dp" + android:layout_height="50dp" + android:src="@drawable/ic_total_views" /> + + <TextView + android:layout_width="100dp" + android:layout_height="match_parent" /> + + </LinearLayout> + + <LinearLayout + android:id="@+id/linearLayout5" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/linearLayout4"> + + <ImageView + android:layout_width="50dp" + android:layout_height="50dp" + android:src="@drawable/ic_total_views" /> + + <TextView + android:layout_width="100dp" + android:layout_height="match_parent" /> + + </LinearLayout> + + <LinearLayout + android:id="@+id/linearLayout6" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/linearLayout5"> + + <ImageView + android:layout_width="50dp" + android:layout_height="50dp" + android:src="@drawable/ic_total_views" /> + + <TextView + android:layout_width="100dp" + android:layout_height="match_parent" /> + + </LinearLayout> + + +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file |