import time
import datetime

import requests
import threading
from flask import Flask, jsonify, request
import ar1_usdt_gen_wallet
import ar2_ballance
import ar3_send_money

app = Flask(__name__)

def whrite_new_client(user_id,address,pkey):
    API_KEY = 'API_KEY'
    url = "http://95.179.185.196/api/database/rows/table/393/1/?user_field_names=true"
    headers = {"Authorization": API_KEY,
            "Content-Type": "application/json"}
    json = {"userId": user_id,
          "balance": 0,
          "Active": True,
          "wallet_address": address,
          "priv_key": pkey,
          "createdAt": datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")}
    r = requests.patch(url, headers=headers, json=json)
    print(r)
    print(r.json())

def get_all_usdt(address, private_key):
    #1 - Перевести средства с технического кошелька на новый кошелек клиента TRX для активации
    teh_address = "1" ####################Тут технический кошелек с TRX
    teh_pkey = "1"  ######################Тут ключ от технического кошелька
    centre_address = '1' ################ Тут центральные кошелек USDT
    ar3_send_money.send_tron(teh_address, address, teh_pkey, 10)

    #2 - Проверить что на кошелек клиента упали TRX для активации.
    balance_tron_0 = ar2_ballance.get_balance_tronscan_tron(address)
    while True:
        balance_tron_1 = ar2_ballance.get_balance_tronscan_tron(address)
        if balance_tron_0 != balance_tron_1:
            break

    #3 - Получить баланс кошелька клиента в USDT
    balance_usdt = ar2_ballance.get_balance_tronscan_usdt(address)

    #4 - Отправить все средства с кошелька клиента на кошелек

    ar3_send_money.send_usdt(address, pkey, centre_address, balance_usdt)

@app.route('/')
def index():
    return 'Hello Man!'

@app.route('/generatewallet/<chat_id>', methods=['GET'])
def generatewallet(chat_id):
    if(request.method == 'GET'):
        #chat_id = chat_id
        address, private_key = ar1_usdt_gen_wallet.create_wallet()
        data = {"address": address,
                'private_key': private_key}
        #Зписать в базу данных chat_id, address, private_key
        whrite_new_client(chat_id, address, private_key)

        threading.Thread(target=get_all_usdt, args=(address, private_key,)).start()

        return jsonify(data)

@app.route('/getbalance/<address>')
def getbalance(address):
    if (request.method == 'GET'):
        balance = ar2_ballance.get_balance_tronscan_usdt(address)
        if balance >= 5:
            data = {'status': 'paid',
                    "balance": balance}



        elif 0 < balance < 5:
            data = {'status': 'part paid',
                    "balance": balance}
        else:
            data = {'status': 'unpaid',
                    "balance": balance}
        return jsonify(data)

# if __name__ == '__main__':
#     app.run(debug=True)

app.run(host='0.0.0.0', port=5678)
