# frozen_string_literal: true module EuchreCamp module Actions module Admin module Matches class ProcessUpload < EuchreCamp::Action include Deps[events_repo: 'repositories.events'] def handle(request, response) # In Hanami, file uploads are in request.params file = request.params[:csv_file] event_id = request.params[:event_id]&.to_i unless file && file[:tempfile] response.flash[:error] = "No file uploaded" response.redirect_to("/admin/matches/upload") return end unless event_id response.flash[:error] = "Please select a tournament" response.redirect_to("/admin/matches/upload") return end # Verify event exists begin events_repo.by_id(event_id) rescue response.flash[:error] = "Invalid tournament ID" response.redirect_to("/admin/matches/upload") return end # Use the specialized importer for Euchre tournament results importer = EuchreCamp::Services::TournamentCsvImporter.new(event_id: event_id) results = importer.import(file[:tempfile].path) message = "Created #{results[:matches_created]} matches, #{results[:teams_created]} teams" message += ". Errors: #{results[:errors].join(', ')}" if results[:errors].any? response.flash[:message] = message response.redirect_to("/admin/tournaments/#{event_id}") end end end end end end