Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.sbtech.android.features.sportsbook.repo
- import com.google.gson.Gson
- import com.sbtech.android.features.common.Mapper
- import com.sbtech.android.features.common.MethodDelegate
- import com.sbtech.android.features.common.extensions.fromJson
- import com.sbtech.android.features.sportsbook.EventKeys
- import com.sbtech.android.features.sportsbook.TranslationKeys
- import com.sbtech.android.features.sportsbook.UpdateType
- import com.sbtech.android.features.sportsbook.entity.*
- import com.sbtech.android.features.sportsbook.eventList.SportsbookRecycleAdapter.Companion.ITEM_AMERICAN_CARD
- import com.sbtech.android.features.sportsbook.eventList.SportsbookRecycleAdapter.Companion.ITEM_EUROPEAN_CARD
- import com.sbtech.android.features.sportsbook.eventList.SportsbookRecycleAdapter.Companion.ITEM_OUTRIGHT_CARD
- import com.sbtech.android.features.sportsbook.response.Event
- import com.sbtech.android.features.sportsbook.response.EventsResult
- import com.sbtech.android.features.sportsbook.response.Market
- import com.sbtech.android.features.sportsbook.response.Selection
- import com.sbtech.android.uikit.composite.selections.SbtSelection.Companion.STATE_DISABLED
- import com.sbtech.android.uikit.composite.selections.SbtSelection.Companion.STATE_SELECTED
- import com.sbtech.android.uikit.composite.selections.SbtSelection.Companion.STATE_SUSPENDED_ACTIVE
- import com.sbtech.android.uikit.composite.selections.SbtSelection.Companion.STATE_SUSPENDED_SELECTED
- import com.sbtech.android.uikit.composite.selections.SelectionItem
- import io.reactivex.subjects.PublishSubject
- import org.json.JSONObject
- import java.text.SimpleDateFormat
- import java.util.*
- import java.util.TimeZone.getTimeZone
- import kotlin.collections.ArrayList
- class EventsMapper(
- private val events: ArrayList<BaseSportsbookListItem>,
- private val gson: Gson,
- private val sportsbookConfig: SportsbookConfig,
- private val tickSubject: PublishSubject<Unit>,
- private val selectedOdds: List<String>,
- private val timezone: String,
- private val translationsDelegate: MethodDelegate<String, String>
- ) : Mapper<String?, EventEntity>() {
- private val dateFormatFrom = SimpleDateFormat(EventKeys.SERVER_DATE_FORMAT.key, Locale.getDefault())
- private val dateFormatTo = SimpleDateFormat(sportsbookConfig.datesFormat, Locale.getDefault())
- private val timeFormatTo = SimpleDateFormat(sportsbookConfig.timeFormatting, Locale.getDefault())
- private val selectionOrder = listOf(EventKeys.OUTCOME_TYPE_HOME.key, EventKeys.OUTCOME_TYPE_TIE.key, EventKeys.OUTCOME_TYPE_AWAY.key)
- override fun map(from: String?): EventEntity {
- val jsonObject = JSONObject(from)
- var loadedEventsCount = 0
- when (jsonObject.optString(UpdateType.TYPE.key)) {
- UpdateType.ADD.key -> {
- val payload = jsonObject.optJSONObject(EventKeys.PAYLOAD.key)
- val eventKey = payload.optString(EventKeys.EVENTS.key)
- if (!eventKey.isNullOrEmpty()) {
- addEvents(gson.fromJson<EventsResult<Event>>(from)?.payload?.updatedEvents)
- } else {
- addMarkets(gson.fromJson<EventsResult<Market>>(from)?.payload?.updatedMarkets)
- }
- }
- UpdateType.CHANGE.key -> {
- val payload = jsonObject.optJSONObject(EventKeys.PAYLOAD.key)
- val eventKey = payload.optString(EventKeys.EVENTS.key)
- if (!eventKey.isNullOrEmpty()) {
- updateEvents(gson.fromJson<EventsResult<Event>>(from)?.payload?.updatedEvents)
- } else {
- //updateMarkets(gson.fromJson<EventsResult<Market>>(from)?.payload?.updatedMarkets)
- }
- }
- UpdateType.DELETE.key -> {
- val payload = jsonObject.optJSONObject(EventKeys.PAYLOAD.key)
- val eventKey = payload.optString(EventKeys.EVENTS.key)
- if (!eventKey.isNullOrEmpty()) {
- removeEvents(gson.fromJson<EventsResult<String>>(from)?.payload?.updatedEvents)
- } else {
- //removeMarkets(gson.fromJson<EventsResult<String>>(from)?.payload?.updatedMarkets)
- }
- }
- else -> {
- val remoteEvents = gson.fromJson<EventsResult<Event>>(from)?.events
- addEvents(remoteEvents, true)
- loadedEventsCount = remoteEvents?.size ?: 0
- }
- }
- return EventEntity(loadedEventsCount, events)
- }
- /*INIT*/
- //add events
- private fun addEvents(newEvents: List<Event>?, isInit: Boolean = false) {
- newEvents?.forEach { event ->
- if (events.any { e -> e.id != event.id } || isInit) {
- if (event.type == EventKeys.CARD_TYPE_OUTRIGHT.key) {
- addOutRightEvent(event)
- } else {
- val sportType = event.sportType
- if (sportType == EventKeys.SPORT_TYPE_AMERICA.key) {
- addAmericanEvent(event, sportType)
- } else {
- addEuropeanEvent(event, sportType)
- }
- }
- }
- }
- }
- //add outright event
- private fun addOutRightEvent(remoteEvent: Event) {
- events.add(
- OutrightEventListItem(
- eventId = remoteEvent.id,
- eventName = remoteEvent.eventName ?: "",
- leagueId = remoteEvent.leagueId ?: "",
- leagueName = remoteEvent.leagueName ?: "",
- sportId = remoteEvent.sportId ?: "",
- startEventDate = formatDate(remoteEvent.startEventDate),
- clockRunning = remoteEvent.liveGameState?.clockRunning ?: false,
- clockDirection = remoteEvent.liveGameState?.clockDirection ?: "",
- marketEntities = fillMarkets(remoteEvent.markets, remoteEvent.isSuspended == true, remoteEvent.isLive == true),
- isTeamSwap = remoteEvent.isTeamSwap ?: false,
- tickSubject = tickSubject,
- created = System.currentTimeMillis() / 1000,
- timer = remoteEvent.liveGameState?.gameTime ?: 0L,
- isSuspended = remoteEvent.isSuspended,
- isLive = remoteEvent.isLive
- )
- )
- }
- private fun formatDate(dateString: String?): String {
- if (dateString.isNullOrEmpty()) {
- return ""
- }
- dateFormatFrom.timeZone = getTimeZone(EventKeys.TIME_ZONE_UTC.key)
- val date = dateFormatFrom.parse(dateString.substringBeforeLast(":"))
- if (sportsbookConfig.monthNaming == EventKeys.MONTH_NAMING_NAME.key) {
- val calendar = Calendar.getInstance()
- calendar.time = date
- val today = Calendar.getInstance()
- val yesterday = Calendar.getInstance()
- yesterday.add(Calendar.DATE, -1)
- val tomorrow = Calendar.getInstance()
- yesterday.add(Calendar.DATE, +1)
- if (calendar.get(Calendar.YEAR) == today.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR)) {
- return translationsDelegate.get(TranslationKeys.SPORTSBOOOK_TODAY_KEY.key)
- } else if (calendar.get(Calendar.YEAR) == tomorrow.get(Calendar.YEAR) && calendar.get(Calendar.DAY_OF_YEAR) == tomorrow.get(Calendar.DAY_OF_YEAR)) {
- return translationsDelegate.get(TranslationKeys.SPORTSBOOOK_TOMORROW_KEY.key)
- }
- }
- dateFormatTo.timeZone = getTimeZone(timezone)
- return dateFormatTo.format(date)
- }
- private fun formatTime(dateString: String?): String {
- if (dateString.isNullOrEmpty()) {
- return ""
- }
- dateFormatFrom.timeZone = getTimeZone(EventKeys.TIME_ZONE_UTC.key)
- val date = dateFormatFrom.parse(dateString.substringBeforeLast(":"))
- timeFormatTo.timeZone = getTimeZone(timezone)
- return timeFormatTo.format(date)
- }
- //add american event
- private fun addAmericanEvent(event: Event, sportType: String?) {
- addEuropeanEvent(event, sportType)
- }
- //add european event
- private fun addEuropeanEvent(remoteEvent: Event, sportType: String?) {
- var startEventDate = ""
- var startEventTime = ""
- if (remoteEvent.isLive == false) {
- startEventDate = formatDate(remoteEvent.startEventDate)
- startEventTime = formatTime(remoteEvent.startEventDate)
- }
- val prematchInfo = PrematchEventInfo(
- startEventDate,
- startEventTime
- )
- val event = EventListItem(
- eventId = remoteEvent.id,
- eventType = if (remoteEvent.isLive == true) EventKeys.LIVE.key else EventKeys.PREMATCH.key,
- leagueId = remoteEvent.leagueId ?: "",
- leagueName = remoteEvent.leagueName ?: "",
- totalMarketsCount = "${remoteEvent.totalMarketsCount} ${translationsDelegate.get(TranslationKeys.SPORTSBOOK_BUTTON_MORE_BETS_TEXT.key)}",
- sportId = remoteEvent.sportId ?: "",
- liveEventInfo = LiveEventInfo(
- serveIndicator = remoteEvent.score?.onServe?.toInt(),
- clockRunning = remoteEvent.liveGameState?.clockRunning ?: false,
- clockDirection = remoteEvent.liveGameState?.clockDirection ?: "",
- firstScore = remoteEvent.score?.totalScore?.first() ?: "",
- secondScore = remoteEvent.score?.totalScore?.last() ?: "",
- firstSetScore = remoteEvent.score?.currentGameScore?.first() ?: "",
- secondSetScore = remoteEvent.score?.currentGameScore?.last() ?: "",
- timer = remoteEvent.liveGameState?.gameTime ?: 0L,
- gamePart = if (!remoteEvent.liveGameState?.gamePart.isNullOrEmpty()) {
- translationsDelegate.get("${EventKeys.GAME_PART.key}${remoteEvent.liveGameState?.gamePart}")
- } else {
- ""
- }
- ),
- marketEntities = fillMarkets(remoteEvent.markets, remoteEvent.isSuspended == true, remoteEvent.isLive == true),
- prematchEventInfo = prematchInfo,
- firstTeamName = if (!remoteEvent.teamNames.isNullOrEmpty()) remoteEvent.teamNames.first() else "",
- secondTeamName = if (!remoteEvent.teamNames.isNullOrEmpty()) remoteEvent.teamNames.last() else "",
- cardType = if (sportType == EventKeys.SPORT_TYPE_AMERICA.key) ITEM_AMERICAN_CARD else ITEM_EUROPEAN_CARD,
- isTeamSwap = remoteEvent.isTeamSwap ?: false,
- tickSubject = tickSubject,
- created = System.currentTimeMillis() / 1000,
- isSuspended = remoteEvent.isSuspended,
- isLive = remoteEvent.isLive
- )
- if (remoteEvent.isTeamSwap == true) {
- applyTeamSwap(event)
- }
- events.add(event)
- }
- //add outright market
- // private fun addOutrightMarket(remoteEvent: Event): List<MarketEntity> {
- // return addEuropeanMarket(remoteEvent)
- // }
- //
- // //add american market
- // private fun addAmericanMarkets(remoteEvent: Event): List<MarketEntity> {
- // val markets = ArrayList<MarketEntity>()
- // sportsbookConfig.americanMarketsOrder.forEach {
- // markets.add(generateEmptyMarket(it))
- // }
- //
- // remoteEvent.markets?.forEach { remoteMarket ->
- // for (marketEntity in markets) {
- // if (remoteMarket.marketType.id == marketEntity.marketType.idLive || remoteMarket.marketType.id == marketEntity.marketType.idPrematch) {
- // addSelections(
- // remoteMarket.selections,
- // marketEntity.selections,
- // remoteEvent.isSuspended == true || remoteMarket.isSuspended == true
- // )
- // break
- // }
- // }
- // }
- // return markets
- // }
- //add european market
- // private fun addEuropeanMarket(remoteEvent: Event): List<MarketEntity> {
- // val markets = ArrayList<MarketEntity>()
- // markets.add(generateEmptyMarket(MarketTypeId("", ""), remoteEvent.type, remoteEvent.sportType))
- //
- // remoteEvent.markets?.forEach { remoteMarket ->
- //
- // for (marketEntity in markets) {
- // addSelections(remoteMarket.selections, marketEntity.selections, remoteEvent.isSuspended == true || remoteMarket.isSuspended == true)
- // }
- // }
- //
- // return markets
- // }
- private fun addMarkets(remoteMarkets: List<Market>?) {
- val eventId = remoteMarkets?.getOrNull(0)?.eventId
- when (val localEvent = events.find { it.id == eventId }) {
- is EventListItem -> {
- val localMarkets = fillMarkets(remoteMarkets, localEvent.isSuspended == true, localEvent.isLive == true)
- localEvent.marketEntities.addAll(localMarkets)
- }
- is OutrightEventListItem -> {
- val localMarkets = fillMarkets(remoteMarkets, localEvent.isSuspended == true, localEvent.isLive == true)
- localEvent.marketEntities.addAll(localMarkets)
- }
- }
- }
- private fun fillMarkets(remoteMarkets: List<Market>?, isSuspended: Boolean, isLiveEvent: Boolean): ArrayList<MarketEntity> {
- val localMarkets = ArrayList<MarketEntity>()
- remoteMarkets?.let {
- Collections.sort(
- it,
- compareBy { market ->
- sportsbookConfig.americanMarketsOrder.map { marketId -> if (isLiveEvent) marketId.liveId else marketId.prematchId }
- .indexOf(market.marketType.id)
- })
- }
- remoteMarkets?.forEach { remoteMarket ->
- val localSelections = ArrayList<SelectionItem>()
- remoteMarket.selections.let {
- Collections.sort(it, compareBy { s -> selectionOrder.indexOf(s.outcomeType) })
- }
- for (remoteSelection in remoteMarket.selections) {
- val state = if (isSuspended || remoteMarket.isSuspended == true) {
- if (selectedOdds.contains(remoteSelection.id)) {
- STATE_SUSPENDED_SELECTED
- } else {
- STATE_SUSPENDED_ACTIVE
- }
- } else {
- if (selectedOdds.contains(remoteSelection.id)) {
- STATE_SELECTED
- } else {
- remoteSelection.status
- }
- }
- localSelections.add(
- SelectionItem(
- id = remoteSelection.id,
- name = getSelectionName(remoteSelection.outcomeType, remoteSelection.name) ?: "",
- value = remoteSelection.odds?.toDouble() ?: 0.0,
- state = state
- )
- )
- }
- localMarkets.add(
- MarketEntity(
- id = remoteMarket.id,
- eventId = remoteMarket.eventId,
- selections = localSelections,
- marketTypeId = remoteMarket.marketType.id
- )
- )
- }
- return localMarkets
- }
- private fun getSelectionName(outcomeType: String?, remoteSelectionName: String?) = when (outcomeType) {
- EventKeys.OUTCOME_TYPE_HOME.key -> translationsDelegate.get(TranslationKeys.SPORTSBOOK_ML_HOME_SELECTION_NAME.key)
- EventKeys.OUTCOME_TYPE_AWAY.key -> translationsDelegate.get(TranslationKeys.SPORTSBOOK_ML_AWAY_SELECTION_NAME.key)
- EventKeys.OUTCOME_TYPE_TIE.key -> translationsDelegate.get(TranslationKeys.SPORTSBOOK_ML_DRAW_SELECTION_NAME.key)
- else -> remoteSelectionName
- }
- //add selections
- // private fun addSelections(remoteSelections: List<Selection>?, selections: List<SelectionItem>, isSuspended: Boolean) {
- //
- // remoteSelections?.let {
- // Collections.sort(it, compareBy { s -> selectionOrder.indexOf(s.outcomeType) })
- // }
- //
- // selections.forEachIndexed { index, selectionItem ->
- //
- // val remoteSelection = remoteSelections?.getOrNull(index)
- //
- // remoteSelection?.let {
- // selectionItem.id = it.id
- // selectionItem.name = getSelectionName(it.outcomeType, it.name) ?: ""
- // selectionItem.value = it.odds?.toDouble() ?: 0.0
- // if (isSuspended) {
- // if (selectedOdds.contains(it.id)) {
- // selectionItem.state = STATE_SUSPENDED_SELECTED
- // } else {
- // selectionItem.state = STATE_SUSPENDED_ACTIVE
- // }
- // } else {
- // if (selectedOdds.contains(it.id)) {
- // selectionItem.state = STATE_SELECTED
- // } else {
- // selectionItem.state = it.status
- // }
- // }
- // }
- // }
- // }
- // private fun generateEmptyMarket(marketTypeId: MarketTypeId, cardType: String? = null, sportType: String? = null): MarketEntity {
- // val selections = ArrayList<SelectionItem>().apply {
- // add(generateEmptySelection())
- // add(generateEmptySelection())
- // }
- //
- // if (sportType == EventKeys.SPORT_TYPE_EUROPE.key && cardType != EventKeys.CARD_TYPE_OUTRIGHT.key) {
- // selections.add(generateEmptySelection())
- // }
- // return MarketEntity(
- // id = "",
- // name = "",
- // marketType = MarketType(marketTypeId.liveId, marketTypeId.prematchId),
- // selections = selections
- // )
- // }
- // private fun generateEmptySelection() =
- // SelectionItem(
- // id = "",
- // name = "",
- // value = 0.0,
- // state = STATE_DISABLED
- // )
- /*ADD*/
- //add markets
- // private fun addMarkets(remoteMarkets: List<Market>?) {
- //
- // remoteMarkets?.forEach { remoteMarket ->
- // val event = events.first { e -> remoteMarket.eventId == e.id }
- //
- // when {
- // event.type == ITEM_AMERICAN_CARD -> {
- // val e = event as EventListItem
- // e.marketEntities.forEach { marketEntity ->
- // if (marketEntity.marketType.idLive == remoteMarket.marketType.id || marketEntity.marketType.idPrematch == remoteMarket.marketType.id) {
- // marketEntity.id = remoteMarket.id
- // addSelections(remoteMarkets.first().selections, marketEntity.selections, remoteMarket.isSuspended == true)
- // }
- // }
- // }
- // event.type == ITEM_EUROPEAN_CARD -> {
- // val e = event as EventListItem
- // addSelections(remoteMarkets.first().selections, e.marketEntities.first().selections, remoteMarket.isSuspended == true)
- // }
- // event.type == ITEM_OUTRIGHT_CARD -> {
- // val e = event as OutrightEventListItem
- // addSelections(remoteMarkets.first().selections, e.marketEntities.first().selections, remoteMarket.isSuspended == true)
- // }
- // }
- // }
- // }
- /*CHANGE*/
- //update events
- private fun updateEvents(newEvents: List<Event>?) {
- newEvents?.forEach { newEvent ->
- val oldEvent = events.first { newEvent.id == it.id }
- if (oldEvent.type == ITEM_AMERICAN_CARD || oldEvent.type == ITEM_EUROPEAN_CARD) {
- updateEvent(newEvent, oldEvent as EventListItem)
- } else {
- updateOutRightEvent(newEvent, oldEvent as OutrightEventListItem)
- }
- }
- }
- private fun updateEvent(newEvent: Event, oldEvent: EventListItem) {
- newEvent.run {
- isLive?.let {
- oldEvent.eventType = if (it) EventKeys.LIVE.key else EventKeys.PREMATCH.key
- }
- if (!leagueId.isNullOrEmpty()) {
- oldEvent.leagueId = leagueId
- }
- if (!leagueName.isNullOrEmpty()) {
- oldEvent.leagueName = leagueName
- }
- totalMarketsCount?.let {
- oldEvent.totalMarketsCount = "$it ${translationsDelegate.get(TranslationKeys.SPORTSBOOK_BUTTON_MORE_BETS_TEXT.key)}"
- }
- if (!startEventDate.isNullOrEmpty()) {
- oldEvent.prematchEventInfo.startTime = formatDate(startEventDate)
- oldEvent.prematchEventInfo.startTime = formatTime(startEventDate)
- }
- isTeamSwap?.let {
- oldEvent.isTeamSwap = it
- }
- score?.let { score ->
- score.onServe?.let {
- oldEvent.liveEventInfo.serveIndicator
- }
- score.currentGameScore?.let {
- oldEvent.liveEventInfo.firstSetScore = it.first()
- oldEvent.liveEventInfo.secondSetScore = it.last()
- }
- score.totalScore?.let {
- oldEvent.liveEventInfo.firstScore = it.first()
- oldEvent.liveEventInfo.secondScore = it.last()
- }
- }
- liveGameState?.let { liveGameState ->
- liveGameState.clockDirection?.let {
- oldEvent.liveEventInfo.clockDirection = it
- }
- liveGameState.clockRunning?.let {
- oldEvent.liveEventInfo.clockRunning = it
- }
- liveGameState.gamePart?.let { gamepart ->
- oldEvent.liveEventInfo.gamePart = translationsDelegate.get("${EventKeys.GAME_PART.key} $gamepart")
- }
- liveGameState.gameTime?.let {
- oldEvent.created = System.currentTimeMillis() / 1000
- oldEvent.liveEventInfo.timer = it
- }
- }
- if (!teamNames.isNullOrEmpty()) {
- oldEvent.firstTeamName = teamNames.first()
- oldEvent.secondTeamName = teamNames.last()
- }
- if (isTeamSwap == true) {
- applyTeamSwap(oldEvent)
- }
- }
- }
- private fun applyTeamSwap(eventEntity: EventListItem) {
- var temp: String = eventEntity.firstTeamName
- eventEntity.firstTeamName = eventEntity.secondTeamName
- eventEntity.secondTeamName = temp
- temp = eventEntity.liveEventInfo.firstScore
- eventEntity.liveEventInfo.firstScore = eventEntity.liveEventInfo.secondScore
- eventEntity.liveEventInfo.secondScore = temp
- temp = eventEntity.liveEventInfo.firstSetScore
- eventEntity.liveEventInfo.firstSetScore = eventEntity.liveEventInfo.secondSetScore
- eventEntity.liveEventInfo.secondSetScore = temp
- if (eventEntity.type == ITEM_AMERICAN_CARD || eventEntity.type == ITEM_OUTRIGHT_CARD) {
- eventEntity.marketEntities.forEach { marketEntity ->
- if (marketEntity.marketTypeId != EventKeys.MARKET_TYPE_OVER_UNDER_LIVE.key && marketEntity.marketTypeId != EventKeys.MARKET_TYPE_OVER_UNDER.key) {
- marketEntity.selections = marketEntity.selections.reversed()
- }
- }
- }
- }
- private fun updateOutRightEvent(newEvent: Event, oldEvent: OutrightEventListItem) {
- newEvent.run {
- if (!eventName.isNullOrEmpty()) {
- oldEvent.eventName = eventName
- }
- if (!leagueId.isNullOrEmpty()) {
- oldEvent.leagueId = leagueId
- }
- if (!leagueName.isNullOrEmpty()) {
- oldEvent.leagueName = leagueName
- }
- if (!startEventDate.isNullOrEmpty()) {
- oldEvent.startEventDate = startEventDate
- }
- if (liveGameState != null) {
- liveGameState.clockDirection?.let {
- oldEvent.clockDirection = it
- }
- liveGameState.clockRunning?.let {
- oldEvent.clockRunning
- }
- }
- }
- }
- //update markets
- // private fun updateMarkets(newMarkets: List<Market>?) {
- // newMarkets?.forEach { remoteMarket ->
- //
- // val event = events.first { event -> event.id == remoteMarket.eventId }
- //
- // when {
- // event.type == ITEM_AMERICAN_CARD -> {
- // val eventEntity = event as EventListItem
- //
- // for (marketEntity in eventEntity.marketEntities) {
- // if (remoteMarket.marketType.id == marketEntity.marketType.idLive || remoteMarket.marketType.id == marketEntity.marketType.idPrematch) {
- // updateSelections(remoteMarket, marketEntity)
- // break
- // }
- // }
- // }
- // event.type == ITEM_EUROPEAN_CARD -> {
- // val eventEntity = event as EventListItem
- // updateSelections(remoteMarket, eventEntity.marketEntities.first())
- //
- // }
- // event.type == ITEM_OUTRIGHT_CARD -> {
- // val eventEntity = event as OutrightEventListItem
- // updateSelections(remoteMarket, eventEntity.marketEntities.first())
- // }
- // }
- // }
- // }
- private fun updateSelections(remoteMarket: Market, marketEntity: MarketEntity) {
- marketEntity.selections.forEach { selectionItem ->
- loop@ for (remoteSelection in remoteMarket.selections) {
- if (remoteSelection.id == selectionItem.id) {
- selectionItem.name = getSelectionName(remoteSelection.outcomeType, remoteSelection.name) ?: ""
- selectionItem.value = remoteSelection.odds?.toDouble() ?: 0.0
- if (remoteMarket.isSuspended == true) {
- if (selectedOdds.contains(remoteSelection.id)) {
- selectionItem.state = STATE_SUSPENDED_SELECTED
- } else {
- selectionItem.state = STATE_SUSPENDED_ACTIVE
- }
- } else {
- if (selectedOdds.contains(remoteSelection.id)) {
- selectionItem.state = STATE_SELECTED
- } else {
- selectionItem.state = remoteSelection.status
- }
- }
- break@loop
- }
- }
- }
- }
- /*REMOVE*/
- //remove events
- private fun removeEvents(removedEvents: List<String>?) {
- val list = removedEvents?.flatMap { id -> events.filter { id == it.id } }
- list?.let { events.removeAll(it) }
- }
- // private fun removeMarkets(remoteMarkets: List<String>?) {
- //
- // remoteMarkets?.forEach { remoteMarketId ->
- //
- // for (eventEntity in events) {
- // if (eventEntity.type == ITEM_AMERICAN_CARD || eventEntity.type == ITEM_EUROPEAN_CARD) {
- // val e = eventEntity as EventListItem
- // clearMarkets(e.marketEntities, remoteMarketId)
- // } else {
- // val e = eventEntity as OutrightEventListItem
- // clearMarkets(e.marketEntities, remoteMarketId)
- // }
- // }
- // }
- //
- // }
- // private fun clearMarkets(marketEntities: List<MarketEntity>, remoteMarketId: String) {
- // for (marketEntity in marketEntities) {
- // if (marketEntity.id == remoteMarketId) {
- // marketEntity.id = ""
- // marketEntity.marketType = MarketType("", "")
- // marketEntity.selections.forEach { selectionEntity ->
- // selectionEntity.id = ""
- // selectionEntity.name = ""
- // selectionEntity.value = 0.0
- // selectionEntity.state = STATE_DISABLED
- // }
- // }
- // }
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement