From ebd729276cdbe9212230e04c5716ba8cc54cb443 Mon Sep 17 00:00:00 2001 From: "branislav.radivojevic" Date: Mon, 5 Dec 2022 16:45:48 +0100 Subject: pretraga po tagovima i imenu lokacije, trending --- Backend/Api/Api/Controllers/PostController.cs | 7 +++ Backend/Api/Api/Interfaces/IPostService.cs | 1 + Backend/Api/Api/Models/Post.cs | 7 +++ Backend/Api/Api/Services/PostService.cs | 75 ++++++++++++++++++++++++++- 4 files changed, 88 insertions(+), 2 deletions(-) (limited to 'Backend') diff --git a/Backend/Api/Api/Controllers/PostController.cs b/Backend/Api/Api/Controllers/PostController.cs index 01a1c64..61a4f48 100644 --- a/Backend/Api/Api/Controllers/PostController.cs +++ b/Backend/Api/Api/Controllers/PostController.cs @@ -192,5 +192,12 @@ namespace Api.Controllers { return Ok(await _postService.addRemoveFavourite(id)); } + + [HttpGet("trending")] + [Authorize(Roles = "User")] + public async Task>> Trending() + { + return Ok(await _postService.TrendingTags()); + } } } diff --git a/Backend/Api/Api/Interfaces/IPostService.cs b/Backend/Api/Api/Interfaces/IPostService.cs index d5f489e..69846b0 100644 --- a/Backend/Api/Api/Interfaces/IPostService.cs +++ b/Backend/Api/Api/Interfaces/IPostService.cs @@ -28,5 +28,6 @@ namespace Api.Interfaces Task> Get10Newest(); Task> Recommended(string userid); Task addRemoveFavourite(string postId); + Task> TrendingTags(); } } \ No newline at end of file diff --git a/Backend/Api/Api/Models/Post.cs b/Backend/Api/Api/Models/Post.cs index 22ed62e..9c0c429 100644 --- a/Backend/Api/Api/Models/Post.cs +++ b/Backend/Api/Api/Models/Post.cs @@ -115,5 +115,12 @@ namespace Api.Models { public int counter { get; set; } public string tag { get; set; } + public int? views { get; set; } + } + + public class Trending + { + public TagR tagr { get; set; } + public PostSendPage page { get; set; } } } diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index fd42d08..777389b 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -15,6 +15,7 @@ namespace Api.Services private readonly IFileService _fileService; private readonly ILocationService _locationService; private readonly IMongoCollection _users; + private readonly IMongoCollection _locations; public PostService(IDatabaseConnection settings, IMongoClient mongoClient, IHttpContextAccessor httpContext, IFileService fileService,ILocationService locationService) { var database = mongoClient.GetDatabase(settings.DatabaseName); @@ -23,6 +24,7 @@ namespace Api.Services _httpContext = httpContext; _fileService = fileService; _locationService = locationService; + _locations = database.GetCollection(settings.LocationCollectionName); } public async Task addPost(PostReceive post) @@ -347,7 +349,27 @@ namespace Api.Services var lista = new List(); var ls = new List(); var xd = new List(); - lista = await _posts.Find(x => x.locationId == locid).ToListAsync(); + if(ObjectId.TryParse(locid, out _)) + lista = await _posts.Find(x => x.locationId == locid).ToListAsync(); + else + { + lista = await _posts.Find(x => x.tags != null && x.tags.Any(y => y.ToLower().Contains(locid.ToLower()))).ToListAsync(); + if (lista.Count==0) + { + var locs = await _locations.Find(x => x.city.ToLower().Contains(locid.ToLower()) || x.name.ToLower().Contains(locid.ToLower())).ToListAsync(); + foreach(var loc in locs) + { + var posts =await _posts.Find(x => x.locationId == loc._id).ToListAsync(); + if(posts != null) + { + foreach(var p in posts) + { + lista.Add(p); + } + } + } + } + } if (lista != null) { foreach (var elem in lista) @@ -472,7 +494,7 @@ namespace Api.Services public async Task> Recommended(string userid) // momgodb bloat bleh { List posts = await UserHistory(userid); - //TODO-LIMIT RECOMMENDED FOR POSTS FROM THIS MONTH ONLY + //TODO-LIMIT RECOMMENDED FOR POSTS FROM THIS MONTH List tags = new List(); foreach (var post in posts) { @@ -555,6 +577,55 @@ namespace Api.Services return result; } + + public async Task> TrendingTags() + { + var all = await _posts.Find(_ => true).ToListAsync(); + var posts = new List(); + foreach (var elem in all) + { + if ((DateTime.Now - elem.createdAt).TotalDays < 7) + posts.Add(await postToPostSend(elem)); + } + List tags = new List(); + foreach (var post in posts) + { + if (post.tags != null) + { + foreach (var tagitem in post.tags) + { + if (!tags.Any(x => x.tag == tagitem)) + { + var newtag = new TagR(); + newtag.tag = tagitem; + newtag.counter = 1; + newtag.views = post.views; + tags.Add(newtag); + } + else + { + var replace = tags.Find(x => x.tag == tagitem); + tags.Remove(replace); + replace.counter += 1; + replace.views += post.views; + tags.Add(replace); + } + } + } + } + var top10tags = tags.OrderByDescending(x => x.views).Take(10).ToList(); + + var tosend = new List(); + foreach(var trending in top10tags) + { + var novi = new Trending(); + novi.tagr = trending; + novi.page = await SearchPosts(trending.tag, 0, 1, 5); + tosend.Add(novi); + } + + return tosend; + } } } -- cgit v1.2.3 From aae690368dc3f60d18c3564cd4c1603820defec1 Mon Sep 17 00:00:00 2001 From: "branislav.radivojevic" Date: Mon, 5 Dec 2022 17:10:49 +0100 Subject: Najpopularniji post za svaku lokaciju u radiusu --- Backend/Api/Api/Controllers/LocationController.cs | 22 +++++++++++++++++++- Backend/Api/Api/Interfaces/IPostService.cs | 1 + Backend/Api/Api/Services/LocationService.cs | 2 ++ Backend/Api/Api/Services/PostService.cs | 25 +++++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) (limited to 'Backend') diff --git a/Backend/Api/Api/Controllers/LocationController.cs b/Backend/Api/Api/Controllers/LocationController.cs index ba9c9a8..ac093bb 100644 --- a/Backend/Api/Api/Controllers/LocationController.cs +++ b/Backend/Api/Api/Controllers/LocationController.cs @@ -12,9 +12,11 @@ namespace Api.Controllers public class LocationController : ControllerBase { private readonly ILocationService _locationService; - public LocationController(ILocationService locationService) + private readonly IPostService _postService; + public LocationController(ILocationService locationService, IPostService postService) { _locationService = locationService; + _postService = postService; } [HttpPost("add")] @@ -74,5 +76,23 @@ namespace Api.Controllers return Ok(ret); } } + + [HttpGet("searchradius")] + [Authorize(Roles = "User")] + public async Task>> bestPostsForLocationInRadius(double latitude, double longitude, double radius) + { + Coords coords = new Coords(); + if (latitude != null && longitude != null) + { + coords.latitude = (double)latitude; + coords.longitude = (double)longitude; + } + List ret = new List(); + ret = await _postService.BestPostForAllLocationsInRadius(coords, radius); + if (ret != null && ret.Count > 0) + return Ok(ret); + return BadRequest(); + + } } } diff --git a/Backend/Api/Api/Interfaces/IPostService.cs b/Backend/Api/Api/Interfaces/IPostService.cs index 69846b0..84d32ef 100644 --- a/Backend/Api/Api/Interfaces/IPostService.cs +++ b/Backend/Api/Api/Interfaces/IPostService.cs @@ -29,5 +29,6 @@ namespace Api.Interfaces Task> Recommended(string userid); Task addRemoveFavourite(string postId); Task> TrendingTags(); + Task> BestPostForAllLocationsInRadius(Coords coords, double radius); } } \ No newline at end of file diff --git a/Backend/Api/Api/Services/LocationService.cs b/Backend/Api/Api/Services/LocationService.cs index afb3b5b..55a52e7 100644 --- a/Backend/Api/Api/Services/LocationService.cs +++ b/Backend/Api/Api/Services/LocationService.cs @@ -99,5 +99,7 @@ namespace Api.Services } return tosend; } + + } } diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index 777389b..6f7c455 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -626,6 +626,31 @@ namespace Api.Services return tosend; } + + public async Task> BestPostForAllLocationsInRadius(Coords coords, double radius) + { + if (coords == null) + return null; + var lista = await _locations.Find(_ => true).ToListAsync(); + var inradius = new List(); + var tosend = new List(); + if (lista != null) + { + foreach (var elem in lista) + { + if (Math.Abs(elem.latitude - coords.latitude) < radius && Math.Abs(elem.longitude - coords.longitude) < radius) + inradius.Add(elem); + } + foreach (var elem in inradius) + { + var locposts = await SearchPosts(elem._id, 0, 1, 1); + var best = locposts.posts.Take(1).FirstOrDefault(); + if(best != null) + tosend.Add(best); + } + } + return tosend; + } } } -- cgit v1.2.3 From 3b2580391137e284068c04afd0a03c27602f925d Mon Sep 17 00:00:00 2001 From: "branislav.radivojevic" Date: Mon, 5 Dec 2022 20:15:57 +0100 Subject: osnovna statistika korisnika --- Backend/Api/Api/Controllers/UserController.cs | 23 +++++++++++++++++ Backend/Api/Api/Interfaces/IPostService.cs | 1 + Backend/Api/Api/Models/User.cs | 15 +++++++++++ Backend/Api/Api/Services/PostService.cs | 37 +++++++++++++++++++++++++++ Backend/Api/Api/Services/UserService.cs | 1 + 5 files changed, 77 insertions(+) (limited to 'Backend') diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs index 4d7905a..97f2f8b 100644 --- a/Backend/Api/Api/Controllers/UserController.cs +++ b/Backend/Api/Api/Controllers/UserController.cs @@ -123,5 +123,28 @@ namespace Api.Controllers { return Ok(await _userService.GetMyFollowers()); } + + [HttpGet("profile/stats")] + [Authorize(Roles = "User")] + public async Task> SelfStats() + { + var id = await _userService.UserIdFromJwt(); + var tosend = await _postService.UserStats(id); + if (tosend != null) + return Ok(tosend); + return BadRequest(); + } + [HttpGet("{username}/profile/stats")] + [Authorize(Roles = "User")] + public async Task> GetStats(string username) + { + var rez = await _userService.GetUserData(username); + if (rez == null) + return BadRequest(); + var tosend = await _postService.UserStats(rez._id); + if (tosend != null) + return Ok(tosend); + return BadRequest(); + } } } diff --git a/Backend/Api/Api/Interfaces/IPostService.cs b/Backend/Api/Api/Interfaces/IPostService.cs index 84d32ef..c854601 100644 --- a/Backend/Api/Api/Interfaces/IPostService.cs +++ b/Backend/Api/Api/Interfaces/IPostService.cs @@ -30,5 +30,6 @@ namespace Api.Interfaces Task addRemoveFavourite(string postId); Task> TrendingTags(); Task> BestPostForAllLocationsInRadius(Coords coords, double radius); + Task UserStats(string userid); } } \ No newline at end of file diff --git a/Backend/Api/Api/Models/User.cs b/Backend/Api/Api/Models/User.cs index 6c777e7..cf16dbe 100644 --- a/Backend/Api/Api/Models/User.cs +++ b/Backend/Api/Api/Models/User.cs @@ -72,4 +72,19 @@ namespace Api.Models } + + public class UserStats + { + public int totalViews { get; set; } + public int numberOfPosts { get; set; } + public int numberOfRatingsOnPosts { get; set; } + public double averagePostRatingOnPosts {get; set; } + public List monthlyViews { get; set; } + } + + public class MonthlyViews + { + public int month { get; set; } + public int views { get; set; } + } } diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs index 6f7c455..6d28206 100644 --- a/Backend/Api/Api/Services/PostService.cs +++ b/Backend/Api/Api/Services/PostService.cs @@ -651,6 +651,43 @@ namespace Api.Services } return tosend; } + + public async Task UserStats(string userid) + { + var posts = await GetUsersPosts(userid); + var stats = new UserStats(); + double ratingsum = 0; + stats.averagePostRatingOnPosts = 0; + stats.numberOfRatingsOnPosts = 0; + stats.numberOfPosts = 0; + stats.totalViews = 0; + stats.monthlyViews = new List(); + + + if(posts != null) + { + for(int i = 1; i <= 12; i++) + { + var novi = new MonthlyViews(); + novi.month = i; + novi.views = 0; + stats.monthlyViews.Add(novi); + } + + foreach (var post in posts) + { + var month = post.createdAt.Month; + stats.monthlyViews.FirstOrDefault(x => x.month == month).views += post.views; + stats.totalViews += post.views; + stats.numberOfRatingsOnPosts += post.ratingscount; + stats.numberOfPosts++; + ratingsum += post.ratings * post.ratingscount; + } + if(stats.numberOfRatingsOnPosts > 0) //don't forget to check div by 0 jesus + stats.averagePostRatingOnPosts = ratingsum / stats.numberOfRatingsOnPosts; + } + return stats; + } } } diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index ec67729..666dd98 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -663,6 +663,7 @@ namespace Api.Services return null; } + } } -- cgit v1.2.3 From 8e563f959c168a9778658c5fa2a2b143730d44fa Mon Sep 17 00:00:00 2001 From: TAMARA JERINIC Date: Tue, 6 Dec 2022 04:17:14 +0100 Subject: Dodate funkcije za izmenu korisničkog imena i imena na back-u. Dodata aktivnost za izmenu korisničkog naloga. Izmenjen fragment myProfileInfo. Izmenjen FragmentProfile. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/Api/Api/Controllers/UserController.cs | 18 +++ Backend/Api/Api/Interfaces/IUserService.cs | 4 + Backend/Api/Api/Services/UserService.cs | 50 ++++++ .../.idea/deploymentTargetDropDown.xml | 2 +- .../Activities/ActivityChangeUserData.kt | 116 ++++++++++++++ .../Activities/ActivitySinglePost.kt | 6 +- .../Fragments/FragmentMyProfileInfo.kt | 31 ++-- .../brzodolokacije/Interfaces/IBackendApi.kt | 3 + .../main/res/drawable/ic_baseline_logout_24.xml | 5 + .../res/drawable/ic_outline_account_circle_24.xml | 6 + .../res/drawable/ic_outline_change_circle_24.xml | 5 + .../src/main/res/drawable/ic_outline_share_24.xml | 5 + .../src/main/res/drawable/ic_outline_stats_24.xml | 5 + .../src/main/res/drawable/ic_round_check_24.xml | 5 + .../res/drawable/ic_round_favorite_border_24.xml | 5 + .../main/res/layout/activity_change_user_data.xml | 71 ++++++++- .../src/main/res/layout/activity_user_profile.xml | 47 +++--- .../main/res/layout/fragment_my_profile_info.xml | 65 ++++++-- .../app/src/main/res/layout/fragment_profile.xml | 175 +++++++++++---------- .../app/src/main/res/values/styles.xml | 17 ++ 20 files changed, 489 insertions(+), 152 deletions(-) create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml create mode 100644 Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml (limited to 'Backend') diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs index 97f2f8b..4937467 100644 --- a/Backend/Api/Api/Controllers/UserController.cs +++ b/Backend/Api/Api/Controllers/UserController.cs @@ -146,5 +146,23 @@ namespace Api.Controllers return Ok(tosend); return BadRequest(); } + + [HttpGet("{newUsername}/profile/changeMyUsername")] + [Authorize(Roles = "User")] + public async Task> ChangeMyProfileUsername(string newUsername) + { + return await _userService.ChangeMyProfileUsername(newUsername); + } + + + [HttpGet("{id}/changeMyName")] + [Authorize(Roles = "User")] + public async Task> ChangeMyProfileName(string newName) + { + return Ok(await _userService.ChangeMyProfileName(newName)); + } + + + } } diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs index 95dd46d..f4954e0 100644 --- a/Backend/Api/Api/Interfaces/IUserService.cs +++ b/Backend/Api/Api/Interfaces/IUserService.cs @@ -37,5 +37,9 @@ namespace Api.Interfaces Task> GetMyFollowers(); + Task ChangeMyProfileUsername(String newUsername); + Task ChangeMyProfileName(String newUsername); + + } } diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs index 666dd98..8597503 100644 --- a/Backend/Api/Api/Services/UserService.cs +++ b/Backend/Api/Api/Services/UserService.cs @@ -664,6 +664,56 @@ namespace Api.Services return null; } + public async Task ChangeMyProfileUsername(string newUsername) + { + 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) + { + + //da li username vec postoji? + if (await _users.Find(x => x.username == newUsername).FirstOrDefaultAsync() != null) + { + //vec postoji korisnik sa navedenim korisnickim imenom + return -1; + } + else + { + u.username = newUsername; + await _users.ReplaceOneAsync(x => x._id == u._id, u); + return 1; + } + + } + return -2; + + } + + public async Task ChangeMyProfileName(string newName) + { + 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) + { + + u.name = newName; + await _users.ReplaceOneAsync(x => x._id == u._id, u); + return true; + + } + return false; + } + + } } diff --git a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml index 394c76a..883083b 100644 --- a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml +++ b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt index 820ccfc..3dee6ac 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityChangeUserData.kt @@ -1,11 +1,127 @@ package com.example.brzodolokacije.Activities +import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.util.Log +import android.widget.EditText +import android.widget.ImageView +import android.widget.TextView +import android.widget.Toast +import androidx.core.view.isGone +import androidx.core.view.isVisible +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.Callback +import retrofit2.Response class ActivityChangeUserData : AppCompatActivity() { + private lateinit var username:EditText + private lateinit var name:EditText + private lateinit var editName:ImageView + private lateinit var editUsername:ImageView + private lateinit var confirmName:ImageView + private lateinit var confirmUsername:ImageView + private lateinit var errorName:TextView + private lateinit var errorUsername:TextView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_change_user_data) + + username=findViewById(R.id.tvActivityChangeUserDataUsername) + name=findViewById(R.id.tvActivityChangeUserDataName) + editName=findViewById(R.id.btnActivityChangeUserDataName) + editUsername=findViewById(R.id.btnActivityChangeUserDataUsername) + confirmName=findViewById(R.id.btnActivityChangeUserDataNameConfirm) + confirmUsername=findViewById(R.id.btnActivityChangeUserDataUsernameConfirm) + errorName=findViewById(R.id.btnActivityChangeUserDataNameError) + errorUsername=findViewById(R.id.btnActivityChangeUserDataUsernameError) + + editUsername.isClickable=true + editUsername.isVisible=true + editUsername.isEnabled=true + editUsername.isGone=false + confirmUsername.isClickable=false + confirmUsername.isVisible=false + confirmUsername.isEnabled=false + confirmUsername.isGone=true + + getUser() + + editUsername.setOnClickListener{ + username.setText("") + editUsername.isClickable=false + editUsername.isVisible=false + editUsername.isEnabled=false + editUsername.isGone=true + confirmUsername.isClickable=true + confirmUsername.isVisible=true + confirmUsername.isEnabled=true + confirmUsername.isGone=false + + //dodati on change listener + confirmUsername.setOnClickListener { + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityChangeUserData) + var data = api.changeMyUsername("Bearer " + token,username.toString().trim()); + data.enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response + ) { + var res=response.body()!! + Log.d("res",res.toString()) + if(res==-1){ + errorUsername.setText("Izaberite drugo korisničko ime") + errorUsername.setTextColor(Color.RED) + } + else if(res==-2){ + errorUsername.setText("Nije moguće promeniti korisničko ime") + errorUsername.setTextColor(Color.RED) + } + else if(res==1){ + errorUsername.setText("Korisničko ime je promenjeno") + errorUsername.setTextColor(Color.GREEN) + confirmUsername.isClickable=false + confirmUsername.isVisible=false + editUsername.isClickable=true + editUsername.isVisible=true + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.d("changeUsername","failllllllllllllllllllllll") + + } + }) + + } + + } + + + } + + fun getUser(){ + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityChangeUserData) + var data = api.selfProfile("Bearer " + token); + data.enqueue(object : Callback { + override fun onResponse( + call: Call, + response: Response + ) { + var user=response.body()!! + username.setText(user.username) + name.setText(user.name) + } + + override fun onFailure(call: Call, t: Throwable) {} + }) + } } \ No newline at end of file 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 c5e30d3..2483e7e 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,14 +7,14 @@ import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.preference.PreferenceManager import android.util.Log -<<<<<<< HEAD + import android.view.ViewGroup import android.view.ViewGroup.LayoutParams import android.widget.Button -======= + import android.view.inputmethod.InputMethodManager import android.widget.EditText ->>>>>>> 951b36b54b106178200cfa4fb2bbc499ca1a2de0 + import android.widget.ImageView import android.widget.TextView import android.widget.Toast 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 9cce17f..d6e345b 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 @@ -6,36 +6,19 @@ 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 com.exam.DBHelper +import com.example.brzodolokacije.Activities.ActivityChangeUserData +import com.example.brzodolokacije.Activities.ActivityForgottenPassword import com.example.brzodolokacije.Activities.ActivityLoginRegister import com.example.brzodolokacije.R import com.example.brzodolokacije.Services.SharedPreferencesHelper -// TODO: Rename parameter arguments, choose names that match -// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER -private const val ARG_PARAM1 = "param1" -private const val ARG_PARAM2 = "param2" -/** - * A simple [Fragment] subclass. - * Use the [FragmentMyProfileInfo.newInstance] factory method to - * create an instance of this fragment. - */ class FragmentMyProfileInfo : Fragment() { private lateinit var logout:Button - // TODO: Rename and change types of parameters - private var param1: String? = null - private var param2: String? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - arguments?.let { - param1 = it.getString(ARG_PARAM1) - param2 = it.getString(ARG_PARAM2) - } - - } + private lateinit var changeAccount:Button override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -45,9 +28,15 @@ class FragmentMyProfileInfo : Fragment() { var view=inflater.inflate(R.layout.fragment_my_profile_info, container, false) logout=view.findViewById(R.id.buttonLogOut) as Button + changeAccount=view.findViewById(R.id.changeAccountData) + logout.setOnClickListener{ logOut() + } + changeAccount.setOnClickListener { + val intent = Intent (getActivity(), ActivityChangeUserData::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 60f243d..39527f2 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 @@ -112,4 +112,7 @@ interface IBackendApi { @GET("/api/Post/favourite/{id}") fun addRemoveFavourite(@Header("Authorization") authHeader:String,@Path("id") id:String):Call + @GET("/api/user/{newUsername}/changeMyUsername") + fun changeMyUsername(@Header("Authorization") authHeader:String,@Path("newUsername") newUsername:String):Call + } \ No newline at end of file diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml new file mode 100644 index 0000000..ac81ab8 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_logout_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml new file mode 100644 index 0000000..b5e6c8c --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_account_circle_24.xml @@ -0,0 +1,6 @@ + + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml new file mode 100644 index 0000000..1a36910 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_change_circle_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml new file mode 100644 index 0000000..e95b628 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_share_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml new file mode 100644 index 0000000..05eb65f --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_outline_stats_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml new file mode 100644 index 0000000..a8e2c6e --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_check_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml new file mode 100644 index 0000000..0444f34 --- /dev/null +++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_round_favorite_border_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml index 43bad3c..39362b7 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_change_user_data.xml @@ -90,14 +90,13 @@ app:layout_constraintTop_toBottomOf="@+id/cvFragmentHomePageProfile" /> @@ -105,22 +104,22 @@ android:id="@+id/changeDataUsername" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="24dp" + android:layout_marginTop="40dp" android:layout_marginEnd="333dp" android:text="Korisničko ime" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" /> + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataName" /> @@ -134,7 +133,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName3" /> + app:layout_constraintTop_toBottomOf="@+id/tvActivityChangeUserDataUsername" />