# frozen_string_literal: true module EuchreCamp module Actions module Admin module Tournaments module Teams class Create < EuchreCamp::Action include Deps[ teams_repo: 'repositories.teams', players_repo: 'repositories.players', participants_repo: 'repositories.event_participants' ] def handle(request, response) tournament_id = request.params[:id] params = request.params.to_h player_1_id = params[:player_1_id]&.to_i player_2_id = params[:player_2_id]&.to_i team_name = params[:team_name] if player_1_id.nil? || player_2_id.nil? response.flash[:error] = "Please select both players" response.redirect_to("/admin/tournaments/#{tournament_id}") return end if player_1_id == player_2_id response.flash[:error] = "Players must be different" response.redirect_to("/admin/tournaments/#{tournament_id}") return end # Ensure players are registered as participants [player_1_id, player_2_id].each do |player_id| existing = participants_repo.by_event(tournament_id).find { |p| p[:player_id] == player_id } unless existing participants_repo.register_player(tournament_id, player_id) end end # Create the team team = teams_repo.create( event_id: tournament_id, player_1_id: player_1_id, player_2_id: player_2_id, team_name: team_name || "Team #{player_1_id}-#{player_2_id}" ) response.flash[:message] = "Team created successfully" response.redirect_to("/admin/tournaments/#{tournament_id}") rescue StandardError => e response.flash[:error] = "Failed to create team: #{e.message}" response.redirect_to("/admin/tournaments/#{tournament_id}") end end end end end end end