import os
import sys
import time

import django
from django.utils import timezone

sys.path.append('..')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'futplus.settings')
django.setup()

from accounts.models import FifaAccount, ConsoleBotSetting, CloseWebAppTransfers
from discharge import DischargeRunner
from sniper.models import DischargeMode2
from sbc.models import SBCWorker

account_user_name = input('enter user name and press Enter : ')
mode_input = input('mode2 or mode3, press 2 or 3 , and press Enter : ')
fifa_account = FifaAccount.objects.get(user_name=account_user_name)
print('discharge started : ', fifa_account.user_name)
sbc_worker = SBCWorker.objects.filter(
    fifa_account=fifa_account, running_platform='console'
).last()
sbc_worker.must_done = False
sbc_worker.has_error = False
sbc_worker.is_done = True
sbc_worker.save()
running_platform = 'console'
sbc_solver_item = DischargeRunner(
    sbc_worker.id, fifa_account.id, fifa_account.user_name,
    fifa_account.password, fifa_account.platform,
    False, running_platform=running_platform,
    use_public_moves=True)

discharge_mode2_interval_hours = ConsoleBotSetting.objects.get(
                            name='discharge_mode2_interval_hours').int_value
discharge_mode3_interval_hours = ConsoleBotSetting.objects.get(
    name='discharge_mode3_interval_hours').int_value
if not (DischargeMode2.objects.filter(
        fifa_account=fifa_account,
        create_time__gt=timezone.localtime() - timezone.timedelta(hours=discharge_mode2_interval_hours),
        status__in=['success', 'failed'],
).count() <= 0 and CloseWebAppTransfers.objects.filter(
        second_account=fifa_account, error=False, second_side_done=True,
        web_app_start_time__gt=timezone.localtime() - timezone.timedelta(hours=discharge_mode3_interval_hours)
).count() <= 0):
    print('this account already have discharge in interval , are you sure about this?')
    input('press Enter or close ide')

if mode_input == '2':
    sbc_solver_item.discharge_with_mode2(fifa_account.credit, coins_to=10000)
elif mode_input == '3':
    sbc_solver_item.discharge_with_mode3(fifa_account.credit, coins_to=10000)
else:
    print('mode input must be 2 or 3 , run file again.')
    time.sleep(30)
