From 07804e42410051648221e7b8c41f8414de2586bf Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Fri, 25 Feb 2022 22:05:15 +0000 Subject: [PATCH] Update existing transaction if transactionid was passed --- server/transaction.go | 61 +++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 22 deletions(-) diff --git a/server/transaction.go b/server/transaction.go index adcdcad..bdb9a35 100644 --- a/server/transaction.go +++ b/server/transaction.go @@ -41,36 +41,53 @@ func (h *Handler) newTransaction(c *gin.Context) { return } - newTransaction := postgres.CreateTransactionParams{ - Memo: payload.Memo, - Date: time.Time(payload.Date), - Amount: amount, - Status: postgres.TransactionStatus(payload.State), - } + transactionID := c.Param("transactionid") + if transactionID != "" { + editTransaction := postgres.UpdateTransactionParams{ + Memo: payload.Memo, + Date: time.Time(payload.Date), + Amount: amount, + PayeeID: payload.Payee.ID, + CategoryID: payload.CategoryID, + ID: uuid.MustParse(transactionID), + } - if payload.Payee.IsAccount { - err := h.CreateTransferForOtherAccount(newTransaction, amount, payload, err, c) + err := h.Service.UpdateTransaction(c.Request.Context(), editTransaction) if err != nil { - c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transfer transaction: %w", err)) + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("edit transaction: %w", err)) return } } else { - payeeID, err := GetPayeeID(c.Request.Context(), payload, h) - if err != nil { - c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create payee: %w", err)) + newTransaction := postgres.CreateTransactionParams{ + Memo: payload.Memo, + Date: time.Time(payload.Date), + Amount: amount, + Status: postgres.TransactionStatus(payload.State), } - newTransaction.PayeeID = payeeID - } - newTransaction.CategoryID = payload.CategoryID - newTransaction.AccountID = payload.AccountID - transaction, err := h.Service.CreateTransaction(c.Request.Context(), newTransaction) - if err != nil { - c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err)) - return - } + if payload.Payee.IsAccount { + err := h.CreateTransferForOtherAccount(newTransaction, amount, payload, err, c) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transfer transaction: %w", err)) + return + } + } else { + payeeID, err := GetPayeeID(c.Request.Context(), payload, h) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create payee: %w", err)) + } + newTransaction.PayeeID = payeeID + } - c.JSON(http.StatusOK, transaction) + newTransaction.CategoryID = payload.CategoryID + newTransaction.AccountID = payload.AccountID + transaction, err := h.Service.CreateTransaction(c.Request.Context(), newTransaction) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err)) + return + } + c.JSON(http.StatusOK, transaction) + } } func (h *Handler) CreateTransferForOtherAccount(newTransaction postgres.CreateTransactionParams, amount numeric.Numeric, payload NewTransactionPayload, err error, c *gin.Context) error {