Improve query to obtain the merchants information from the webservice. Move the Merchant model to the entities folder and annotate it so it can be used to create a Room table. Create the Teller entity to be used to fetch the Tellers info from the webservice and create the tellers Room table. Removed not needed classes Ambassador and AmbassadorLocation.

This commit is contained in:
Severiano Jaramillo 2019-01-22 13:11:23 -06:00
parent 4c3822e8c1
commit e043b83b36
8 changed files with 56 additions and 98 deletions

View file

@ -0,0 +1,18 @@
package cy.agorise.bitsybitshareswallet.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "merchants")
data class Merchant(
@PrimaryKey
@ColumnInfo(name = "id") val _id: String,
@ColumnInfo(name = "name") val name: String,
@ColumnInfo(name = "address") val address: String,
@ColumnInfo(name = "lat") val lat: Float,
@ColumnInfo(name = "lon") val lon: Float,
@ColumnInfo(name = "phone") val phone: String,
@ColumnInfo(name = "telegram") val telegram: String,
@ColumnInfo(name = "website") val website: String
)

View file

@ -0,0 +1,18 @@
package cy.agorise.bitsybitshareswallet.database.entities
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "tellers")
data class Teller(
@PrimaryKey
@ColumnInfo(name = "id") val _id: String,
@ColumnInfo(name = "name") val gt_name: String,
@ColumnInfo(name = "address") val address: String,
@ColumnInfo(name = "lat") val lat: Float,
@ColumnInfo(name = "lon") val lon: Float,
@ColumnInfo(name = "phone") val phone: String,
@ColumnInfo(name = "telegram") val telegram: String,
@ColumnInfo(name = "website") val url: String
)

View file

@ -15,8 +15,7 @@ import com.google.android.gms.maps.model.MarkerOptions
import com.google.gson.GsonBuilder
import cy.agorise.bitsybitshareswallet.R
import cy.agorise.bitsybitshareswallet.models.Merchant
import cy.agorise.bitsybitshareswallet.network.AmbassadorService
import cy.agorise.bitsybitshareswallet.network.MerchantsWebservice
import cy.agorise.bitsybitshareswallet.network.FeathersResponse
import retrofit2.Call
import retrofit2.Response
@ -27,6 +26,7 @@ import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.Drawable
import com.google.android.gms.maps.model.BitmapDescriptor
import cy.agorise.bitsybitshareswallet.database.entities.Merchant
import cy.agorise.bitsybitshareswallet.utils.Constants
@ -53,8 +53,6 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback, retrofit2.Callback<Fea
mapFragment.getMapAsync(this)
merchantIcon = getMarkerIconFromDrawable(resources.getDrawable(R.drawable.ic_pin_merchants, null))
// TODO https://github.com/Agorise/bitsy-wallet/blob/feat_merchants/app/src/main/java/cy/agorise/bitsybitshareswallet/fragments/MapFragment.kt
}
/**
@ -77,8 +75,8 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback, retrofit2.Callback<Fea
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
val ambassadorService = retrofit.create<AmbassadorService>(AmbassadorService::class.java)
val call = ambassadorService.allMerchants
val ambassadorService = retrofit.create<MerchantsWebservice>(MerchantsWebservice::class.java)
val call = ambassadorService.getMerchants(0)
call.enqueue(this)
}

View file

@ -1,5 +0,0 @@
package cy.agorise.bitsybitshareswallet.models
class Ambassador(var id: String?, var account: String?, var country: String?, var city: String?) {
var cityId: String? = null
}

View file

@ -1,29 +0,0 @@
package cy.agorise.bitsybitshareswallet.models
import androidx.annotation.NonNull
class AmbassadorLocation(
var id: String?,
var name: String?,
var country: String?
) : Comparable<AmbassadorLocation> {
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
}
}

View file

@ -1,37 +0,0 @@
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
}
}

View file

@ -1,21 +0,0 @@
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<FeathersResponse<Merchant>>
@GET("/api/v1/ambassadors")
fun getAmbassadors(@Query("cityId") cityId: String): Call<FeathersResponse<Ambassador>>
@GET("/api/v1/cities")
fun getAllCitiesSync(@Query("\$skip") skip: Long): Call<FeathersResponse<AmbassadorLocation>>
}

View file

@ -0,0 +1,16 @@
package cy.agorise.bitsybitshareswallet.network
import cy.agorise.bitsybitshareswallet.database.entities.Merchant
import cy.agorise.bitsybitshareswallet.database.entities.Teller
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Query
interface MerchantsWebservice {
@GET("/api/v1/merchants")
fun getMerchants(@Query(value = "\$skip") skip: Int): Call<FeathersResponse<Merchant>>
@GET("api/v2/tellers")
fun getTellers(@Query(value = "\$skip") skip: Int): Call<FeathersResponse<Teller>>
}