Extract method CreateTransferForOtherAccount

This commit is contained in:
Jan Bader 2022-02-25 22:02:57 +00:00
parent 13d0194632
commit 2f4f8a7568

View File

@ -49,18 +49,11 @@ func (h *Handler) newTransaction(c *gin.Context) {
} }
if payload.Payee.IsAccount { if payload.Payee.IsAccount {
newTransaction.GroupID = uuid.NullUUID{UUID: uuid.New(), Valid: true} err := h.CreateTransferForOtherAccount(newTransaction, amount, payload, err, c)
newTransaction.Amount = amount.Neg()
newTransaction.AccountID = payload.Payee.ID.UUID
newTransaction.CategoryID = uuid.NullUUID{}
_, err = h.Service.CreateTransaction(c.Request.Context(), newTransaction)
if err != nil { if err != nil {
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transfer transaction: %w", err)) c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transfer transaction: %w", err))
return return
} }
newTransaction.Amount = amount
} else { } else {
payeeID, err := GetPayeeID(c.Request.Context(), payload, h) payeeID, err := GetPayeeID(c.Request.Context(), payload, h)
if err != nil { if err != nil {
@ -80,6 +73,15 @@ func (h *Handler) newTransaction(c *gin.Context) {
c.JSON(http.StatusOK, transaction) c.JSON(http.StatusOK, transaction)
} }
func (h *Handler) CreateTransferForOtherAccount(newTransaction postgres.CreateTransactionParams, amount numeric.Numeric, payload NewTransactionPayload, err error, c *gin.Context) error {
newTransaction.GroupID = uuid.NullUUID{UUID: uuid.New(), Valid: true}
newTransaction.Amount = amount.Neg()
newTransaction.AccountID = payload.Payee.ID.UUID
_, err = h.Service.CreateTransaction(c.Request.Context(), newTransaction)
return err
}
func GetPayeeID(context context.Context, payload NewTransactionPayload, h *Handler) (uuid.NullUUID, error) { func GetPayeeID(context context.Context, payload NewTransactionPayload, h *Handler) (uuid.NullUUID, error) {
payeeID := payload.Payee.ID payeeID := payload.Payee.ID
if payeeID.Valid { if payeeID.Valid {