diff --git a/handler/transaction_recurring.go b/handler/transaction_recurring.go index 23a52a4..008cee5 100644 --- a/handler/transaction_recurring.go +++ b/handler/transaction_recurring.go @@ -82,7 +82,6 @@ func (h TransactionRecurringImpl) handleUpdateTransactionRecurring() http.Handle input := types.TransactionRecurringInput{ Id: r.PathValue("id"), IntervalMonths: r.FormValue("interval-months"), - LastExecution: r.FormValue("last-execution"), Active: r.FormValue("active"), Party: r.FormValue("party"), Description: r.FormValue("description"), diff --git a/service/transaction_recurring.go b/service/transaction_recurring.go index 7209a97..220f26b 100644 --- a/service/transaction_recurring.go +++ b/service/transaction_recurring.go @@ -127,7 +127,6 @@ func (s TransactionRecurringImpl) Update(user *types.User, input types.Transacti UPDATE transaction_recurring SET interval_months = :interval_months, - last_execution = :last_execution, active = :active, party = :party, description = :description, @@ -340,7 +339,6 @@ func (s TransactionRecurringImpl) validateAndEnrichTransactionRecurring( updatedAt *time.Time updatedBy uuid.UUID intervalMonths int64 - active bool err error rowCount int @@ -362,6 +360,8 @@ func (s TransactionRecurringImpl) validateAndEnrichTransactionRecurring( updatedBy = userId } + hasAccount := false + hasTreasureChest := false if input.AccountId != "" { temp, err := uuid.Parse(input.AccountId) if err != nil { @@ -379,6 +379,7 @@ func (s TransactionRecurringImpl) validateAndEnrichTransactionRecurring( return nil, fmt.Errorf("account not found: %w", ErrBadRequest) } + hasAccount = true } if input.TreasureChestId != "" { @@ -400,6 +401,16 @@ func (s TransactionRecurringImpl) validateAndEnrichTransactionRecurring( if treasureChest.ParentId == nil { return nil, fmt.Errorf("treasure chest is a group: %w", ErrBadRequest) } + hasTreasureChest = true + } + + if !hasAccount && !hasTreasureChest { + log.Error("transactionRecurring validate: %v", err) + return nil, fmt.Errorf("either account or treasure chest is required: %w", ErrBadRequest) + } + if hasAccount && hasTreasureChest { + log.Error("transactionRecurring validate: %v", err) + return nil, fmt.Errorf("either account or treasure chest is required, not both: %w", ErrBadRequest) } valueFloat, err := strconv.ParseFloat(input.Value, 64) @@ -430,10 +441,9 @@ func (s TransactionRecurringImpl) validateAndEnrichTransactionRecurring( log.Error("transactionRecurring validate: %v", err) return nil, fmt.Errorf("intervalMonths needs to be greater than 0: %w", ErrBadRequest) } - active, err = strconv.ParseBool(input.Active) - if err != nil { - log.Error("transactionRecurring validate: %v", err) - return nil, fmt.Errorf("could not parse active: %w", ErrBadRequest) + active := false + if input.Active == "on" { + active = true } transactionRecurring := types.TransactionRecurring{ diff --git a/template/transaction_recurring/transaction_recurring.templ b/template/transaction_recurring/transaction_recurring.templ index 89d8fba..73b759c 100644 --- a/template/transaction_recurring/transaction_recurring.templ +++ b/template/transaction_recurring/transaction_recurring.templ @@ -5,58 +5,76 @@ import "spend-sparrow/template/svg" import "spend-sparrow/types" templ TransactionRecurringItems(transactionsRecurring []*types.TransactionRecurring) { -
| Party | +Description | +Value (€) | +Actions | +
|---|
- if transactionRecurring.Party != "" { - { transactionRecurring.Party } +
+ if transactionRecurring.Party != "" { + { transactionRecurring.Party } + } else { + + } +
++ if transactionRecurring.Description != "" { + { transactionRecurring.Description } + } else { + + } +
+{ displayBalance(transactionRecurring.Value)+" €" }
} else { - +{ displayBalance(transactionRecurring.Value)+" €" }
} - -- if transactionRecurring.Description != "" { - { transactionRecurring.Description } - } else { - - } -
- if transactionRecurring.Value < 0 { -{ displayBalance(transactionRecurring.Value)+" €" }
- } else { -{ displayBalance(transactionRecurring.Value)+" €" }
- } - - - +