From 91a2519d714fadecfcc14a8fb88b511f23fc21ed Mon Sep 17 00:00:00 2001 From: Ognjen Cirkovic Date: Fri, 18 Nov 2022 21:56:36 +0100 Subject: Dodato dugme za izbor lokacije na stranici za dodavanje objave. Omoguceno dodavanje lokacije sa koordinata i osnovnim informacijama o lokaciji. --- Backend/Api/Api/Services/LocationService.cs | 10 +++--- .../brzodolokacije/Activities/ActivityAddPost.kt | 37 ++++++++++++++++------ .../brzodolokacije/Activities/MapsActivity.kt | 2 +- .../app/src/main/res/layout/activity_add_post.xml | 16 ++++++++-- 4 files changed, 49 insertions(+), 16 deletions(-) diff --git a/Backend/Api/Api/Services/LocationService.cs b/Backend/Api/Api/Services/LocationService.cs index c91a1b5..afb3b5b 100644 --- a/Backend/Api/Api/Services/LocationService.cs +++ b/Backend/Api/Api/Services/LocationService.cs @@ -31,10 +31,12 @@ namespace Api.Services } public async Task add(Location loc) { - IEnumerable
adresses = await _geocoder.GeocodeAsync(loc.name+" "+loc.address+" "+loc.city+" "+loc.country); - loc.country = loc.name; - loc.latitude = adresses.First().Coordinates.Latitude; - loc.longitude=adresses.First().Coordinates.Longitude; + + //On Client side + //IEnumerable
adresses = await _geocoder.GeocodeAsync(loc.name+" "+loc.address+" "+loc.city+" "+loc.country); + //loc.country = loc.name; + //loc.latitude = adresses.First().Coordinates.Latitude; + //loc.longitude=adresses.First().Coordinates.Longitude; await _locations.InsertOneAsync(loc); return loc; 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 b9e4fd7..d5712cc 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 @@ -17,16 +17,15 @@ import com.example.brzodolokacije.Models.Location import com.example.brzodolokacije.Models.LocationType import com.example.brzodolokacije.Models.PostPreview import com.example.brzodolokacije.R +import com.example.brzodolokacije.Services.GeocoderHelper import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper -import okhttp3.MediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.Call import retrofit2.Response import java.io.File -import java.io.IOException class ActivityAddPost : AppCompatActivity() { @@ -42,6 +41,11 @@ class ActivityAddPost : AppCompatActivity() { private lateinit var locationString:String private lateinit var descriptionString:String private lateinit var post:Button + private lateinit var addLocation:Button + val incorectCoord:Double=1000.0 + val LOCATIONREQCODE=123 + var longitude:Double=incorectCoord + var latitude:Double=incorectCoord //private var paths :ArrayList?=null private var place=0; override fun onCreate(savedInstanceState: Bundle?) { @@ -61,6 +65,7 @@ class ActivityAddPost : AppCompatActivity() { location=findViewById(R.id.etActivityAddPostLocation) as EditText description=findViewById(R.id.etActivityAddPostDescription) as EditText post=findViewById(R.id.btnActivityAddPostPost) as Button + addLocation=findViewById(R.id.btnActivityAddPostAddLocation) as Button switcher?.setFactory{ @@ -68,6 +73,10 @@ class ActivityAddPost : AppCompatActivity() { imgView.scaleType = ImageView.ScaleType.CENTER_CROP imgView.setPadding(8, 8, 8, 8) imgView} + addLocation.setOnClickListener { + val myIntent = Intent(this, MapsActivity::class.java) + startActivityForResult(myIntent,LOCATIONREQCODE) + } //dodavanje iz galerije uploadFromGallery.setOnClickListener{ @@ -116,7 +125,7 @@ class ActivityAddPost : AppCompatActivity() { descriptionString=description.text.toString().trim() //prazan unos? if(locationString.isEmpty()) { - location.hint="Unesite lokaciju" + location.hint="Unesite naziv lokaciju" location.setHintTextColor(Color.RED) } if(descriptionString.isEmpty()) { @@ -124,7 +133,7 @@ class ActivityAddPost : AppCompatActivity() { description.setHintTextColor(Color.RED) } - if(!locationString.isEmpty() && !descriptionString.isEmpty()){ + if(!locationString.isEmpty() && !descriptionString.isEmpty() && longitude!=incorectCoord && latitude!=incorectCoord){ sendPost() } } @@ -162,14 +171,26 @@ class ActivityAddPost : AppCompatActivity() { uploadFromGallery.isVisible=false } } + if(requestCode==LOCATIONREQCODE && resultCode== RESULT_OK){ + var bundle=data!!.extras + longitude=bundle!!.getDouble("longitude",incorectCoord) + latitude=bundle!!.getDouble("latitude",incorectCoord) + } } private fun sendPost(){ uploadLocation() } fun uploadLocation() { + //TO DO SEARCH EXISTING LOCATION FROM DB + //IF NOT EXISTS ADD NEW LOCATION val api =RetrofitHelper.getInstance() - var loc:Location=Location("",locationString,"","","",0.0,0.0,LocationType.GRAD) + var geocoder=GeocoderHelper.getInstance() + var loc1=geocoder!!.getFromLocation(latitude,longitude,1) + var countryName=loc1[0].countryName + var address="todo not possible in query" + var city=loc1[0].adminArea//not possible + var loc:Location=Location("",locationString,city,countryName,address,latitude,longitude,LocationType.GRAD) var jwtString= SharedPreferencesHelper.getValue("jwt",this) var data=api.addLocation("Bearer "+jwtString,loc) @@ -177,12 +198,11 @@ class ActivityAddPost : AppCompatActivity() { data.enqueue(object : retrofit2.Callback { override fun onResponse(call: Call, response: Response) { if(response.isSuccessful()){ + + uploadPost(response.body()!!._id) Toast.makeText( applicationContext, "USPEH", Toast.LENGTH_LONG ).show(); - uploadPost(response.body()!!._id) - Log.d("MAIN","RADI") - Log.d("MAIN","RADI") }else { @@ -190,7 +210,6 @@ class ActivityAddPost : AppCompatActivity() { Log.d("Main",response.errorBody()!!.string()) Log.d("Main",response.message()) } - Log.d("Main","sadadsa") Log.d("Main",response.errorBody()!!.string()) Log.d("Main",response.message()) } diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt index e8b9ceb..b9e3b08 100644 --- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt +++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt @@ -78,7 +78,7 @@ class MapsActivity : AppCompatActivity() { } confirmButton.setOnClickListener{ if(locLatitude!=null && locLatitude!=null) - returnValue() + returnValue() } searchBar.setOnKeyListener(View.OnKeyListener { v1, keyCode, event -> // If the event is a key-down event on the "enter" button if (event.action === KeyEvent.ACTION_DOWN && diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml index a7a6e06..6c9b40f 100644 --- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml +++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_add_post.xml @@ -73,7 +73,7 @@ +