diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b234a73..e941a4d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ location permissions for the 'MyLocation' functionality. --> + > { private lateinit var mMap: GoogleMap + private var location: LatLng? = null + private var merchants: List? = null + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -32,6 +45,8 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback { val mapFragment = childFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) + + // TODO https://github.com/Agorise/bitsy-wallet/blob/feat_merchants/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MapFragment.kt } /** @@ -46,10 +61,43 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback { override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap - // Add a marker in Sydney and move the camera - val sydney = LatLng(-34.0, 151.0) - mMap.addMarker(MarkerOptions().position(sydney).title("Marker in Sydney")) - mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) +// val gson = GsonBuilder() +// .setLenient() +// .create() +// val retrofit = Retrofit.Builder() +// .baseUrl("https://intranet.palmpay.io/") +// .addConverterFactory(GsonConverterFactory.create(gson)) +// .build() +// +// val ambassadorService = retrofit.create(AmbassadorService::class.java) +// val call = ambassadorService.allMerchants +// call.enqueue(this) + } + + override fun onResponse(call: Call>, response: Response>) { + if (response.isSuccessful) { + val res: FeathersResponse? = response.body() + merchants = res!!.data + for (mer in merchants!!) { + location = LatLng(mer.lat.toDouble(), mer.lon.toDouble()) + mMap.addMarker( + MarkerOptions().position(location!!).title(mer.name).snippet(mer.address).icon( + BitmapDescriptorFactory.fromResource(R.drawable.ic_merchants) + ) + ) + } + } else { + try { + Log.e("error_bitsy", response.errorBody()?.string()) + } catch (e: IOException) { + e.printStackTrace() + } + + } + } + + override fun onFailure(call: Call>, t: Throwable) { + } } diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Ambassador.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Ambassador.kt new file mode 100644 index 0000000..f02947d --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Ambassador.kt @@ -0,0 +1,5 @@ +package cy.agorise.bitsybitshareswallet.models + +class Ambassador(var id: String?, var account: String?, var country: String?, var city: String?) { + var cityId: String? = null +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/AmbassadorLocation.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/AmbassadorLocation.kt new file mode 100644 index 0000000..8e44024 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/AmbassadorLocation.kt @@ -0,0 +1,29 @@ +package cy.agorise.bitsybitshareswallet.models + +import androidx.annotation.NonNull + +class AmbassadorLocation( + var id: String?, + var name: String?, + var country: String? +) : Comparable { + + override fun toString(): String { + return this.name!! + } + + override fun equals(other: Any?): Boolean { + return other is AmbassadorLocation && id == other.id + } + + override fun compareTo(@NonNull other: AmbassadorLocation): Int { + return name!!.compareTo(other.name!!) + } + + override fun hashCode(): Int { + var result = id?.hashCode() ?: 0 + result = 31 * result + (name?.hashCode() ?: 0) + result = 31 * result + (country?.hashCode() ?: 0) + return result + } +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Merchant.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Merchant.kt new file mode 100644 index 0000000..1059a7b --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/models/Merchant.kt @@ -0,0 +1,37 @@ +package cy.agorise.bitsybitshareswallet.models + +import java.util.* + +class Merchant { + + var id: String? = null + var address: String? = null + var phone: String? = null + var name: String? = null + var lat: Float = 0F + var lon: Float = 0F + var city: String? = null + var country: String? = null + var createdAt: Date? = null + var updatedAt: Date? = null + var __v: Int = 0 + + constructor() {} + constructor(id: String) { + this.id = id + } + + constructor(_id: String, address: String, phone: String, name: String, lat: Float, lon: Float, city: String, country: String, createdAt: Date, updatedAt: Date, __v: Int) { + this.id = _id + this.address = address + this.phone = phone + this.name = name + this.lat = lat + this.lon = lon + this.city = city + this.country = country + this.createdAt = createdAt + this.updatedAt = updatedAt + this.__v = __v + } +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/network/AmbassadorService.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/AmbassadorService.kt new file mode 100644 index 0000000..e714da2 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/AmbassadorService.kt @@ -0,0 +1,21 @@ +package cy.agorise.bitsybitshareswallet.network + +import cy.agorise.bitsybitshareswallet.models.Ambassador +import cy.agorise.bitsybitshareswallet.models.AmbassadorLocation +import cy.agorise.bitsybitshareswallet.models.Merchant +import retrofit2.Call +import retrofit2.http.GET +import retrofit2.http.Query + +interface AmbassadorService { + + //https://ambpay.palmpay.io/api/v1/merchants?%24sort%5Baccount%5D=1&%24limit=50&%24skip=0 + @get:GET("/api/v1/merchants?%24sort%5Baccount%5D=1&%24limit=50&%24skip=0") + val allMerchants: Call> + + @GET("/api/v1/ambassadors") + fun getAmbassadors(@Query("cityId") cityId: String): Call> + + @GET("/api/v1/cities") + fun getAllCitiesSync(@Query("\$skip") skip: Long): Call> +} \ No newline at end of file diff --git a/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FeathersResponse.kt b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FeathersResponse.kt new file mode 100644 index 0000000..70ddbc4 --- /dev/null +++ b/app/src/main/java/cy/agorise/bitsybitshareswallet/network/FeathersResponse.kt @@ -0,0 +1,19 @@ +package cy.agorise.bitsybitshareswallet.network + +class FeathersResponse(private val error: Throwable?) { + var total: Long = 0 + var limit: Long = 0 + var skip: Long = 0 + var data: List? = null + + val isSuccessful: Boolean + get() = error == null && data != null + + fun message(): String { + return if (error != null) { + error.message!! + } else { + "" + } + } +} \ No newline at end of file