Implement new transaction
This commit is contained in:
parent
95fcb9a586
commit
9dad1dabbd
30
http/json-date.go
Normal file
30
http/json-date.go
Normal file
@ -0,0 +1,30 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type JSONDate time.Time
|
||||
|
||||
// Implement Marshaler and Unmarshaler interface
|
||||
func (j *JSONDate) UnmarshalJSON(b []byte) error {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
t, err := time.Parse("2006-01-02", s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*j = JSONDate(t)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j JSONDate) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(time.Time(j))
|
||||
}
|
||||
|
||||
// Maybe a Format function for printing your date
|
||||
func (j JSONDate) Format(s string) string {
|
||||
t := time.Time(j)
|
||||
return t.Format(s)
|
||||
}
|
@ -1,10 +1,8 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.javil.eu/jacob1123/budgeteer/postgres"
|
||||
@ -22,32 +20,11 @@ type NewTransactionPayload struct {
|
||||
ID uuid.NullUUID
|
||||
Name string
|
||||
} `json:"category"`
|
||||
Memo string `json:"memo"`
|
||||
Amount string `json:"amount"`
|
||||
BudgetID uuid.UUID `json:"budget_id"`
|
||||
}
|
||||
|
||||
type JSONDate time.Time
|
||||
|
||||
// Implement Marshaler and Unmarshaler interface
|
||||
func (j *JSONDate) UnmarshalJSON(b []byte) error {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
t, err := time.Parse("2006-01-02", s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*j = JSONDate(t)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (j JSONDate) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(time.Time(j))
|
||||
}
|
||||
|
||||
// Maybe a Format function for printing your date
|
||||
func (j JSONDate) Format(s string) string {
|
||||
t := time.Time(j)
|
||||
return t.Format(s)
|
||||
Memo string `json:"memo"`
|
||||
Amount string `json:"amount"`
|
||||
BudgetID uuid.UUID `json:"budget_id"`
|
||||
AccountID uuid.UUID `json:"account_id"`
|
||||
State string `json:"state"`
|
||||
}
|
||||
|
||||
func (h *Handler) newTransaction(c *gin.Context) {
|
||||
@ -59,25 +36,45 @@ func (h *Handler) newTransaction(c *gin.Context) {
|
||||
}
|
||||
|
||||
fmt.Printf("%v\n", payload)
|
||||
return
|
||||
|
||||
transactionAccountID, err := getUUID(c, "account_id")
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusNotAcceptable, fmt.Errorf("account_id: %w", err))
|
||||
return
|
||||
}
|
||||
|
||||
amount := postgres.Numeric{}
|
||||
amount.Set(payload.Amount)
|
||||
|
||||
transactionUUID, err := getNullUUIDFromParam(c, "transactionid")
|
||||
/*transactionUUID, err := getNullUUIDFromParam(c, "transactionid")
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("parse transaction id: %w", err))
|
||||
return
|
||||
}*/
|
||||
|
||||
//if !transactionUUID.Valid {
|
||||
new := postgres.CreateTransactionParams{
|
||||
Memo: payload.Memo,
|
||||
Date: time.Time(payload.Date),
|
||||
Amount: amount,
|
||||
AccountID: payload.AccountID,
|
||||
PayeeID: payload.Payee.ID, //TODO handle new payee
|
||||
CategoryID: payload.Category.ID, //TODO handle new category
|
||||
Status: postgres.TransactionStatus(payload.State),
|
||||
}
|
||||
_, err = h.Service.CreateTransaction(c.Request.Context(), new)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err))
|
||||
}
|
||||
|
||||
if !transactionUUID.Valid {
|
||||
new := postgres.CreateTransactionParams{
|
||||
return
|
||||
// }
|
||||
/*
|
||||
_, delete := c.GetPostForm("delete")
|
||||
if delete {
|
||||
err = h.Service.DeleteTransaction(c.Request.Context(), transactionUUID.UUID)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("delete transaction: %w", err))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
update := postgres.UpdateTransactionParams{
|
||||
ID: transactionUUID.UUID,
|
||||
Memo: payload.Memo,
|
||||
Date: time.Time(payload.Date),
|
||||
Amount: amount,
|
||||
@ -85,34 +82,8 @@ func (h *Handler) newTransaction(c *gin.Context) {
|
||||
PayeeID: payload.Payee.ID, //TODO handle new payee
|
||||
CategoryID: payload.Category.ID, //TODO handle new category
|
||||
}
|
||||
_, err = h.Service.CreateTransaction(c.Request.Context(), new)
|
||||
err = h.Service.UpdateTransaction(c.Request.Context(), update)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("create transaction: %w", err))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
_, delete := c.GetPostForm("delete")
|
||||
if delete {
|
||||
err = h.Service.DeleteTransaction(c.Request.Context(), transactionUUID.UUID)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("delete transaction: %w", err))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
update := postgres.UpdateTransactionParams{
|
||||
ID: transactionUUID.UUID,
|
||||
Memo: payload.Memo,
|
||||
Date: time.Time(payload.Date),
|
||||
Amount: amount,
|
||||
AccountID: transactionAccountID,
|
||||
PayeeID: payload.Payee.ID, //TODO handle new payee
|
||||
CategoryID: payload.Category.ID, //TODO handle new category
|
||||
}
|
||||
err = h.Service.UpdateTransaction(c.Request.Context(), update)
|
||||
if err != nil {
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("update transaction: %w", err))
|
||||
}
|
||||
c.AbortWithError(http.StatusInternalServerError, fmt.Errorf("update transaction: %w", err))
|
||||
}*/
|
||||
}
|
||||
|
@ -21,11 +21,13 @@ export default defineComponent({
|
||||
method: "POST",
|
||||
body: JSON.stringify({
|
||||
budget_id: this.budgetid,
|
||||
account_id: this.accountid,
|
||||
date: this.$data.TransactionDate,
|
||||
payee: this.$data.Payee,
|
||||
category: this.$data.Category,
|
||||
memo: this.$data.Memo,
|
||||
amount: this.$data.Amount
|
||||
amount: this.$data.Amount,
|
||||
state: "Uncleared"
|
||||
}),
|
||||
headers: this.$store.getters.AuthHeaders,
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user