summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
Diffstat (limited to 'internal')
-rw-r--r--internal/handlers/handlers.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go
index ed100fc..8762035 100644
--- a/internal/handlers/handlers.go
+++ b/internal/handlers/handlers.go
@@ -438,3 +438,93 @@ func (h *Handler) fetchBoards(ctx context.Context, forceRefresh bool) ([]models.
return boards, nil
}
+
+// HandleCreateCard creates a new Trello card
+func (h *Handler) HandleCreateCard(w http.ResponseWriter, r *http.Request) {
+ ctx := r.Context()
+
+ // Parse form data
+ if err := r.ParseForm(); err != nil {
+ http.Error(w, "Failed to parse form", http.StatusBadRequest)
+ log.Printf("Error parsing form: %v", err)
+ return
+ }
+
+ boardID := r.FormValue("board_id")
+ listID := r.FormValue("list_id")
+ name := r.FormValue("name")
+
+ if boardID == "" || listID == "" || name == "" {
+ http.Error(w, "Missing required fields", http.StatusBadRequest)
+ return
+ }
+
+ // Create the card
+ _, err := h.trelloClient.CreateCard(ctx, listID, name, "", nil)
+ if err != nil {
+ http.Error(w, "Failed to create card", http.StatusInternalServerError)
+ log.Printf("Error creating card: %v", err)
+ return
+ }
+
+ // Force refresh to get updated data
+ data, err := h.aggregateData(ctx, true)
+ if err != nil {
+ http.Error(w, "Failed to refresh data", http.StatusInternalServerError)
+ log.Printf("Error refreshing data: %v", err)
+ return
+ }
+
+ // Find the specific board
+ var targetBoard *models.Board
+ for i := range data.Boards {
+ if data.Boards[i].ID == boardID {
+ targetBoard = &data.Boards[i]
+ break
+ }
+ }
+
+ if targetBoard == nil {
+ http.Error(w, "Board not found", http.StatusNotFound)
+ return
+ }
+
+ // Render the updated board
+ if err := h.templates.ExecuteTemplate(w, "trello-board", targetBoard); err != nil {
+ http.Error(w, "Failed to render template", http.StatusInternalServerError)
+ log.Printf("Error rendering board template: %v", err)
+ }
+}
+
+// HandleCompleteCard marks a Trello card as complete
+func (h *Handler) HandleCompleteCard(w http.ResponseWriter, r *http.Request) {
+ ctx := r.Context()
+
+ // Parse form data
+ if err := r.ParseForm(); err != nil {
+ http.Error(w, "Failed to parse form", http.StatusBadRequest)
+ log.Printf("Error parsing form: %v", err)
+ return
+ }
+
+ cardID := r.FormValue("card_id")
+
+ if cardID == "" {
+ http.Error(w, "Missing card_id", http.StatusBadRequest)
+ return
+ }
+
+ // Mark card as closed (complete)
+ updates := map[string]interface{}{
+ "closed": true,
+ }
+
+ if err := h.trelloClient.UpdateCard(ctx, cardID, updates); err != nil {
+ http.Error(w, "Failed to complete card", http.StatusInternalServerError)
+ log.Printf("Error completing card: %v", err)
+ return
+ }
+
+ // Return empty response (card will be removed from DOM)
+ w.WriteHeader(http.StatusOK)
+}