diff --git a/exampleApp/src/main/java/it/trade/android/exampleapp/MainActivity.java b/exampleApp/src/main/java/it/trade/android/exampleapp/MainActivity.java index ee70dfd..cc2e69a 100644 --- a/exampleApp/src/main/java/it/trade/android/exampleapp/MainActivity.java +++ b/exampleApp/src/main/java/it/trade/android/exampleapp/MainActivity.java @@ -450,12 +450,13 @@ private void getPositionsFirstLinkedBroker() { showAlert("getPositionsFirstLinkedBroker", "No linked broker accounts detected for first linked broker! Try authenticating."); } else { TradeItLinkedBrokerParcelable linkedBroker = linkedBrokers.get(0); - for (TradeItLinkedBrokerAccountParcelable linkedBrokerAccount : linkedBroker.getAccounts()) { + for (final TradeItLinkedBrokerAccountParcelable linkedBrokerAccount : linkedBroker.getAccounts()) { linkedBrokerAccount.refreshPositions( new TradeItCallback>() { @Override public void onSuccess(List positions) { Intent intent = new Intent(mainActivity, PositionsActivity.class); + intent.putExtra(PARCELED_ACCOUNT_PARAMETER, linkedBrokerAccount); intent.putParcelableArrayListExtra(POSITIONS_PARAMETER, (ArrayList) positions); startActivity(intent); } diff --git a/exampleApp/src/main/java/it/trade/android/exampleapp/PositionsActivity.java b/exampleApp/src/main/java/it/trade/android/exampleapp/PositionsActivity.java index 4f3eb86..ca42d79 100644 --- a/exampleApp/src/main/java/it/trade/android/exampleapp/PositionsActivity.java +++ b/exampleApp/src/main/java/it/trade/android/exampleapp/PositionsActivity.java @@ -8,7 +8,10 @@ import java.util.List; +import it.trade.android.sdk.model.TradeItLinkedBrokerAccountParcelable; import it.trade.android.sdk.model.TradeItPositionParcelable; +import it.trade.model.TradeItErrorResult; +import it.trade.model.callback.TradeItCallback; import static it.trade.android.exampleapp.MainActivity.POSITIONS_PARAMETER; @@ -19,10 +22,29 @@ public class PositionsActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_positions); - TextView textView = (TextView) this.findViewById(R.id.positions_textview); + final TextView textView = (TextView) this.findViewById(R.id.positions_textview); textView.setMovementMethod(new ScrollingMovementMethod()); Intent intent = getIntent(); List positions = intent.getParcelableArrayListExtra(POSITIONS_PARAMETER); textView.setText(positions.toString()); + TradeItLinkedBrokerAccountParcelable linkedBrokerAccount = intent.getParcelableExtra(MainActivity.PARCELED_ACCOUNT_PARAMETER); + TradeItPositionParcelable position = null; + for (TradeItPositionParcelable positionParcelable: positions) { + if (positionParcelable.isProxyVoteEligible) { + position = positionParcelable; + break; + } + } + linkedBrokerAccount.getProxyVoteUrl(position.symbol, new TradeItCallback() { + @Override + public void onSuccess(String proxyVoteUrl) { + textView.setText("Proxyvote url for last position: " + proxyVoteUrl); + } + + @Override + public void onError(TradeItErrorResult error) { + textView.setText("Error getting Proxyvote url for last position: " + error); + } + }); } } diff --git a/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/MainActivity.kt b/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/MainActivity.kt index c00759e..7279dd0 100644 --- a/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/MainActivity.kt +++ b/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/MainActivity.kt @@ -376,6 +376,7 @@ class MainActivity : AppCompatActivity() { object : TradeItCallback> { override fun onSuccess(positions: List) { val intent = Intent(mainActivity, PositionsActivity::class.java) + intent.putExtra(PARCELED_ACCOUNT_PARAMETER, linkedBrokerAccount) intent.putParcelableArrayListExtra(POSITIONS_PARAMETER, positions as ArrayList) startActivity(intent) } diff --git a/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/PositionsActivity.kt b/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/PositionsActivity.kt index 87a2018..067af92 100644 --- a/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/PositionsActivity.kt +++ b/exampleAppKotlin/src/main/kotlin/it/trade/android/exampleapp/PositionsActivity.kt @@ -4,7 +4,10 @@ import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.text.method.ScrollingMovementMethod import android.widget.TextView +import it.trade.android.sdk.model.TradeItLinkedBrokerAccountParcelable import it.trade.android.sdk.model.TradeItPositionParcelable +import it.trade.model.TradeItErrorResult +import it.trade.model.callback.TradeItCallback class PositionsActivity : AppCompatActivity() { @@ -16,6 +19,20 @@ class PositionsActivity : AppCompatActivity() { textView!!.movementMethod = ScrollingMovementMethod() val intent = intent val positions = intent.getParcelableArrayListExtra(MainActivity.POSITIONS_PARAMETER) + val linkedBrokerAccount = intent.getParcelableExtra(MainActivity.PARCELED_ACCOUNT_PARAMETER) textView.text = positions.toString() + val position = positions.find { it.isProxyVoteEligible } + position?.let { + linkedBrokerAccount.getProxyVoteUrl(it.symbol, object : TradeItCallback { + override fun onSuccess(proxyVoteUrl: String) { + textView.text = "Proxyvote url for last position: " + proxyVoteUrl + } + + override fun onError(error: TradeItErrorResult?) { + textView.text = "Error getting Proxyvote url for last position: " + error + } + + }) + } } } diff --git a/tradeit-android-sdk/build.gradle b/tradeit-android-sdk/build.gradle index 6070717..9cd6a43 100644 --- a/tradeit-android-sdk/build.gradle +++ b/tradeit-android-sdk/build.gradle @@ -58,7 +58,7 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:appcompat-v7:27.1.1' - api 'it.trade:tradeit-java-api:1.1.18' + api 'it.trade:tradeit-java-api:1.1.19' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' // Because RxAndroid releases are few and far between, it is recommended you also // explicitly depend on RxJava's latest version for bug fixes and new features. diff --git a/tradeit-android-sdk/src/androidTest/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelableTest.kt b/tradeit-android-sdk/src/androidTest/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelableTest.kt index 914f50e..9c150ac 100644 --- a/tradeit-android-sdk/src/androidTest/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelableTest.kt +++ b/tradeit-android-sdk/src/androidTest/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelableTest.kt @@ -67,6 +67,7 @@ class TradeItLinkedBrokerAccountParcelableTest { position.quantity = 12.00 position.symbol = "GE" position.lastPrice = 29.84 + position.isProxyVoteEligible = false val positions = ArrayList() positions.add(position) linkedBrokerAccount!!.positions = positions diff --git a/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelable.kt b/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelable.kt index 77262ee..08aac56 100644 --- a/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelable.kt +++ b/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItLinkedBrokerAccountParcelable.kt @@ -191,6 +191,28 @@ class TradeItLinkedBrokerAccountParcelable : Parcelable { ) } + fun getProxyVoteUrl(symbol: String, callback: TradeItCallback) { + this.tradeItApiClient?.getProxyVoteUrl( + accountNumber, + symbol, + object : TradeItCallback { + override fun onSuccess(response: TradeItProxyVoteUrlResponse) { + response.proxyVoteUrl?.let { callback.onSuccess(it)} + ?: callback.onError(TradeItErrorResultParcelable( + TradeItErrorCode.SYSTEM_ERROR, + "Position not eligible", + arrayListOf("This position is not eligible to proxy voting") + )) + } + + override fun onError(error: TradeItErrorResult) { + val errorResultParcelable = TradeItErrorResultParcelable(error) + callback.onError(errorResultParcelable) + } + } + ) + } + private fun mapPositionsToPositionsParcelable(positions: List): List { val positionsParcelable = ArrayList() for (position in positions) { diff --git a/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItPositionParcelable.kt b/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItPositionParcelable.kt index a176b8b..f2978ed 100644 --- a/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItPositionParcelable.kt +++ b/tradeit-android-sdk/src/main/kotlin/it/trade/android/sdk/model/TradeItPositionParcelable.kt @@ -2,7 +2,6 @@ package it.trade.android.sdk.model import android.os.Parcel import android.os.Parcelable - import it.trade.model.reponse.TradeItPosition class TradeItPositionParcelable : TradeItPosition, Parcelable { @@ -22,6 +21,7 @@ class TradeItPositionParcelable : TradeItPosition, Parcelable { this.totalGainLossAbsolute = position.totalGainLossAbsolute this.exchange = position.exchange this.currency = position.currency + this.isProxyVoteEligible = position.isProxyVoteEligible } constructor() : super() {} @@ -45,6 +45,7 @@ class TradeItPositionParcelable : TradeItPosition, Parcelable { dest.writeValue(this.totalGainLossAbsolute) dest.writeString(this.exchange) dest.writeString(this.currency) + dest.writeByte((if (isProxyVoteEligible) 1 else 0).toByte()) } protected constructor(`in`: Parcel) { @@ -62,6 +63,7 @@ class TradeItPositionParcelable : TradeItPosition, Parcelable { this.totalGainLossAbsolute = `in`.readValue(Double::class.java.getClassLoader()) as? Double this.exchange = `in`.readString() this.currency = `in`.readString() + this.isProxyVoteEligible = `in`.readByte().toInt() != 0 } companion object {