Skip to content

Commit 4bd7eea

Browse files
committed
feat: implement draft lobby
1 parent 0370223 commit 4bd7eea

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

app/modules/strategy/controllers/draft_simulations_controller.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@ module Controllers
77
class DraftSimulationsController < Api::V1::BaseController
88
before_action :set_draft_simulation, only: %i[update destroy]
99

10+
# GET /api/v1/strategy/draft-simulations
11+
def list
12+
series = organization_scoped(DraftSimulation)
13+
.select(:series_id, :team1_name, :team2_name, :patch, :league, :fearless, :created_at,
14+
:blue_picks, :red_picks, :blue_bans, :red_bans)
15+
.order(created_at: :desc)
16+
.group_by(&:series_id)
17+
.map { |series_id, games| build_series_summary(series_id, games) }
18+
19+
render_success({ series: series })
20+
end
21+
1022
# GET /api/v1/strategy/draft-simulations/:series_id
1123
def index
1224
simulations = organization_scoped(DraftSimulation).for_series(params[:series_id])
@@ -70,6 +82,25 @@ def set_draft_simulation
7082
@draft_simulation = organization_scoped(DraftSimulation).find(params[:id])
7183
end
7284

85+
def build_series_summary(series_id, games)
86+
first = games.first
87+
total_picks = games.sum { |g| Array(g.blue_picks).size + Array(g.red_picks).size }
88+
total_bans = games.sum { |g| Array(g.blue_bans).size + Array(g.red_bans).size }
89+
90+
{
91+
series_id: series_id,
92+
team1_name: first.team1_name,
93+
team2_name: first.team2_name,
94+
patch: first.patch,
95+
league: first.league,
96+
fearless: first.fearless,
97+
game_count: games.size,
98+
total_picks: total_picks,
99+
total_bans: total_bans,
100+
created_at: first.created_at
101+
}
102+
end
103+
73104
def create_params
74105
params.require(:draft_simulation).permit(
75106
:series_id,

config/routes.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@
425425
controller: '/strategy/controllers/draft_simulations',
426426
only: %i[create destroy] do
427427
collection do
428+
get :list
428429
get ':series_id', action: :index, as: :series
429430
end
430431
member do

0 commit comments

Comments
 (0)