package transaction_recurring import "fmt" import "time" import "spend-sparrow/internal/template/svg" import "spend-sparrow/internal/types" templ TransactionRecurringItems(transactionsRecurring []*types.TransactionRecurring, editId, accountId, treasureChestId string) {
Next Execution Party Description Interval Value if editId == "new" { @EditTransactionRecurring(nil, accountId, treasureChestId) } for _, transaction := range transactionsRecurring { if transaction.Id.String() == editId { @EditTransactionRecurring(transaction, accountId, treasureChestId) } else { @TransactionRecurringItem(transaction, accountId, treasureChestId) } }
} templ TransactionRecurringItem(transactionRecurring *types.TransactionRecurring, accountId, treasureChestId string) {

if transactionRecurring.NextExecution != nil { { transactionRecurring.NextExecution.Format("2006/01") } } else { - }

if transactionRecurring.Party != "" { { transactionRecurring.Party } } else { - }

if transactionRecurring.Description != "" { { transactionRecurring.Description } } else { - }

Every { transactionRecurring.IntervalMonths } month(s)

if transactionRecurring.Value < 0 {

{ types.FormatEuros(transactionRecurring.Value) }

} else {

{ types.FormatEuros(transactionRecurring.Value) }

}
} templ EditTransactionRecurring(transactionRecurring *types.TransactionRecurring, accountId, treasureChestId string) { {{ var ( id string ) party := "" description := "" value := "0.00" intervalMonths := "1" nextExecution := "" if transactionRecurring == nil { id = "new" nextExecution = time.Now().Format("2006-01-02") } else { intervalMonths = fmt.Sprintf("%d", transactionRecurring.IntervalMonths) if transactionRecurring.NextExecution != nil { nextExecution = transactionRecurring.NextExecution.Format("2006-01-02") } party = transactionRecurring.Party description = transactionRecurring.Description value = formatFloat(transactionRecurring.Value) id = transactionRecurring.Id.String() } }} if accountId != "" { } if treasureChestId != "" { }
} func formatFloat(balance int64) string { euros := float64(balance) / 100 return fmt.Sprintf("%.2f", euros) }