diff --git a/handlers/syndicate.go b/handlers/syndicate.go index cf2075e..6f1cdfd 100644 --- a/handlers/syndicate.go +++ b/handlers/syndicate.go @@ -22,14 +22,14 @@ func CreateSyndicateHandler(db *sql.DB) http.HandlerFunc { name := r.FormValue("name") description := r.FormValue("description") - userID, ok := helpers.GetCurrentUserID(r) + userId, ok := helpers.GetCurrentUserID(r) if !ok || name == "" { helpers.SetFlash(w, r, "Invalid data submitted") http.Redirect(w, r, "/account/syndicates/create", http.StatusSeeOther) return } - err := storage.CreateSyndicate(db, name, description, userID) + _, err := storage.CreateSyndicate(db, userId, name, description) if err != nil { helpers.SetFlash(w, r, "Failed to create syndicate") } else { @@ -178,8 +178,6 @@ func SyndicateLogTicketHandler(db *sql.DB) http.HandlerFunc { drawDate := r.FormValue("draw_date") method := r.FormValue("purchase_method") - balls := helpers.ParseBallFields(r, gameType) - err := storage.InsertTicket(db, models.Ticket{ UserId: userID, GameType: gameType, diff --git a/storage/syndicate.go b/storage/syndicate.go index acae356..8bc6871 100644 --- a/storage/syndicate.go +++ b/storage/syndicate.go @@ -2,7 +2,9 @@ package storage import ( "database/sql" + "fmt" "synlotto-website/models" + "time" ) func GetSyndicatesByOwner(db *sql.DB, ownerID int) []models.Syndicate { @@ -191,3 +193,38 @@ func AcceptInvite(db *sql.DB, inviteID, userID int) error { `, syndicateID, userID) return err } + +func CreateSyndicate(db *sql.DB, ownerID int, name, description string) (int64, error) { + tx, err := db.Begin() + if err != nil { + return 0, err + } + defer tx.Rollback() + + result, err := tx.Exec(` + INSERT INTO syndicates (name, description, owner_id, created_at) + VALUES (?, ?, ?, ?) + `, name, description, ownerID, time.Now()) + if err != nil { + return 0, fmt.Errorf("failed to create syndicate: %w", err) + } + + syndicateID, err := result.LastInsertId() + if err != nil { + return 0, fmt.Errorf("failed to get syndicate ID: %w", err) + } + + _, err = tx.Exec(` + INSERT INTO syndicate_members (syndicate_id, user_id, accepted) + VALUES (?, ?, 1) + `, syndicateID, ownerID) + if err != nil { + return 0, fmt.Errorf("failed to add owner as member: %w", err) + } + + if err := tx.Commit(); err != nil { + return 0, fmt.Errorf("commit failed: %w", err) + } + + return syndicateID, nil +}