-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfantasy_transfer_service.py
35 lines (26 loc) · 1.1 KB
/
fantasy_transfer_service.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from dataclasses import dataclass
from typing import Optional
from fantasy_team_generator import FantasyTeam
from player import Player
from player_repository import PlayerRepository
@dataclass
class Transfer:
remove: Player
bring_in: Player
@property
def form_change(self) -> float:
return self.bring_in.form - self.remove.form
class FantasyTransferService:
@classmethod
def suggest_transfer(cls, team: FantasyTeam) -> Optional[Transfer]:
player_repository = PlayerRepository()
best_transfer = None
best_form_change = 0
for player in player_repository.get_players():
current_players = team.players_at(player.position)
for current_player in current_players:
if team.can_replace(current_player, player) and current_player.form < player.form:
if player.form - current_player.form > best_form_change:
best_transfer = Transfer(remove=current_player, bring_in=player)
best_form_change = player.form - current_player.form
return best_transfer