# frozen_string_literal: true module EuchreCamp module Actions module Admin module Matches class Index < EuchreCamp::Action include Deps[repo: 'repositories.matches'] def handle(request, response) # Check authorization - view all matches user = current_user(request) unless user && EuchreCamp::Services::Authorization.can?(user, :view_all) response.flash[:error] = 'Access denied' response.redirect_to '/rankings' return end matches = repo.all enhanced_matches = enhance_matches_with_player_names(matches) response.render(view, matches: enhanced_matches) end private def enhance_matches_with_player_names(matches) rom = EuchreCamp::App["persistence.rom"] all_players = rom.relations[:players].to_a.to_h { |p| [p[:id], p] } matches.map do |match| match.to_h.merge( team_1_p1_name: all_players[match.team_1_p1_id]&.[](:name) || 'Unknown', team_1_p2_name: all_players[match.team_1_p2_id]&.[](:name) || 'Unknown', team_2_p1_name: all_players[match.team_2_p1_id]&.[](:name) || 'Unknown', team_2_p2_name: all_players[match.team_2_p2_id]&.[](:name) || 'Unknown' ) end end end end end end end