From d77a0e4d7e14251f38d17c5b6c0dc5ff819628a8 Mon Sep 17 00:00:00 2001 From: "branislav.radivojevic" Date: Thu, 8 Dec 2022 13:54:22 +0100 Subject: bugfix zvezdice za ocenjivanje --- .../Activities/ActivitySinglePost.kt | 32 +++++----- .../Fragments/FragmentSinglePostDescription.kt | 69 ++++++++++++++++------ 2 files changed, 67 insertions(+), 34 deletions(-) (limited to 'Client') 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 2f5b2d2..b7848df 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 @@ -185,22 +185,22 @@ class ActivitySinglePost : AppCompatActivity() { } fun loadTags(){ if(post.tags!=null) - for( item in post.tags!!){ - var newbtn = Button(this) - newbtn.text = item - var layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.WRAP_CONTENT, - 50 - ) - layoutParams.setMargins(3) - 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 - tagLayout.addView(newbtn) - } + for( item in post.tags!!){ + var newbtn = Button(this) + newbtn.text = item + var layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + 50 + ) + layoutParams.setMargins(3) + 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 + tagLayout.addView(newbtn) + } } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt index 877fbc4..1f17a11 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentSinglePostDescription.kt @@ -77,7 +77,7 @@ class FragmentSinglePostDescription : Fragment() { starNumber=1 rate(starNumber) } - star1.setOnClickListener { + star2.setOnClickListener { //Toast.makeText(this,"kliknuta druga zvezdica",Toast.LENGTH_SHORT).show() star1.setImageResource(fullStar) star2.setImageResource(fullStar) @@ -87,7 +87,7 @@ class FragmentSinglePostDescription : Fragment() { starNumber=2 rate(starNumber) } - star1.setOnClickListener { + star3.setOnClickListener { //Toast.makeText(this,"kliknuta treca zvezdica",Toast.LENGTH_SHORT).show() star1.setImageResource(fullStar) star2.setImageResource(fullStar) @@ -97,8 +97,8 @@ class FragmentSinglePostDescription : Fragment() { starNumber=3 rate(starNumber) } - star1.setOnClickListener { - Toast.makeText(requireActivity(),"kliknuta cetvrta zvezdica",Toast.LENGTH_SHORT).show() + star4.setOnClickListener { + //Toast.makeText(requireActivity(),"kliknuta cetvrta zvezdica",Toast.LENGTH_SHORT).show() star1.setImageResource(fullStar) star2.setImageResource(fullStar) star3.setImageResource(fullStar) @@ -107,7 +107,7 @@ class FragmentSinglePostDescription : Fragment() { starNumber=4 rate(starNumber) } - star1.setOnClickListener { + star5.setOnClickListener { //Toast.makeText(this,"kliknuta peta zvezdica",Toast.LENGTH_SHORT).show() star1.setImageResource(fullStar) star2.setImageResource(fullStar) @@ -140,19 +140,52 @@ class FragmentSinglePostDescription : Fragment() { "--------------", data.ratings.toString() + " " + data.ratingscount.toString() ) - when (data.myrating) { - 1 -> star1.performClick() - 2 -> star1.performClick() - 3 -> star3.performClick() - 4 -> star4.performClick() - 5 -> star5.performClick() - else -> { - val emptyStar = R.drawable.empty_star - star1.setImageResource(emptyStar) - star2.setImageResource(emptyStar) - star3.setImageResource(emptyStar) - star4.setImageResource(emptyStar) - star5.setImageResource(emptyStar) + if(rating.rating==0) { + val emptyStar = R.drawable.empty_star + val fullStar = R.drawable.ic_baseline_star_rate_24 + when (data.myrating) { + 1 -> { + star1.setImageResource(fullStar) + star2.setImageResource(emptyStar) + star3.setImageResource(emptyStar) + star4.setImageResource(emptyStar) + star5.setImageResource(emptyStar) + } + 2 -> { + star1.setImageResource(fullStar) + star2.setImageResource(fullStar) + star3.setImageResource(emptyStar) + star4.setImageResource(emptyStar) + star5.setImageResource(emptyStar) + } + 3 -> { + star1.setImageResource(fullStar) + star2.setImageResource(fullStar) + star3.setImageResource(fullStar) + star4.setImageResource(emptyStar) + star5.setImageResource(emptyStar) + } + 4 -> { + star1.setImageResource(fullStar) + star2.setImageResource(fullStar) + star3.setImageResource(fullStar) + star4.setImageResource(fullStar) + star5.setImageResource(emptyStar) + } + 5 -> { + star1.setImageResource(fullStar) + star2.setImageResource(fullStar) + star3.setImageResource(fullStar) + star4.setImageResource(fullStar) + star5.setImageResource(fullStar) + } + else -> { + star1.setImageResource(emptyStar) + star2.setImageResource(emptyStar) + star3.setImageResource(emptyStar) + star4.setImageResource(emptyStar) + star5.setImageResource(emptyStar) + } } } /*Toast.makeText( -- cgit v1.2.3 From 6200ad1b4e30f8e6ed3487b79169862fe4ed0572 Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Thu, 8 Dec 2022 14:24:23 +0100 Subject: Dodata funkcija za promenu lozinke na back-u. Povezana promena lozinke na front-u. --- Backend/Api/Api/Controllers/UserController.cs | 6 ++ Backend/Api/Api/Interfaces/IUserService.cs | 2 + Backend/Api/Api/Services/UserService.cs | 24 ++++++ .../Activities/ActivityChangePassword.kt | 91 ++++++++++++++++++++++ .../Fragments/FragmentMyProfileInfo.kt | 7 ++ .../brzodolokacije/Interfaces/IBackendApi.kt | 4 + .../main/res/layout/activity_change_password.xml | 1 - 7 files changed, 134 insertions(+), 1 deletion(-) (limited to 'Client') diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs index 73d32ea..30beac4 100644 --- a/Backend/Api/Api/Controllers/UserController.cs +++ b/Backend/Api/Api/Controllers/UserController.cs @@ -162,6 +162,12 @@ namespace Api.Controllers return Ok(await _userService.ChangeMyProfileName(newName)); } + [HttpPost("changePass")] + [Authorize(Roles = "User")] + public async Task> ChangePass(string currentPass, string newPass) + { + return Ok(await _userService.ChangePass(currentPass,newPass)); + } } diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs index f4954e0..855272f 100644 --- a/Backend/Api/Api/Interfaces/IUserService.cs +++ b/Backend/Api/Api/Interfaces/IUserService.cs @@ -40,6 +40,8 @@ namespace Api.Interfaces Task ChangeMyProfileUsername(String newUsername); Task ChangeMyProfileName(String newUsername); + Task ChangePass(string currentPass, string newPass); + } } diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index 2b3f0b8..74c0894 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -733,6 +733,30 @@ namespace Api.Services return false; } + public async Task ChangePass(string currentPass,string newPass) + { + + string myId = null; + if (_httpContext.HttpContext.User.FindFirstValue("id") != null) + { + myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString(); + } + + User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync(); + + if (u != null) + { + if (checkPassword(currentPass, u.password)) + { + u.password = hashPassword(newPass); + await _users.ReplaceOneAsync(x => x._id == u._id, u); + return 1; + } + return -1; + } + return -2; + } + } 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 fbe3f4d..2501f8a 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 @@ -1,11 +1,102 @@ package com.example.brzodolokacije.Activities +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +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 + private lateinit var oldPassError:TextView + private lateinit var newPass:TextView + private lateinit var newPassError:TextView + private lateinit var confirmPass:TextView + private lateinit var confirmPassError:TextView + private lateinit var forgotten:TextView + private lateinit var submit:Button + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_change_password) + + oldPass=findViewById(R.id.changeDataOldPassword) + oldPassError=findViewById(R.id.ActivityChangePasswordOldError) + newPass=findViewById(R.id.tvActivityChangePasswordNewPass) + newPassError=findViewById(R.id.btnActivityChangePasswordNewError) + confirmPass=findViewById(R.id.ActivityChangePasswordNewPasswordConfirm) + confirmPassError=findViewById(R.id.btnActivityChangePasswordConfirmError) + forgotten=findViewById(R.id.btnActivityChangePasswordForgottenPass) + submit=findViewById(R.id.ActivityChangePasswordChangePassword) + + oldPassError.isVisible=false + newPassError.isVisible=false + confirmPassError.isVisible=false + + submit.setOnClickListener{ + oldPassError.isVisible=false + newPassError.isVisible=false + confirmPassError.isVisible=false + + if(oldPass.text.toString().trim().isNotEmpty()&&newPass.text.toString().trim().isNotEmpty() + &&confirmPass.text.toString().trim().isNotEmpty()){ + + if(newPass.text.toString().trim() == confirmPass.text.toString().trim()){ + + //PROVERI DA LI JE TRENUTA LOZINKA ISTA KAO TRENUTNI UNOS + + val authApi= RetrofitHelper.getInstance() + val token= SharedPreferencesHelper.getValue("jwt",this@ActivityChangePassword) + val request=authApi.changePass("Bearer "+token) + + request.enqueue(object : retrofit2.Callback { + override fun onResponse(call: Call, response: Response) { + if(response.isSuccessful()){ + var done=response.body()!! + if(done==1){ + Toast.makeText(this@ActivityChangePassword, "Lozinka je uspešno promenjena.", Toast.LENGTH_LONG).show(); + } + else if(done==-1){ + oldPassError.isVisible=true + oldPassError.text="Uneta lozinka nije odgovarajuća, pokušajte ponovo." + oldPassError.setTextColor(Color.RED) + + } + else if(done==-2){ + Toast.makeText(this@ActivityChangePassword, "Lozinka nije promenjena. Pokušajte ponovo", Toast.LENGTH_LONG).show(); + } + }else{ + if(response.errorBody()!=null) + Toast.makeText(this@ActivityChangePassword, response.errorBody()!!.string(), Toast.LENGTH_LONG).show(); + } + } + override fun onFailure(call: Call, t: Throwable) { + Toast.makeText( + activity, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + } + else{ + confirmPassError.isVisible=true + confirmPassError.text="Lozinke se ne podudaraju." + confirmPassError.setTextColor(Color.RED) + } + } + } + + + + } } \ 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 d6e345b..23de46e 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 @@ -9,6 +9,7 @@ import android.widget.Button import androidx.core.content.ContextCompat.startActivity import androidx.fragment.app.Fragment 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 @@ -19,6 +20,7 @@ import com.example.brzodolokacije.Services.SharedPreferencesHelper class FragmentMyProfileInfo : Fragment() { private lateinit var logout:Button private lateinit var changeAccount:Button + private lateinit var changePassword:Button override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -29,6 +31,7 @@ class FragmentMyProfileInfo : Fragment() { logout=view.findViewById(R.id.buttonLogOut) as Button changeAccount=view.findViewById(R.id.changeAccountData) + changePassword=view.findViewById(R.id.ChangePassword) logout.setOnClickListener{ logOut() @@ -38,6 +41,10 @@ class FragmentMyProfileInfo : Fragment() { val intent = Intent (getActivity(), ActivityChangeUserData::class.java) getActivity()?.startActivity(intent) } + changePassword.setOnClickListener { + val intent = Intent (getActivity(), ActivityChangePassword::class.java) + getActivity()?.startActivity(intent) + } return view } 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 19b1bb5..960c56d 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 @@ -121,4 +121,8 @@ interface IBackendApi { @GET("/api/user/{newName}/changeMyName") fun changeMyName(@Header("Authorization") authHeader:String,@Path("newName") newName:String):Call + + @POST("/api/user/changePass") + fun changePass(@Header("Authorization") authHeader:String):Call + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml index a7a1d5f..dc8243e 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_password.xml @@ -154,7 +154,6 @@ android:hint="Unesi novu lozinku" android:inputType="textPassword" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/changeDataNewPasswordConfirmInputt" /> -- cgit v1.2.3