+ targets
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
package space.luminic.finance.services
|
||||
|
||||
import space.luminic.finance.dtos.GoalDTO
|
||||
import space.luminic.finance.models.Goal
|
||||
|
||||
interface GoalService {
|
||||
fun findAllBySpaceId(spaceId: Int): List<Goal>
|
||||
fun findBySpaceIdAndId(spaceId: Int, id: Int): Goal
|
||||
fun create(spaceId: Int,goal: GoalDTO.CreateGoalDTO): Int
|
||||
fun update(spaceId: Int, goalId: Int, goal: GoalDTO.UpdateGoalDTO)
|
||||
fun delete(spaceId: Int, id: Int)
|
||||
|
||||
fun getComponents(spaceId: Int, goalId: Int): List<Goal.GoalComponent>
|
||||
fun getComponent(spaceId: Int, goalId: Int, id: Int): Goal.GoalComponent?
|
||||
fun createComponent(spaceId: Int, goalId: Int, component: Goal.GoalComponent): Int
|
||||
fun updateComponent(spaceId: Int, goalId: Int, component: Goal.GoalComponent)
|
||||
fun deleteComponent(spaceId: Int, goalId: Int, id: Int)
|
||||
|
||||
fun assignTransaction(spaceId: Int, goalId: Int, transactionId: Int)
|
||||
fun refuseTransaction(spaceId: Int,goalId: Int, transactionId: Int)
|
||||
|
||||
}
|
||||
@@ -1,140 +0,0 @@
|
||||
package space.luminic.finance.services
|
||||
|
||||
import org.springframework.stereotype.Service
|
||||
import space.luminic.finance.dtos.GoalDTO
|
||||
import space.luminic.finance.models.Goal
|
||||
import space.luminic.finance.models.NotFoundException
|
||||
import space.luminic.finance.repos.GoalRepo
|
||||
import space.luminic.finance.repos.SpaceRepo
|
||||
import space.luminic.finance.repos.TransactionRepo
|
||||
|
||||
@Service
|
||||
class GoalServiceImpl(
|
||||
private val goalRepo: GoalRepo,
|
||||
private val spaceRepo: SpaceRepo,
|
||||
private val authService: AuthService,
|
||||
private val transactionRepo: TransactionRepo
|
||||
) : GoalService {
|
||||
override fun findAllBySpaceId(spaceId: Int): List<Goal> {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
return goalRepo.findAllBySpaceId(spaceId)
|
||||
}
|
||||
|
||||
override fun findBySpaceIdAndId(spaceId: Int, id: Int): Goal {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
return goalRepo.findBySpaceIdAndId(spaceId, userId) ?: throw NotFoundException("Goal $id not found")
|
||||
}
|
||||
|
||||
override fun create(spaceId: Int, goal: GoalDTO.CreateGoalDTO): Int {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
val creatingGoal = Goal(
|
||||
type = goal.type,
|
||||
name = goal.name,
|
||||
amount = goal.amount,
|
||||
untilDate = goal.date
|
||||
)
|
||||
return goalRepo.create(creatingGoal, userId)
|
||||
}
|
||||
|
||||
override fun update(spaceId: Int, goalId: Int, goal: GoalDTO.UpdateGoalDTO) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
val existingGoal =
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
val updatedGoal = existingGoal.copy(
|
||||
type = goal.type,
|
||||
name = goal.name,
|
||||
description = goal.description,
|
||||
amount = goal.amount,
|
||||
untilDate = goal.date
|
||||
)
|
||||
goalRepo.update(updatedGoal, userId)
|
||||
}
|
||||
|
||||
override fun delete(spaceId: Int, id: Int) {
|
||||
goalRepo.delete(spaceId, id)
|
||||
}
|
||||
|
||||
override fun getComponents(
|
||||
spaceId: Int,
|
||||
goalId: Int
|
||||
): List<Goal.GoalComponent> {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
return goalRepo.getComponents(spaceId, goalId)
|
||||
}
|
||||
|
||||
override fun getComponent(
|
||||
spaceId: Int,
|
||||
goalId: Int,
|
||||
id: Int
|
||||
): Goal.GoalComponent? {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
return goalRepo.getComponent(spaceId, goalId, id)
|
||||
}
|
||||
|
||||
override fun createComponent(
|
||||
spaceId: Int,
|
||||
goalId: Int,
|
||||
component: Goal.GoalComponent
|
||||
): Int {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
return goalRepo.createComponent(goalId, component, userId)
|
||||
}
|
||||
|
||||
override fun updateComponent(
|
||||
spaceId: Int,
|
||||
goalId: Int,
|
||||
component: Goal.GoalComponent
|
||||
) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
val existingComponent = goalRepo.getComponent(spaceId, goalId, component.id!!)
|
||||
?: throw NotFoundException("Component $goalId not found")
|
||||
val updatedComponent = existingComponent.copy(
|
||||
name = component.name,
|
||||
amount = component.amount,
|
||||
isDone = component.isDone,
|
||||
date = component.date
|
||||
)
|
||||
goalRepo.updateComponent(goalId, updatedComponent.id!!, updatedComponent, userId)
|
||||
}
|
||||
|
||||
override fun deleteComponent(spaceId: Int, goalId: Int, id: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
goalRepo.getComponent(spaceId, goalId, id) ?: throw NotFoundException("Component $goalId not found")
|
||||
goalRepo.deleteComponent(goalId, id)
|
||||
}
|
||||
|
||||
override fun assignTransaction(spaceId: Int, goalId: Int, transactionId: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
transactionRepo.findBySpaceIdAndId(spaceId, transactionId) ?: throw NotFoundException(
|
||||
"Transaction $transactionId not found"
|
||||
)
|
||||
goalRepo.assignTransaction(goalId, transactionId)
|
||||
|
||||
}
|
||||
|
||||
override fun refuseTransaction(spaceId: Int, goalId: Int, transactionId: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
goalRepo.findBySpaceIdAndId(spaceId, goalId) ?: throw NotFoundException("Goal $goalId not found")
|
||||
transactionRepo.findBySpaceIdAndId(spaceId, transactionId) ?: throw NotFoundException(
|
||||
"Transaction $transactionId not found"
|
||||
)
|
||||
goalRepo.refuseTransaction(goalId, transactionId)
|
||||
}
|
||||
}
|
||||
@@ -110,6 +110,7 @@ class RecurrentOperationServiceImpl(
|
||||
type = if (it.category?.type == Category.CategoryType.EXPENSE) Transaction.TransactionType.EXPENSE else Transaction.TransactionType.INCOME,
|
||||
category = updatedOperation.category,
|
||||
comment = operation.name,
|
||||
amount = updatedOperation.amount,
|
||||
date = LocalDate.of(
|
||||
it.date.year,
|
||||
it.date.monthValue,
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package space.luminic.finance.services
|
||||
|
||||
import space.luminic.finance.dtos.TargetDTO
|
||||
import space.luminic.finance.models.Target
|
||||
|
||||
interface TargetService {
|
||||
fun findAllBySpaceId(spaceId: Int): List<Target>
|
||||
fun findBySpaceIdAndId(spaceId: Int, id: Int): Target
|
||||
fun create(spaceId: Int,target: TargetDTO.CreateTargetDTO): Int
|
||||
fun update(spaceId: Int, targetId: Int, target: TargetDTO.UpdateTargetDTO)
|
||||
fun delete(spaceId: Int, id: Int)
|
||||
|
||||
fun getComponents(spaceId: Int, targetId: Int): List<Target.TargetComponent>
|
||||
fun getComponent(spaceId: Int, targetId: Int, id: Int): Target.TargetComponent?
|
||||
fun createComponent(spaceId: Int, targetId: Int, component: Target.TargetComponent): Int
|
||||
fun updateComponent(spaceId: Int, targetId: Int, component: Target.TargetComponent)
|
||||
fun deleteComponent(spaceId: Int, targetId: Int, id: Int)
|
||||
|
||||
fun assignTransaction(spaceId: Int, targetId: Int, transactionId: Int)
|
||||
fun refuseTransaction(spaceId: Int,targetId: Int, transactionId: Int)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
package space.luminic.finance.services
|
||||
|
||||
import org.springframework.stereotype.Service
|
||||
import space.luminic.finance.dtos.TargetDTO
|
||||
import space.luminic.finance.models.Target
|
||||
import space.luminic.finance.models.NotFoundException
|
||||
import space.luminic.finance.repos.TargetRepo
|
||||
import space.luminic.finance.repos.SpaceRepo
|
||||
import space.luminic.finance.repos.TransactionRepo
|
||||
|
||||
@Service
|
||||
class TargetServiceImpl(
|
||||
private val targetRepo: TargetRepo,
|
||||
private val spaceRepo: SpaceRepo,
|
||||
private val authService: AuthService,
|
||||
private val transactionRepo: TransactionRepo
|
||||
) : TargetService {
|
||||
override fun findAllBySpaceId(spaceId: Int): List<Target> {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
return targetRepo.findAllBySpaceId(spaceId)
|
||||
}
|
||||
|
||||
override fun findBySpaceIdAndId(spaceId: Int, id: Int): Target {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
return targetRepo.findBySpaceIdAndId(spaceId, userId) ?: throw NotFoundException("Goal $id not found")
|
||||
}
|
||||
|
||||
override fun create(spaceId: Int, target: TargetDTO.CreateTargetDTO): Int {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
val creatingTarget = Target(
|
||||
type = target.type,
|
||||
name = target.name,
|
||||
amount = target.amount,
|
||||
untilDate = target.date
|
||||
)
|
||||
return targetRepo.create(creatingTarget, userId)
|
||||
}
|
||||
|
||||
override fun update(spaceId: Int, targetId: Int, target: TargetDTO.UpdateTargetDTO) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
val existingGoal =
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Goal $targetId not found")
|
||||
val updatedGoal = existingGoal.copy(
|
||||
type = target.type,
|
||||
name = target.name,
|
||||
description = target.description,
|
||||
amount = target.amount,
|
||||
untilDate = target.date
|
||||
)
|
||||
targetRepo.update(updatedGoal, userId)
|
||||
}
|
||||
|
||||
override fun delete(spaceId: Int, id: Int) {
|
||||
targetRepo.delete(spaceId, id)
|
||||
}
|
||||
|
||||
override fun getComponents(
|
||||
spaceId: Int,
|
||||
targetId: Int
|
||||
): List<Target.TargetComponent> {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Goal $targetId not found")
|
||||
return targetRepo.getComponents(spaceId, targetId)
|
||||
}
|
||||
|
||||
override fun getComponent(
|
||||
spaceId: Int,
|
||||
targetId: Int,
|
||||
id: Int
|
||||
): Target.TargetComponent? {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
return targetRepo.getComponent(spaceId, targetId, id)
|
||||
}
|
||||
|
||||
override fun createComponent(
|
||||
spaceId: Int,
|
||||
targetId: Int,
|
||||
component: Target.TargetComponent
|
||||
): Int {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
return targetRepo.createComponent(targetId, component, userId)
|
||||
}
|
||||
|
||||
override fun updateComponent(
|
||||
spaceId: Int,
|
||||
targetId: Int,
|
||||
component: Target.TargetComponent
|
||||
) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
val existingComponent = targetRepo.getComponent(spaceId, targetId, component.id!!)
|
||||
?: throw NotFoundException("Component $targetId not found")
|
||||
val updatedComponent = existingComponent.copy(
|
||||
name = component.name,
|
||||
amount = component.amount,
|
||||
isDone = component.isDone,
|
||||
date = component.date
|
||||
)
|
||||
targetRepo.updateComponent(targetId, updatedComponent.id!!, updatedComponent, userId)
|
||||
}
|
||||
|
||||
override fun deleteComponent(spaceId: Int, targetId: Int, id: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
targetRepo.getComponent(spaceId, targetId, id) ?: throw NotFoundException("Component $targetId not found")
|
||||
targetRepo.deleteComponent(targetId, id)
|
||||
}
|
||||
|
||||
override fun assignTransaction(spaceId: Int, targetId: Int, transactionId: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
transactionRepo.findBySpaceIdAndId(spaceId, transactionId) ?: throw NotFoundException(
|
||||
"Transaction $transactionId not found"
|
||||
)
|
||||
targetRepo.assignTransaction(targetId, transactionId)
|
||||
|
||||
}
|
||||
|
||||
override fun refuseTransaction(spaceId: Int, targetId: Int, transactionId: Int) {
|
||||
val userId = authService.getSecurityUserId()
|
||||
spaceRepo.findSpaceById(spaceId, userId)
|
||||
targetRepo.findBySpaceIdAndId(spaceId, targetId) ?: throw NotFoundException("Target $targetId not found")
|
||||
transactionRepo.findBySpaceIdAndId(spaceId, transactionId) ?: throw NotFoundException(
|
||||
"Transaction $transactionId not found"
|
||||
)
|
||||
targetRepo.refuseTransaction(targetId, transactionId)
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,7 @@ class CategorizeService(
|
||||
listOf(
|
||||
InlineKeyboardButton.WebApp(
|
||||
"Открыть в WebApp",
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit")
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit?mode=from_bot")
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -85,7 +85,7 @@ class CategorizeService(
|
||||
listOf(
|
||||
InlineKeyboardButton.WebApp(
|
||||
"Открыть в WebApp",
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit")
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit?mode=from_bot")
|
||||
)
|
||||
)
|
||||
),
|
||||
@@ -131,7 +131,7 @@ class CategorizeService(
|
||||
listOf(
|
||||
InlineKeyboardButton.WebApp(
|
||||
"Открыть в WebApp",
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit")
|
||||
WebAppInfo("https://app.luminic.space/transactions/${tx.id}/edit?mode=from_bot")
|
||||
)
|
||||
)
|
||||
),
|
||||
|
||||
@@ -119,7 +119,7 @@ class BotService(
|
||||
@Bean
|
||||
fun bot(): Bot {
|
||||
val bot = com.github.kotlintelegrambot.bot {
|
||||
logLevel = LogLevel.All()
|
||||
logLevel = LogLevel.None
|
||||
token = botToken
|
||||
dispatch {
|
||||
message(Filter.Text) {
|
||||
|
||||
Reference in New Issue
Block a user