Goal.kt

package com.distasilucas.cryptobalancetracker.entity

import com.distasilucas.cryptobalancetracker.model.response.goal.GoalResponse
import com.distasilucas.cryptobalancetracker.model.response.insights.CryptoInfo
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
import org.springframework.data.mongodb.core.mapping.Field
import java.math.BigDecimal
import java.util.UUID

@Document("Goals")
data class Goal(
  @Id
  val id: String = UUID.randomUUID().toString(),

  @Field("crypto_id")
  val coingeckoCryptoId: String,

  @Field("goal_quantity")
  val goalQuantity: BigDecimal
) {

  fun toGoalResponse(
    id: String,
    cryptoInfo: CryptoInfo,
    actualQuantity: BigDecimal,
    progress: Float,
    remainingQuantity: BigDecimal,
    moneyNeeded: BigDecimal
  ) = GoalResponse(
    id,
    cryptoInfo,
    actualQuantity.toPlainString(),
    progress,
    remainingQuantity.toPlainString(),
    goalQuantity.toPlainString(),
    moneyNeeded.toPlainString()
  )
}