Добавил логику с наградами
This commit is contained in:
@@ -7,8 +7,11 @@ data class Reward(
|
||||
val title: String,
|
||||
val description: String?,
|
||||
val imageUrl: String?,
|
||||
val points: Int,
|
||||
val pointsRequired: Int,
|
||||
val isClaimed: Boolean = false,
|
||||
val earnedAt: LocalDateTime? = null,
|
||||
val userId: String
|
||||
val userId: String,
|
||||
val createdAt: LocalDateTime? = null,
|
||||
val updatedAt: LocalDateTime? = null
|
||||
)
|
||||
|
||||
|
||||
@@ -4,11 +4,12 @@ import com.novayaplaneta.domain.model.Reward
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface RewardRepository {
|
||||
suspend fun loadRewards(skip: Int = 0, limit: Int = 100, isClaimed: Boolean? = null): Result<Unit>
|
||||
fun getRewards(userId: String): Flow<List<Reward>>
|
||||
suspend fun getRewardById(id: String): Reward?
|
||||
suspend fun createReward(reward: Reward)
|
||||
suspend fun getRewardById(id: String): Result<Reward>
|
||||
suspend fun createReward(reward: Reward): Result<Reward>
|
||||
suspend fun updateReward(reward: Reward)
|
||||
suspend fun deleteReward(id: String)
|
||||
suspend fun earnReward(userId: String, rewardId: String)
|
||||
suspend fun deleteReward(id: String): Result<Unit>
|
||||
suspend fun claimReward(rewardId: String): Result<Reward>
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.Reward
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class ClaimRewardUseCase @Inject constructor(
|
||||
private val repository: RewardRepository
|
||||
) {
|
||||
suspend operator fun invoke(rewardId: String): Result<Reward> {
|
||||
return repository.claimReward(rewardId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.Reward
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class CreateRewardUseCase @Inject constructor(
|
||||
private val repository: RewardRepository
|
||||
) {
|
||||
suspend operator fun invoke(reward: Reward): Result<Reward> {
|
||||
return repository.createReward(reward)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class DeleteRewardUseCase @Inject constructor(
|
||||
private val repository: RewardRepository
|
||||
) {
|
||||
suspend operator fun invoke(id: String): Result<Unit> {
|
||||
return repository.deleteReward(id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.Reward
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetRewardByIdUseCase @Inject constructor(
|
||||
private val repository: RewardRepository
|
||||
) {
|
||||
suspend operator fun invoke(id: String): Result<Reward> {
|
||||
return repository.getRewardById(id)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.novayaplaneta.domain.usecase
|
||||
|
||||
import com.novayaplaneta.domain.model.Reward
|
||||
import com.novayaplaneta.domain.repository.RewardRepository
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import javax.inject.Inject
|
||||
|
||||
class GetRewardsUseCase @Inject constructor(
|
||||
private val repository: RewardRepository
|
||||
) {
|
||||
operator fun invoke(userId: String): Flow<List<Reward>> {
|
||||
return repository.getRewards(userId)
|
||||
}
|
||||
|
||||
suspend fun loadRewards(skip: Int = 0, limit: Int = 100, isClaimed: Boolean? = null): Result<Unit> {
|
||||
return try {
|
||||
repository.loadRewards(skip, limit, isClaimed)
|
||||
} catch (e: Exception) {
|
||||
Result.failure(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user