Tobias Huber
5a7ff67e73
needs testing
2025-03-02 13:17:38 +01:00
Daniel Schädler
92acbbc221
Split up get_advancing_teams
2025-02-12 21:52:23 +01:00
Daniel Schädler
f36c7817d1
Add offset for second team to make rematches possible in finale only
2025-02-12 21:47:51 +01:00
Daniel Schädler
e70d16b688
Add special case for po2 teams in tournament and half advancing
2024-04-07 23:10:36 +02:00
Daniel Schädler
c35905b52a
Improve readability
2024-04-07 22:45:28 +02:00
Daniel Schädler
b072104241
Beautify code
2024-04-07 22:01:23 +02:00
Daniel Schädler
5d857c5d82
Remove position from comparison
2024-04-07 21:40:59 +02:00
Daniel Schädler
2705cd0bdb
Assign position directly
2024-04-07 21:21:17 +02:00
Daniel Schädler
4a8cb71fc4
Add and calculate position to sort group_scores by
2024-04-07 21:17:45 +02:00
Daniel Schädler
1084d836c1
Implement sorting correctly with <=> operator
2024-04-07 18:07:55 +02:00
Daniel Schädler
86651169e9
Sort group scores correctly in backend
2024-04-07 17:24:42 +02:00
Daniel Schädler
6432296391
Fix logging
2022-07-01 22:21:23 +02:00
Daniel Schädler
b609549659
Add logging if updating group scores fails
2022-07-01 20:19:57 +02:00
Daniel Schädler
a67ef86dca
Fix upcoming matches not returning for group stage
2022-06-29 22:48:54 +02:00
Daniel Schädler
8d438946fe
Merge branch 'master' into performance
2022-06-25 21:32:17 +02:00
Daniel Schädler
385e2554b2
Shuffle intermediate stage match position before populating stage below
2022-06-25 21:28:44 +02:00
Daniel Schädler
bbb8e209df
Update groups points at start and end of a match
2022-06-25 18:20:59 +02:00
Daniel Schädler
94aaa2d8f4
Add missing end of class
2022-06-25 16:57:14 +02:00
Daniel Schädler
d18efbac96
Remove bets instead of just commenting
2022-06-12 21:42:01 +00:00
Thor77
96abf0536a
Add simple health check
2022-06-10 19:18:08 +02:00
Daniel Schädler
40edc85562
Disable bet serialization when matches are requested
2022-05-29 23:58:12 +02:00
Daniel Schädler
ead6d4f475
TUR-9: Alter match filter for playoff stage to how it probably was meant to be
2022-05-20 09:41:01 +02:00
Daniel Schädler
afa9a26d93
Add documentation to upcoming matches filter
2022-05-20 09:27:54 +02:00
Daniel Schädler
22ab1eb69b
TUR-9: Remove unnecessary reject (this never did anything; there is no state "running")
2022-05-20 09:27:54 +02:00
Daniel Schädler
e184c76083
WIP
2022-05-20 09:27:53 +02:00
Daniel Schädler
dc0afbec14
TUR-22: Add documentation to match reordering
2022-05-20 00:25:02 +02:00
Daniel Schädler
0b6ad3f879
Improve group match order
2022-05-20 00:24:21 +02:00
Daniel Schädler
c3af6f9232
Rubocop -A
2021-08-15 14:31:50 +02:00
Daniel Schädler
1a96cefbc8
Guard clause to make Hound woof
2019-11-09 00:00:43 +01:00
Daniel Schädler
8c39fa9894
Manually sort position of groups of 4 teams
2019-11-08 23:51:23 +01:00
Thor77
28d047b1bf
Include parent group/stage in .index
2019-11-06 15:58:10 +01:00
Thor77
5343fcbd20
Recurisvely include all related objects
2019-11-06 11:38:24 +01:00
Daniel Schädler
b001817bac
Filter matches by state parameter
2019-10-26 00:34:04 +02:00
Daniel Schädler
33ccab8988
Return all matches also from groups
2019-10-26 00:32:14 +02:00
Daniel Schädler
a6b7a905a0
Return matches as children of tournament
2019-10-25 23:49:27 +02:00
Daniel Schädler
77c76b7a31
Add matches method to tournament
...
The method collects all matches from all stages
2019-10-25 23:47:38 +02:00
Thor77
d317585168
Add "simple" parameter to tournament show
2019-10-25 23:17:08 +02:00
Daniel Schädler
a2691b9f88
Cache group_score in variable in sort function
2019-06-18 22:35:17 +02:00
Daniel Schädler
b28561043e
Implement stages controller (GET UPDATE)
2019-06-18 22:22:10 +02:00
Daniel Schädler
54ab1570b1
Sort teams more explicitly and in the right order
2019-06-18 22:22:10 +02:00
Daniel Schädler
4925ea9d83
Make teams added to PlayoffStage configurable
2019-06-18 22:22:10 +02:00
Daniel Schädler
4e72d015ff
Implement method to check if stage is over
2019-06-18 19:22:05 +02:00
Daniel Schädler
bc0c7fddc3
Make match position randomizable
2019-06-18 19:22:05 +02:00
Daniel Schädler
88cbba440d
Implement methods to get teams sorted by their group scores
2019-06-18 19:22:05 +02:00
Daniel Schädler
c5780c2da3
Implement function to calculate the difference in points
2019-06-18 19:22:05 +02:00
Thor77
041ee4ab2c
Include bets in match resource
2019-06-18 18:51:55 +02:00
Thor77
f3b8fd4184
Use collection serializer
2019-06-18 18:51:55 +02:00
Thor77
123649a4f4
Add collection serializer for bets
2019-06-18 18:51:55 +02:00
Daniel Schädler
386155a690
Fix last Match not being stopped correctly
2019-06-18 14:09:29 +02:00
Thor77
2baefb9ae6
Associate teams only on interactor success
2019-06-18 13:29:31 +02:00
Thor77
3109308817
Fix teams not associated with created tournament
...
when choosing a group stage
2019-06-18 13:29:31 +02:00
Thor77
6640be1e9a
Add devise confirmable to user model
2019-06-18 12:27:00 +02:00
Thor77
fb2e7aa385
Add generated devise mailer views
2019-06-18 12:27:00 +02:00
Daniel Schädler
213867a827
Let context fail if population of match below fails
2019-06-17 15:02:30 +02:00
Daniel Schädler
e0da9ff7b5
Assign empty array if object_to_save is nil before pushing values to it
...
https://stackoverflow.com/questions/12163625/create-or-append-to-array-in-ruby
2019-06-17 15:02:30 +02:00
Daniel Schädler
c9e1e153df
Add interactor to advance all teams stuck in single team matches
...
After playoffs are created, before saving the stage this interactor
goes to the intermediate stage, looks for all the matches that are
:single_team matches and populates the match below with their respective
"winner".
2019-06-17 15:02:30 +02:00
Daniel Schädler
98319e9625
Assign :intermediate_stage to first stage if single_team matches present
2019-06-17 15:02:30 +02:00
Daniel Schädler
5f378f27b2
Correct position for :single_team matches
2019-06-17 15:02:30 +02:00
Daniel Schädler
36db03293e
Return a "winner" for :single_team matches
2019-06-17 15:02:30 +02:00
Daniel Schädler
8e3325bbfc
Simplify concatenation of empty stages
2019-06-17 15:02:30 +02:00
Thor77
914cfbd94d
Reword error on invalid match state
2019-06-17 13:48:50 +02:00
Thor77
175870ab42
Prevent betting on running/finished matches
2019-06-17 13:48:50 +02:00
Thor77
6d12f889c5
Add Bet serializer
2019-06-17 13:48:50 +02:00
Thor77
167a2116f1
Prevent duplicate bets on the same match
2019-06-17 13:48:50 +02:00
Thor77
76e301e920
Add BetsController
2019-06-17 13:48:49 +02:00
Thor77
b9aaccb487
Raise UserServiceError instead of StandardError
2019-06-17 13:48:49 +02:00
Thor77
2f0127897e
Add UserService
2019-06-17 13:48:49 +02:00
Thor77
f3431e8442
Add bet model
...
* has_many relations in all belonging models
* specs for relations in existing models
* association specs for bet model
2019-06-17 13:48:49 +02:00
Daniel Schädler
db70e33882
Assign number to each group
2019-06-17 13:37:06 +02:00
Daniel Schädler
a74030a7ef
Implement GroupsController
2019-06-16 13:22:15 +02:00
Daniel Schädler
2e336262aa
Add state to stage
...
This state is required to stop the group stage and trigger playoff
generation, it is (for now) irrelevant for anything other than that.
2019-06-13 13:21:24 +02:00
Daniel Schädler
5004dec39a
Change playoff transition relevant attributes of tournament on update
...
They are only updated when playoff_teams_amount changed alone
2019-06-13 13:21:24 +02:00
Daniel Schädler
e936fd40b2
Convert integer parameters to actual integers
...
Apparently rails thinks this is the way to do it.
2019-06-13 13:21:24 +02:00
Daniel Schädler
b408d1dd37
Ignore validity of matching params if only playoff_teams_amount changed
...
If only playoff_teams_amount changed, the other two will be overwritten
anyways.
2019-06-13 13:21:24 +02:00
Daniel Schädler
6a060651a4
Validate update parameters
...
playoff_teams_amount, instant_finalists_amount and
intermediate_round_participants_amount need to make sense together
2019-06-13 13:21:24 +02:00
Daniel Schädler
f04c11427a
Assign default values on Group Stage creation
...
default values are assigned to instant_finalists_amount and
intermediate_round_participants_amount depending on playoff_teams_amount and group amount
2019-06-13 13:21:24 +02:00
Daniel Schädler
4d5d7bc812
Only allow positive powers of two for playoff_teams_amount
2019-06-13 13:21:24 +02:00
Daniel Schädler
f5b610703c
Add two new parameters to tournament
...
instant_finalists_amount is the amount of teams that instantly are in
the finals after the group stage ends.
intermediate_round_participants_amount is the amount of teams that have
a chance to advance after group stage but must play a relegation game to
actually do so.
Both of these values need to match, so that
instant_finalists_amount + (intermediate_round_participants_amount / 2)
is a power of 2. Or to be more precise, the power of two that is saved
in playoff_teams_amount of the tournament.
2019-06-13 13:21:24 +02:00
Daniel Schädler
c1b2b72ca3
Simplify controller code
...
Matches update now gets rolled back via a Transaction
2019-06-05 17:05:58 +02:00
Daniel Schädler
68535b89fc
Prevent matches from being stopped without a winner in playoffs
2019-06-05 17:05:58 +02:00
Daniel Schädler
bd2af09339
Add field to tournament containing playoff_teams_amount
...
This field represents how many teams advance into playoff stage after
the group stage has ended.
2019-06-05 16:46:06 +02:00
Daniel Schädler
96398706ea
Add GroupScore objects for every team to the group stage
2019-06-05 09:49:21 +02:00
Daniel Schädler
957788651c
Update group_scores on match_score change if match is a group match
2019-06-05 09:49:21 +02:00
Daniel Schädler
564cec2820
Add method to check if match_score is part of a group match
2019-06-05 09:49:21 +02:00
Daniel Schädler
d556e3e833
Implement update_group_score method
...
This method calculates all the group scores of the group given to it
2019-06-05 09:49:21 +02:00
Daniel Schädler
752beefca6
Correctly handle matches that are not started yet
2019-06-05 09:49:21 +02:00
Daniel Schädler
c1dc43948b
Fix typo in received_points
2019-06-05 09:49:21 +02:00
Daniel Schädler
bd0f8c7fd2
Replace guard clauses with ternary operator
...
@thor77 apparently thinks this is better then it was before.. i don't
really care so here we go ¯\_(ツ)_/¯
2019-06-05 09:49:20 +02:00
Daniel Schädler
e868e936e4
Implement Methods returning points of teams per match
...
These methods return group_points scored_points and received_points
respectively when given a team that is present in the match
They return 0 when given a team that isn't contesting in that match
2019-06-05 09:26:11 +02:00
Daniel Schädler
a4ea0cf979
Move self methods into self block
2019-06-05 09:26:11 +02:00
Thor77
b07447aaae
Permit username key for account update
2019-06-04 09:55:45 +02:00
Thor77
91fe9dba16
Add winner attribute to match serializer
2019-05-28 23:18:55 +02:00
Thor77
12005b95fa
Fix group score not serialized correctly
...
when returned from statistics endpoint
2019-05-28 22:24:03 +02:00
Daniel Schädler
6f44823bc6
Change match state of match below
2019-05-26 20:15:59 +02:00
Daniel Schädler
8bdcd51e66
Move all methods in playoff_stage_service into self block
2019-05-26 20:15:59 +02:00
Daniel Schädler
645f3d0800
Return changed objects in populate_match_below
2019-05-26 20:15:58 +02:00
Daniel Schädler
95bed3959f
Actually make singleton_methods private
...
(Rubocop told me so and I trust the police)
2019-05-26 20:15:58 +02:00
Daniel Schädler
cda7d168f5
Save match_scores explicitly after changing them
2019-05-26 20:15:58 +02:00
Daniel Schädler
93cea002f9
Change the way, existing match_scores are handled
2019-05-26 20:15:58 +02:00
Daniel Schädler
2b39bb1521
Move populating the match below to when the state is changed
2019-05-26 20:15:58 +02:00