import datetime
import socket
import traceback

import ntplib
import requests
from dateutil.tz import gettz

from accounts.models import ConsoleBotSetting
from futplus.settings import TIME_ZONE

discharge_hour_start = ConsoleBotSetting.objects.get(
    name='discharge_hour_start').int_value
discharge_hour_end = ConsoleBotSetting.objects.get(
    name='discharge_hour_end').int_value


def allowed_discharge_time():
    from utils.realy_public_methods import get_db_time
    try:
        current_time = get_db_time(timezone_=TIME_ZONE)
        # ntp_client = ntplib.NTPClient()
        # ntp_response = ntp_client.request('uk.pool.ntp.org', version=3)
        # current_time = datetime.datetime.fromtimestamp(ntp_response.tx_time, datetime.timezone.utc).astimezone(
        #     gettz('Asia/Tehran'))
    except (ntplib.NTPException, socket.gaierror):
        print('error on get discharge time ', traceback.format_exc())
        current_time = datetime.datetime.fromisoformat(
            requests.get('http://142.132.177.244:8000/accounts/get-local-timezone/').json().get('local_timezone')
        )
    return discharge_hour_start <= current_time.hour < discharge_hour_end


# account_high_search_count, created = ConsoleBotSetting.objects.get_or_create(
#     name='account_high_search_count', defaults={'int_value': 150})
# lowest_account_run_in_console_hour, created = ConsoleBotSetting.objects.get_or_create(
#     name='lowest_account_run_in_console_hour', defaults={'int_value': 2})
# force_discharge_start_coin_greater, created = ConsoleBotSetting.objects.get_or_create(
#     name='force_discharge_start_coin_greater', defaults={'int_value': 12000})
# force_discharge_lowest_target_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='force_discharge_lowest_target_price', defaults={'int_value': 10000})
# discharge_start_coin_greater, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_start_coin_greater', defaults={'int_value': 120000})
# discharge_start_coin_lower, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_start_coin_lower', defaults={'int_value': 10000000})
# # discharge_lowest_target_price, created = ConsoleBotSetting.objects.get_or_create(
# #     name='discharge_lowest_target_price', defaults={'int_value': 100000})
# discharge_with_snipe_lowest_target_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_snipe_lowest_target_price', defaults={'int_value': 100000})
# # discharge_highest_target_price, created = ConsoleBotSetting.objects.get_or_create(
# #     name='discharge_highest_target_price', defaults={'int_value': 700000})
# discharge_with_snipe_highest_target_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_snipe_highest_target_price', defaults={'int_value': 700000})
# discharge_bad_players_asset_id = []
#
# discharge_with_snipe_start_coin_greater, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_snipe_start_coin_greater', defaults={'int_value': 200000})
# discharge_with_snipe_lowest_buy_now_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_snipe_lowest_buy_now_price', defaults={'int_value': 90000})
#
# discharge_with_snipe_card_max_allowed_tax, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_snipe_card_max_allowed_tax', defaults={'str_value': str(8.5)})
#
# discharge_with_mode2_lowest_target_buy_now_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode2_lowest_target_buy_now_price', defaults={'int_value': 10000})
# discharge_with_mode2_mydgn_lowest_target_buy_now_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode2_mydgn_lowest_target_buy_now_price', defaults={'int_value': 10000})
# discharge_with_mode2_u7buy_lowest_target_buy_now_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode2_u7buy_lowest_target_buy_now_price', defaults={'int_value': 10000})
# discharge_with_mode2_highest_tax, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode2_highest_tax', defaults={'int_value': 35})
#
# discharge_with_mode3_lowest_target_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode3_lowest_target_price', defaults={'int_value': 500000})
# discharge_with_mode3_highest_target_price, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode3_highest_target_price', defaults={'int_value': 1000000})
# discharge_with_mode3_card_max_allowed_tax, created = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_with_mode3_card_max_allowed_tax', defaults={'int_value': 33})
#
# discharge_mode2_interval_hours = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_mode2_interval_hours', defaults={'int_value': 18})
# discharge_mode3_interval_hours = ConsoleBotSetting.objects.get_or_create(
#     name='discharge_mode3_interval_hours', defaults={'int_value': 18})
#
# mules_discharge_mode3_interval_hours = ConsoleBotSetting.objects.get_or_create(
#     name='mules_discharge_mode3_interval_hours', defaults={'int_value': 72})
#
#
# # dont quick sell settings
# max_saved_quick_sell_in_club_bronze0_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_bronze0_tradable_items', defaults={'int_value': 100})
# max_saved_quick_sell_in_club_bronze1_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_bronze1_tradable_items', defaults={'int_value': 100})
# max_saved_quick_sell_in_club_silver0_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_silver0_tradable_items', defaults={'int_value': 100})
# max_saved_quick_sell_in_club_silver1_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_silver1_tradable_items', defaults={'int_value': 100})
# max_saved_quick_sell_in_club_gold0_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_gold0_tradable_items', defaults={'int_value': 100})
# max_saved_quick_sell_in_club_gold1_tradable_items = ConsoleBotSetting.objects.get_or_create(
#     name='max_saved_quick_sell_in_club_gold1_tradable_items', defaults={'int_value': 0})
#
#
# # sniper
# sniper_lowest_snipe_buy_now_price = ConsoleBotSetting.objects.get_or_create(
#     name='sniper_lowest_snipe_buy_now_price', defaults={'int_value': 20000})
# sniper_lowest_target_buy_now_price = ConsoleBotSetting.objects.get_or_create(
#     name='sniper_lowest_target_buy_now_price', defaults={'int_value': 50000})
# sniper_highest_target_buy_now_price = ConsoleBotSetting.objects.get_or_create(
#     name='sniper_highest_target_buy_now_price', defaults={'int_value': 60000})
