Commit Graph

227 Commits

Author SHA1 Message Date
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
Daniel Schädler 7a9da4e22d Rearrange methods in playoff_stage_service 2019-05-26 20:15:58 +02:00
Daniel Schädler 27d6269f94 Rearrange new methods into one to split it later on 2019-05-26 20:15:58 +02:00
Daniel Schädler 4e907b1fc8 Improve Formatting in playoff_stage_service (I guess)
... Rubocop wanted it that way
2019-05-26 20:15:16 +02:00
Daniel Schädler e4c868c150 Fix second match winner advancing, even if match is not finished 2019-05-26 20:15:16 +02:00
Daniel Schädler 12daf53599 Check for errors while populating the match below 2019-05-26 20:15:16 +02:00
Daniel Schädler fc69c6e6e6 Implement PopulateMatchBelow Interactor & Organizer 2019-05-26 20:15:16 +02:00
Daniel Schädler c9b07f7033 Implement populate_match_below method 2019-05-26 20:14:13 +02:00
Daniel Schädler 2c9e06946d Call populate_match_below when a match is finished 2019-05-26 20:14:13 +02:00
Daniel Schädler 2f77d2d25b Add winner method to match 2019-05-26 20:14:13 +02:00
Daniel Schädler 280b0c1dec Change status of Match to only represent being finished
The winner will be a attribute of the Match instead of something
that is written in its status.
2019-05-26 20:14:13 +02:00
Daniel Schädler 1a2caaedef Remove unused evaluate status method 2019-05-26 20:14:13 +02:00
Daniel Schädler 9cfead9723 Make save_application_record_object work with arrays 2019-05-26 20:14:13 +02:00
Daniel Schädler 8388af20f0 Generalize tournament save interactor
It now is responsible for saving all ApplicationRecord objects to the
database. This will reduce code duplication one we have other objects
that need to be saved. (As we will soon need to save individual matches)
2019-05-26 20:14:13 +02:00
Daniel Schädler 4a7e207e9b Fix missing title in unused E-Mail Template 2019-05-26 17:41:11 +02:00
Daniel Schädler b36e3c4251 Delegate owner of team to tournament again 2019-05-22 09:25:07 +02:00
Daniel Schädler 03d7369a1c Remove link between team.owner and tournament 2019-05-22 09:25:07 +02:00
Thor77 37b63cace2
Use methods instead of attributes
because each attribute is only used once and updating a Stage should
reflect those changes
2019-05-16 20:53:05 +02:00
Thor77 d6a691fe5a
Add documentation to sort_group_scores 2019-05-16 20:53:05 +02:00
Thor77 99bfe6ed70
Add StatisticsController 2019-05-16 20:53:04 +02:00
Thor77 bdcfbe934b
Add StatisticsService 2019-05-16 20:53:04 +02:00
Thor77 894608c19e
Fix Stage.teams returning nil on error 2019-05-16 20:53:03 +02:00
Thor77 27c4bcacc8
Respond with 501 for state param 'finished'
(501 = NOT IMPLEMENTED)
2019-05-07 18:41:53 +02:00
Thor77 3876f57d32
Add methods and specs to update a match 2019-05-07 18:41:53 +02:00
Thor77 436adde706
Set global match var for reuse by other methods 2019-05-07 18:41:52 +02:00
Thor77 1b9db61c22
Add owner method to Stage, Group and Match 2019-05-07 18:41:52 +02:00
Daniel Schädler f7ed4b549d Destroying all Readability.
Noone will ever be able to read this code again.
2019-05-04 20:54:08 +02:00
Daniel Schädler 23249ee93b Build Matches without saving directly to database 2019-05-04 20:34:57 +02:00
Daniel Schädler 6a2c71bad7 Fix stage.team method not returning teams for playoff stages 2019-05-04 20:34:57 +02:00
Daniel Schädler db1518bdbd Raise exceptions upon error in group_stage_service 2019-05-04 20:34:57 +02:00
Daniel Schädler bfadc7a6af Dry out Tournaments Controller 2019-05-04 20:34:57 +02:00
Daniel Schädler fdac71a9f1 Unnecessary variable assignment 2019-05-04 20:34:57 +02:00
Daniel Schädler 9053251706 Document group_stage generation parameter preparation 2019-05-04 20:34:57 +02:00
Daniel Schädler f9b96cbee2 Indicate the groups variable being changed within the method 2019-05-04 20:34:57 +02:00
Daniel Schädler 74e9139b33 Removes unnecessary check 2019-05-04 20:34:57 +02:00
Daniel Schädler acfc388da4 Implements group stage tournament creation 2019-05-04 20:34:57 +02:00
Daniel Schädler f9b1b603f0 Permits "group_stage" as valid parameter for a create request 2019-05-04 20:34:57 +02:00
Daniel Schädler a842e0db3c Add group stage service
This service is responsible for all actions concerning the group stage
It returns false if no groups are given to generate_group_stage method
This prevents dividing by zero in the next line
2019-05-04 20:34:57 +02:00
Daniel Schädler f7919ec0c6 Adds Organizer to Add a group stage to a tournament and save it 2019-05-04 20:34:57 +02:00
Daniel Schädler 83cd4ed340 Let Context Fail if there are any stages already in the tournament 2019-05-04 20:34:57 +02:00
Daniel Schädler 548d9241c4 Add Interactor to add group stage to a tournament 2019-05-04 20:34:57 +02:00
Daniel Schädler 26b8ff96c9 Add teams method to group,match,stage
It returns the unique teams that compete within the object
2019-05-04 20:34:57 +02:00
Thor77 2b72d0457e Implement type parameter for tournaments index 2019-04-24 22:49:48 +02:00
Daniel Schädler d3d572ea1b Change return for 0 teams to exception 2019-04-23 14:21:29 +02:00
Daniel Schädler a30ff860e9 Return a valid list of matches for 1 team 2019-04-23 14:19:36 +02:00
Daniel Schädler 38425df823 Only support stage count calculation for 1+ teams 2019-04-23 14:19:36 +02:00
Daniel Schädler 49a6545af9 Fix start point for stages with matchnumbers that are not powers of 2 2019-04-23 14:19:36 +02:00
Daniel Schädler 1c2d051364 Subtract one off required stages if the number of teams is a power of 2
This way we now calculate the right amount of stages for every number.
(I would test every number, but Jonas won't let me write tests for all of them..)
2019-04-23 14:19:36 +02:00
Thor77 22e547befa Add validatable attribute to User model
to get email and password (existence) validation
2019-04-23 10:47:50 +02:00
Thor77 157844b4ae Catch missing parameter exceptions to render error 2019-04-16 13:24:58 +02:00
Thor77 08d2ae59a5 Check teams array before calling create method 2019-04-16 13:24:58 +02:00
Thor77 417b296d0e Override registration and session render methods
to remove wrapping data-element
2019-04-16 11:01:31 +02:00
Thor77 a2e35e1710 Create teams with only name attribute 2019-04-08 11:16:51 +02:00
Thor77 ec4e2797c2
Call tournament generation for create endpoint
and associate given team ids with the new tournament
2019-04-07 19:24:17 +02:00
Thor77 e78de72f3d
Fix id and model logged as unpermitted params
by slicing selected attributes from params and permitting them all.
2019-04-07 16:09:59 +02:00
Thor77 8b07c46acd
Permit parameters without root key 2019-04-07 14:00:06 +02:00
Daniel Schädler 7f87ce9230 Add documentation for all services 2019-04-03 15:33:59 +02:00
Thor77 d7910c093b Update user model to extend devise models 2019-04-03 09:43:04 +02:00
Thor77 5126e5ae76 Add position to MatchSerializer 2018-12-11 17:14:43 +01:00
Thor77 d1bc3de6b0 Add owner_username attribute to Tournament
displaying the username of the user owning the tournament
2018-12-11 17:14:43 +01:00
Thor77 32c012af32 Use plain params-hash instead of custom helper
for deserialization of create/update-data
2018-12-11 17:12:55 +01:00
Thor77 2f828542ef Alias recieved_points to received_points
to avoid a change of the db schema for now
2018-12-11 17:12:55 +01:00
Thor77 5076197f78 Recursively include all relations for a tournament 2018-12-11 17:12:55 +01:00
Thor77 e3bbe2b773 Include description only in full Tournament 2018-12-11 17:12:55 +01:00
Thor77 baf1acc10b Include team-relation in MatchScoreSerializer 2018-12-11 17:12:55 +01:00
Thor77 2f4df349c0 Add GroupScore, Group and StageSerializer 2018-12-11 17:12:55 +01:00
Thor77 bfe1c07fdc Include id-attribute for all serializers 2018-12-11 17:12:55 +01:00
Thor77 dc17cad154 Ensure uniqueness of generated Tournament.code 2018-12-02 13:51:54 +01:00
Daniel Schädler dd2f66f49d Score is now MatchScore & Score Attribute is Points Attribute 2018-11-30 15:10:33 +01:00
Thor77 e763f14719 Add ScoresController and their specs 2018-11-30 14:42:12 +01:00
Thor77 25b558105a Serialize has_one match relation 2018-11-30 14:42:12 +01:00
Thor77 7f59d6fb0e Delegate Score.owner to parent team 2018-11-30 14:38:56 +01:00
Daniel Schädler 68f9b3b2b3 Change Score to MatchScore & MatchScore score attribute to points
This is done to improve the naming and therefore make things easier to understand.
2018-11-30 14:15:48 +01:00
Daniel Schädler 27a0d9c4b2 Add Organizer for Tournament creation 2018-11-29 11:58:33 +01:00
Daniel Schädler 7ba1f98fb4 Implements Adding Tournaments to Database 2018-11-29 11:58:27 +01:00
Daniel Schädler 26bcc3dc88 Implement Adding Playoffs to a tournament 2018-11-29 11:10:15 +01:00
Daniel Schädler 7f243b06a2 Implement Utils Class 2018-11-29 11:03:44 +01:00
Daniel Schädler 1c318cde1a Add State to Model 2018-11-29 10:47:17 +01:00
Thor77 4c05a7222e
Use deserialize_params helper 2018-11-25 22:55:49 +01:00
Thor77 0a583ebe53
Remove unused match_params 2018-11-25 22:55:49 +01:00
Thor77 9d4d39c135
Make Team.belongs_to :tournament optional
necessary for testing TeamController building relationship on create
2018-11-25 22:55:49 +01:00
Thor77 e81ef81150
Add TournamentsController 2018-11-25 22:55:48 +01:00
Thor77 d1f66b18d4
Add tournament serializers
SimpleTournamentSerializer excludes relationships and should be used for
listings
2018-11-25 22:55:48 +01:00
Thor77 fecdb7db2d
Add deserialize_params helper 2018-11-25 22:55:48 +01:00
Thor77 92de7b8a57
Fix rubocop Style/MethodDefParentheses 2018-11-24 19:20:53 +01:00
Thor77 0308dc121f
Add TeamsController and corresponding specs 2018-11-24 19:18:03 +01:00
Thor77 8b3b8352e5
Delegate owner attribute to tournament 2018-11-24 19:16:04 +01:00
Thor77 668584c68b
Add require_owner! filter action 2018-11-24 19:14:31 +01:00
Thor77 bc88ddc54d Add serializer for Match, Score and Team 2018-11-21 18:57:59 +01:00
Thor77 6c24180715 Add MatchesController and specs for it 2018-11-21 18:57:16 +01:00
Thor77 673e12c052 Validate Stage xor Group present in match 2018-11-20 16:03:58 +01:00
Thor77 552566dd2e Validate match has only 2 scores 2018-11-19 14:57:55 +01:00
Thor77 0bcd3a88a9 Validate presence of name 2018-11-19 14:45:01 +01:00
Thor77 65abada8b2
Modify model associations to map to new schema 2018-11-19 11:47:14 +01:00
Thor77 03f362a7fe
Add Score and Stage model 2018-11-19 11:47:14 +01:00
Thor77 21103588a2
Remove unused Group- and PlayoffStage models
because they are now both represented by the Stage model
2018-11-19 11:47:13 +01:00
Thor77 556f326acd
Alias Tournament.user to Tournament.owner 2018-11-19 11:47:12 +01:00
Thor77 b742b3ed67
Move group scores into separate table 2018-11-19 11:47:12 +01:00
Thor77 07eb561f77
Implement Tournament-Team relation 2018-11-19 11:47:12 +01:00
Thor77 20fafab009
Generate tournament code if not given 2018-11-19 11:47:11 +01:00
Thor77 d89c24a645
Add relation between Tournament and User 2018-11-19 11:47:11 +01:00
Daniel Schädler a13b8e0c72 Change neededGames to needed_games 2018-11-12 16:45:51 +01:00
Thor77 c9421e6d42
Add Tournament model 2018-11-11 21:31:47 +01:00
Thor77 5774b2463a Format imported code 2018-11-11 19:39:13 +01:00
Daniel Schädler d5d61ec0a2 Add some Models 2018-11-11 18:52:15 +01:00
Thor77 2a20c02f56 Apply rubocop formatting 2018-11-10 15:50:27 +01:00
Thor77 3f8ca715cc Add devise token authentication 2018-11-10 15:46:02 +01:00
Thor77 9d51a36b0a Initial commit 2018-10-30 15:52:46 +01:00