
com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.config.RatingAnalyzeSendSettings.kt Maven / Gradle / Ivy
package com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.config
import com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.ChartsBuilders.*
import com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.database.CountOfRatedPostsTable
import com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.database.RatingsChangesTable
import com.github.insanusmokrassar.AutoPostRatingsAnalyzePlugin.tasks.*
import com.github.insanusmokrassar.AutoPostTelegramBot.utils.extensions.executeSync
import com.pengrad.telegrambot.TelegramBot
import com.pengrad.telegrambot.request.SendPhoto
import kotlinx.coroutines.experimental.launch
import java.lang.ref.WeakReference
import java.util.concurrent.TimeUnit
data class RatingAnalyzeSendSettings (
val delay: Long? = null,
val dayTime: String? = null,
val sendRatingsChanging: Boolean = true,
val sendCountOfRatings: Boolean = true,
val chartsPeriod: Long = TimeUnit.DAYS.toMillis(30)
) {
fun build(
bot: TelegramBot,
ratingsChangesTable: RatingsChangesTable,
countOfRatedPostsTable: CountOfRatedPostsTable,
chartsChatId: Long
): List {
val ratingChangedChartBuilder: RatingChangesChartBuilder? = if (sendRatingsChanging) {
RatingChangesChartBuilder(
chartsPeriod,
ratingsChangesTable
)
} else {
null
}
val ratingCountChartBuilder: RatingCountChartBuilder? = if (sendCountOfRatings) {
RatingCountChartBuilder(
chartsPeriod,
countOfRatedPostsTable
)
} else {
null
}
val botWR = WeakReference(bot)
val taskToExecute = Runnable {
botWR.get() ?.let {
bot ->
launch {
listOfNotNull(
ratingChangedChartBuilder ?.build(),
ratingCountChartBuilder ?.build()
).forEach {
chartBytesArray ->
bot.executeSync(
SendPhoto(
chartsChatId,
chartBytesArray
)
)
}
}
}
}
return listOfNotNull(
delay ?.let {
DelayTask(
it,
taskToExecute
)
},
dayTime ?.let {
TimeTask(
it,
taskToExecute
)
}
)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy