from django.db import models
# Create your models here.
from django.utils import timezone

from accounts.models import FifaAccount
from squad_battle.consts import SquadBattleServerSideHandlerWorkerStatus


class FifaAccountSquadGame(models.Model):
    create_time = models.DateTimeField(default=timezone.now)
    fifa_account = models.ForeignKey(FifaAccount, on_delete=models.CASCADE, null=True, blank=True)
    end_time = models.DateTimeField(null=True, blank=True)
    game_number = models.IntegerField(default=0)
    difficulty = models.CharField(max_length=255, null=True, blank=True)
    enemy_team_rate = models.IntegerField(null=True, blank=True)
    win_status = models.BooleanField(null=True)

    def __str__(self):
        return f'{self.fifa_account}'


class SquadBattleServerSideHandlerWorker(models.Model):
    create_time = models.DateTimeField(default=timezone.now)
    fifa_account = models.ForeignKey('accounts.FifaAccount', on_delete=models.CASCADE, null=True, blank=True)
    sbc_worker = models.ForeignKey('sbc.SBCWorker', on_delete=models.CASCADE, null=True, blank=True)
    need_fix_main_squad = models.IntegerField(default=0)
    need_heals_count = models.IntegerField(default=0)
    need_contracts_count = models.IntegerField(default=0)
    need_manager_contracts_count = models.IntegerField(default=0)
    need_position_modifier = models.IntegerField(default=0, null=True)  # no need null,just because don't break all bots
    use_contract = models.IntegerField(default=1)
    need_player_for_special_squad = models.ManyToManyField('accounts.PlayerCard', blank=True)
    status = models.IntegerField(default=0, choices=SquadBattleServerSideHandlerWorkerStatus)
    is_done = models.BooleanField(default=False)
    last_run_time = models.DateTimeField(default=timezone.now)
    has_error = models.BooleanField(default=False)
    error_description = models.TextField(null=True, blank=True)
    end_time = models.DateTimeField(default=timezone.now)
    task_id = models.CharField(max_length=500, null=True, blank=True)


class AccountSquadBattleData(models.Model):
    create_time = models.DateTimeField(default=timezone.now)
    fifa_account = models.ForeignKey('accounts.FifaAccount', on_delete=models.CASCADE)
    event_id = models.IntegerField(default=0)
    score = models.IntegerField(default=0)
    user_tier_level = models.IntegerField(default=0)
    games_played = models.IntegerField(default=0)


class FifaAccountMomentsGame(models.Model):
    create_time = models.DateTimeField(default=timezone.now)
    fifa_account = models.ForeignKey('accounts.FifaAccount', on_delete=models.CASCADE)
    end_time = models.DateTimeField(null=True, blank=True)
    moment_number = models.IntegerField(default=0)
    win_status = models.BooleanField(default=False)
    need_fix_squad = models.BooleanField(default=False, null=True)  # todo : remove null True
