diff --git a/http/budget.go b/http/budget.go new file mode 100644 index 0000000..d0731b1 --- /dev/null +++ b/http/budget.go @@ -0,0 +1,52 @@ +package http + +import ( + "context" + "net/http" + + "git.javil.eu/jacob1123/budgeteer" + "git.javil.eu/jacob1123/budgeteer/postgres" + "github.com/gin-gonic/gin" + "github.com/google/uuid" +) + +type BudgetData struct { + Token budgeteer.Token + Budget *postgres.Budget + Transactions []postgres.Transaction +} + +func (h *Handler) budget(c *gin.Context) { + token, err := h.verifyLogin(c) + if err != nil { + c.Redirect(http.StatusTemporaryRedirect, "/login") + return + } + + budgetID := c.Param("budgetid") + budgetUUID, err := uuid.Parse(budgetID) + if err != nil { + c.Redirect(http.StatusTemporaryRedirect, "/login") + return + } + + budget, err := h.Service.DB.GetBudget(context.Background(), budgetUUID) + if err != nil { + c.AbortWithError(http.StatusNotFound, err) + return + } + + transactions, err := h.Service.DB.GetTransactionsForBudget(context.Background(), budgetUUID) + if err != nil { + c.AbortWithError(http.StatusInternalServerError, err) + return + } + + d := BudgetData{ + Token: token, + Budget: &budget, + Transactions: transactions, + } + + c.HTML(http.StatusOK, "budget", d) +} diff --git a/http/dashboard.go b/http/dashboard.go new file mode 100644 index 0000000..06028fe --- /dev/null +++ b/http/dashboard.go @@ -0,0 +1,34 @@ +package http + +import ( + "net/http" + + "git.javil.eu/jacob1123/budgeteer" + "git.javil.eu/jacob1123/budgeteer/postgres" + "github.com/gin-gonic/gin" +) + +func (h *Handler) dashboard(c *gin.Context) { + token, err := h.verifyLogin(c) + if err != nil { + c.Redirect(http.StatusTemporaryRedirect, "/login") + return + } + + userID := token.GetID() + budgets, err := h.Service.BudgetsForUser(userID) + if err != nil { + return + } + + d := DashboardData{ + Token: token, + Budgets: budgets, + } + c.HTML(http.StatusOK, "dashboard", d) +} + +type DashboardData struct { + Token budgeteer.Token + Budgets []postgres.Budget +} diff --git a/http/data.go b/http/data.go deleted file mode 100644 index 9b0a09b..0000000 --- a/http/data.go +++ /dev/null @@ -1,22 +0,0 @@ -package http - -import ( - "git.javil.eu/jacob1123/budgeteer" - "git.javil.eu/jacob1123/budgeteer/postgres" -) - -type TemplateData struct { - Token budgeteer.Token - Budget *postgres.Budget - budgetService *postgres.Repository -} - -func (d TemplateData) GetBudgets() []postgres.Budget { - userID := d.Token.GetID() - budgets, err := d.budgetService.BudgetsForUser(userID) - if err != nil { - return nil - } - - return budgets -} diff --git a/http/http.go b/http/http.go index 1424cad..2ce61b3 100644 --- a/http/http.go +++ b/http/http.go @@ -14,7 +14,6 @@ import ( "git.javil.eu/jacob1123/budgeteer/web" "github.com/gin-gonic/gin" - "github.com/google/uuid" ) // Handler handles incoming requests @@ -65,35 +64,6 @@ func (h *Handler) Serve() { router.Run(":1323") } -func (h *Handler) budget(c *gin.Context) { - token, err := h.verifyLogin(c) - if err != nil { - c.Redirect(http.StatusTemporaryRedirect, "/login") - return - } - - budgetID := c.Param("budgetid") - budgetUUID, err := uuid.Parse(budgetID) - if err != nil { - c.Redirect(http.StatusTemporaryRedirect, "/login") - return - } - - budget, err := h.Service.DB.GetBudget(context.Background(), budgetUUID) - if err != nil { - c.AbortWithError(http.StatusUnauthorized, err) - return - } - - d := TemplateData{ - Token: token, - Budget: &budget, - budgetService: h.Service, - } - - c.HTML(http.StatusOK, "budget", d) -} - func (h *Handler) newBudget(c *gin.Context) { token, err := h.verifyLogin(c) if err != nil { @@ -114,20 +84,6 @@ func (h *Handler) newBudget(c *gin.Context) { } } -func (h *Handler) dashboard(c *gin.Context) { - token, err := h.verifyLogin(c) - if err != nil { - c.Redirect(http.StatusTemporaryRedirect, "/login") - return - } - - d := TemplateData{ - Token: token, - budgetService: h.Service, - } - c.HTML(http.StatusOK, "dashboard", d) -} - func (h *Handler) verifyLogin(c *gin.Context) (budgeteer.Token, error) { tokenString, err := c.Cookie(authCookie) if err != nil { diff --git a/web/budget.html b/web/budget.html index 3305cd4..462fe0f 100644 --- a/web/budget.html +++ b/web/budget.html @@ -8,20 +8,23 @@ -
- {{range .GetBudgets}} -
- {{.Name}} - -
+
+ New Budget + +
+ + {{range .Transactions}} + + + + + {{end}} -
- New Budget - -
- +
{{.Date}} + {{.Memo.String}} + {{.Amount}}
{{template "budget-new"}} diff --git a/web/dashboard.html b/web/dashboard.html index d0a4678..33c7c44 100644 --- a/web/dashboard.html +++ b/web/dashboard.html @@ -11,7 +11,7 @@ Budgeteer - {{.Token.GetName}}
- {{range .GetBudgets}} + {{range .Budgets}}
{{.Name}}