# раскомментировать, когда перейдем на разные пароли
import hashlib
import threading
import time
from datetime import datetime

import requests

import config
# test
import jsonAndRequest as jsreq
from BotClass import JabberBot

global tasklist

botname = "st_request_new"

JID = botname + "@" + config.JSERVER
PORT = config.PORT

PASSWORD = hashlib.md5((botname + config.PASSWORD).encode('utf-8')).hexdigest()

# таким образом хранится список jid, от которых можно получать сообщения этому боту
listen_to = ["st_request_new@ej.sharix-app.org"]

# тут хранится список jid, кому бот может отправлять сообщения в результате обработки заявки
proceed_to = ["numbers"]

# максимальное значение попыток обработать заказ
idle_value = 10


# обработчик входящих сообщений
# def message_handler(conn, mess):
#     text = mess.getBody()#текст сообщения боту
#     user = mess.getFrom()#отправитель сообщения
#     if (str(user).split("/")[0]) in listen_to:
#         # print (str(user).split("/")[0])
#         if text is not None:
#             orderObj = jsreq.jsonToOrder(text)
#             tasklist.append(orderObj)
#             bot.bot_log(str(datetime.now())+" Поступивший заказ успешно добавлен в очередь обработки\n")


def status_new_process(ticket):
    tickets_new = jsreq.requestGetTicket(token, config.API_URL + f"tickets/api/ticket_list/{ticket.id}")
    for ticket_new in tickets_new:
        send_to_user(ticket_new)


def send_to_user(ticket_new):
    user = jsreq.requestGetListUser(token)
    print(user.json()[0]['id'])
    headers = {'Authorization': f'Token {token}'}
    url = config.API_URL + f"tickets/api/ticket_list/{ticket_new.id}"
    if ticket_new.assigned_to == None:
        ticket_new.assigned_to = user.json()[0]['id']
        user = 'test@ej.sharix-app.org'
        print({'id': ticket_new.id, 'assigned_to': ticket_new.assigned_to})
        response = requests.put(url, json={'id': ticket_new.id, 'assigned_to': ticket_new.assigned_to}, headers=headers)
        print(response)
        if response:
            bot.send_notification(user, ticket_new)


def status_new():
    while True:
        ticketlist = jsreq.requestGetList(token, config.API_URL + "tickets/api/ticket_list/")
        for ticket in ticketlist:
            bot.bot_log(
                botname + " " + datetime.now().strftime('%Y-%m-%d') + " " + "Тикет отправлен в очередь на обработку\n")
            t1 = threading.Thread(target=status_new_process, args=(ticket,))
            t1.start()
            t1.join()  # Ожидаем завершения обработки тикета
        time.sleep(300)  # Обновляем ticketlist каждые 5 минут


# Авторизация и запуск бота

# пустой список
ticketlist = []

token = jsreq.requestGetToken(config.API_URL + "api/v1/auth/token/login/")
# ticketlist=jsreq.requestGetList(token, config.API_URL+"/dbsynce/api/orders/") ###Должна быть проверка между двумя

# # print (len(tasklist))

bot = JabberBot(JID, PASSWORD, PORT)

bot.start(status_new)
