fix category delete
This commit is contained in:
@@ -3,6 +3,7 @@ package space.luminic.budgerapp.services
|
|||||||
|
|
||||||
import kotlinx.coroutines.reactive.awaitFirstOrNull
|
import kotlinx.coroutines.reactive.awaitFirstOrNull
|
||||||
import kotlinx.coroutines.reactive.awaitSingle
|
import kotlinx.coroutines.reactive.awaitSingle
|
||||||
|
import kotlinx.coroutines.reactor.awaitSingleOrNull
|
||||||
import org.bson.Document
|
import org.bson.Document
|
||||||
import org.bson.types.ObjectId
|
import org.bson.types.ObjectId
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
@@ -135,6 +136,7 @@ class CategoryService(
|
|||||||
suspend fun deleteCategory(space: Space, categoryId: String) {
|
suspend fun deleteCategory(space: Space, categoryId: String) {
|
||||||
findCategory(space, categoryId)
|
findCategory(space, categoryId)
|
||||||
val transactions = financialService.getTransactions(space.id!!, categoryId = categoryId).awaitSingle()
|
val transactions = financialService.getTransactions(space.id!!, categoryId = categoryId).awaitSingle()
|
||||||
|
if (transactions.isNotEmpty()) {
|
||||||
val otherCategory = try {
|
val otherCategory = try {
|
||||||
findCategory(space, name = "Другое")
|
findCategory(space, name = "Другое")
|
||||||
} catch (nfe: NotFoundException) {
|
} catch (nfe: NotFoundException) {
|
||||||
@@ -148,10 +150,13 @@ class CategoryService(
|
|||||||
)
|
)
|
||||||
).awaitSingle()
|
).awaitSingle()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
transactions.map { transaction ->
|
transactions.map { transaction ->
|
||||||
transaction.category = otherCategory
|
transaction.category = otherCategory
|
||||||
financialService.editTransaction(transaction)
|
financialService.editTransaction(transaction)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
val budgets = financialService.findProjectedBudgets(
|
val budgets = financialService.findProjectedBudgets(
|
||||||
ObjectId(space.id),
|
ObjectId(space.id),
|
||||||
projectKeys = arrayOf(
|
projectKeys = arrayOf(
|
||||||
@@ -171,7 +176,7 @@ class CategoryService(
|
|||||||
budget.categories.removeIf { it.category.id == categoryId }
|
budget.categories.removeIf { it.category.id == categoryId }
|
||||||
budgetRepo.save(budget)
|
budgetRepo.save(budget)
|
||||||
}
|
}
|
||||||
categoryRepo.deleteById(categoryId).awaitSingle()
|
categoryRepo.deleteById(categoryId).awaitSingleOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user